a6b793d55ed5fedb1f7f95e9a0fbb2a33862b822
[vlc.git] / modules / gui / wxwidgets / dialogs / updatevlc.cpp
1 /*****************************************************************************
2  * updatevlc.cpp : VLC Update checker
3  *****************************************************************************
4  * Copyright (C) 2000-2004 the VideoLAN team
5  * $Id$
6  *
7  * Authors: Antoine Cellerier <dionoea@videolan.org>
8  *
9  * This program is free software; you can redistribute it and/or modify
10  * it under the terms of the GNU General Public License as published by
11  * the Free Software Foundation; either version 2 of the License, or
12  * (at your option) any later version.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software
21  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
22  *****************************************************************************/
23
24
25 /*****************************************************************************
26  * Preamble
27  *****************************************************************************/
28 #include "updatevlc.hpp"
29
30 #ifdef UPDATE_CHECK
31 #include <wx/imaglist.h>
32
33 #include "bitmaps/update_ascii.xpm"
34 #include "bitmaps/update_binary.xpm"
35 #include "bitmaps/update_document.xpm"
36 #include "bitmaps/update_info.xpm"
37 #include "bitmaps/update_source.xpm"
38
39 /*****************************************************************************
40  * Event Table.
41  *****************************************************************************/
42
43 /* IDs for the controls and the menu commands */
44 enum
45 {
46     Close_Event,
47     CheckForUpdate_Event,
48     ChooseItem_Event
49 };
50
51 BEGIN_EVENT_TABLE(UpdateVLC, wxFrame)
52     /* Button events */
53     EVT_BUTTON(wxID_OK, UpdateVLC::OnButtonClose)
54     EVT_BUTTON(CheckForUpdate_Event, UpdateVLC::OnCheckForUpdate)
55
56     /* Hide the window when the user closes the window */
57     EVT_CLOSE(UpdateVLC::OnClose)
58
59 END_EVENT_TABLE()
60
61 /*****************************************************************************
62  * Constructor.
63  *****************************************************************************/
64 UpdateVLC::UpdateVLC( intf_thread_t *_p_intf, wxWindow *p_parent ):
65     wxFrame( p_parent, -1, wxU(_("Updates")),
66              wxDefaultPosition, wxDefaultSize,
67              wxSYSTEM_MENU|wxCLOSE_BOX|wxFRAME_FLOAT_ON_PARENT
68              |wxFRAME_TOOL_WINDOW|wxCAPTION )
69 {
70     /* Initializations */
71     p_intf = _p_intf;
72     SetIcon( *p_intf->p_sys->p_icon );
73     SetAutoLayout( TRUE );
74
75     wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );
76     wxButton *update_button =
77         new wxButton( this, CheckForUpdate_Event,
78                       wxU(_("Check for updates")) );
79     main_sizer->Add( update_button );
80     SetSizerAndFit( main_sizer );
81
82     p_update = update_New( p_intf );
83 }
84
85
86 UpdateVLC::~UpdateVLC()
87 {
88     update_Delete( p_update );
89 }
90
91 void UpdateVLC::OnButtonClose( wxCommandEvent& event )
92 {
93     wxCloseEvent cevent;
94     OnClose(cevent);
95 }
96
97 void UpdateVLC::OnClose( wxCloseEvent& WXUNUSED(event) )
98 {
99     Hide();
100 }
101
102 void UpdateVLC::OnCheckForUpdate( wxCommandEvent& event )
103 {
104     update_Check( p_update, NULL, this );
105     wxBoxSizer *main_sizer = new wxBoxSizer( wxVERTICAL );
106
107     DestroyChildren();
108
109     /*list->InsertItem( list->GetItemCount(),
110                       wxU(p_uit->file.psz_description)+wxU("\n")
111                       + wxU(p_uit->release.psz_version)+wxU(" ")
112                       + wxU(psz_tmp),
113                       i_image );*/
114
115     if( update_CompareReleaseToCurrent( p_update ) == UpdateReleaseStatusNewer )
116         main_sizer->Add( new wxStaticText( this, -1, wxU( p_update->release.psz_desc )
117                          + wxU( "\nYou can download the latest version of VLC at the adress :\n" )
118                          + wxU( p_update->release.psz_url ) ) );
119     else
120         main_sizer->Add( new wxStaticText( this, -1,
121                          wxU( _( "\nYou have the latest version of VLC\n" ) ) ) );
122
123     SetSizerAndFit( main_sizer );
124     Layout();
125 }
126 #endif