Main Page | Class Hierarchy | Class List | Directories | File List | Class Members | File Members | Related Pages

webupdatedlg.h

Go to the documentation of this file.
00001 
00002 // Name:        webupdatedlg.h
00003 // Purpose:     wxWebUpdateDlg, wxWebUpdateAdvPanel, wxWebUpdateAboutDlg
00004 // Author:      Francesco Montorsi
00005 // Created:     2005/06/28
00006 // RCS-ID:      $Id: webupdatedlg.h,v 1.46 2005/11/05 11:46:31 frm Exp $
00007 // Copyright:   (c) 2005 Francesco Montorsi
00008 // Licence:     wxWidgets licence
00010 
00011 
00012 #ifndef _WX_WEBUPDATEDLG_H_
00013 #define _WX_WEBUPDATEDLG_H_
00014 
00015 // wxWidgets headers
00016 #include "wx/webupdate.h"
00017 #include "wx/download.h"
00018 #include "wx/webupdatectrl.h"
00019 #include "wx/installer.h"
00020 #include <wx/dialog.h>
00021 #include <wx/panel.h>
00022 #include <wx/checkbox.h>
00023 #include <wx/textctrl.h>
00024 
00025 // defined later
00026 class wxStaticText;
00027 class wxButton;
00028 class wxTextCtrl;
00029 class wxGauge;
00030 
00031 
00033 #define wxWUD_TIMETEXT_PREFIX                   wxT("Time remaining: ")
00034 
00036 #define wxWUD_SPEEDTEXT_PREFIX                  wxT("Status: ")
00037 
00039 #define wxWUD_OK_DEFAULT_LABEL                  wxT("Download")
00040 #define wxWUD_OK_INSTALL                                wxT("Install")
00041 
00043 #define wxWUD_CANCEL_DEFAULT_LABEL              wxT("Cancel")
00044 #define wxWUD_CANCEL_DOWNLOAD                   wxT("Stop download")
00045 #define wxWUD_CANCEL_INSTALLATION               wxT("Stop installation")
00046 
00048 #define wxWUD_SHOWHIDEADV_SHOW                  wxT("Show advanced settings >>")
00049 #define wxWUD_SHOWHIDEADV_HIDE                  wxT("Hide advanced settings <<")
00050 
00051 
00053 #define wxWUD_GAUGE_RANGE                               1000
00054 
00056 #define wxWUAD_PREFIX                                   wxT("This is WebUpdater version ")
00057 #define wxWUAD_POSTFIX                                  wxT("\nby Francesco Montorsi (c) 2005")
00058 
00059 
00061 #define wxWUD_XMLSCRIPT_ID                              wxT("XMLSCRIPT")
00062 
00063 
00064 
00071 #define wxWU_XRCCTRL(window, id, type) \
00072     (wxDynamicCast((window).FindWindow(XRCID(id)), type))               // note the dynamic cast vs static cast
00073 
00074 
00075 
00085 enum wxWebUpdateDlgStatus {
00086 
00089         wxWUDS_WAITINGXML = 1,  
00090 
00092         wxWUDS_DOWNLOADINGXML = 2,
00093         
00096         wxWUDS_WAITING = 4,
00097         
00100         wxWUDS_DOWNLOADING = 8,
00101         
00105         wxWUDS_INSTALLING = 16,
00106         
00107         // when the wxWUDS_INSTALLING phase has been completed, then the
00108         // dialog will automatically exit if all packages are up2date;
00109         // otherwise it will return to the wxWUDS_WAITING status.
00110         wxWUDS_EXITING = 32
00111 };
00112 
00113 
00114 
00119 /*class wxWebUpdateExtraOptions
00120 {
00121 public:
00122 
00125         bool m_bRestart;
00126         
00129         bool m_bSaveLog;
00130         
00132         wxString m_strRes;
00133 
00134 public:
00135         wxWebUpdateExtraOptions() { m_bRestart=m_bSaveLog=FALSE; }
00136         virtual ~wxWebUpdateExtraOptions() {}
00137 };*/
00138 
00139 
00142 class WXDLLIMPEXP_WEBUPDATE wxWebUpdateAdvPanel : public wxPanel 
00143 {
00144 protected:              // pointers to our controls
00145         
00146         wxTextCtrl *m_pDownloadPathTextCtrl;
00147         wxCheckBox *m_pRemoveFiles, *m_pRestart, *m_pSaveLog;
00148 
00149 #if wxUSE_HTTPENGINE
00150         wxProxySettings m_proxy;
00151         wxHTTPAuthSettings m_auth;
00152 #endif
00153 
00155         wxWebUpdateLocalXMLScript *m_xmlLocal;
00156 
00157 protected:
00158 
00160         bool InitWidgetsFromXRC(wxWindow *parent);
00161 
00162 protected:              // event handlers
00163 
00164         void OnBrowse(wxCommandEvent &);
00165         void OnProxySettings(wxCommandEvent &);
00166         void OnAuthSettings(wxCommandEvent &);
00167         void OnRestart(wxCommandEvent &);
00168         void OnSaveLog(wxCommandEvent &);
00169         
00170 public:
00171 
00173         wxWebUpdateAdvPanel::wxWebUpdateAdvPanel()
00174                         : m_xmlLocal(NULL) {}
00175 
00177         wxWebUpdateAdvPanel::wxWebUpdateAdvPanel(wxWindow* parent)
00178                         : m_xmlLocal(NULL)
00179                 { Create(parent); }
00180 
00182         bool Create(wxWindow* parent);
00183 
00184 
00185         virtual ~wxWebUpdateAdvPanel() {}
00186 
00187 
00188 public:         // setters
00189 
00190         void SetData(wxWebUpdateLocalXMLScript *script);
00191 
00192 public:         // getters
00193 
00194 #if wxUSE_HTTPENGINE
00195 
00196         wxProxySettings GetProxySettings() const
00197                 { return m_proxy; }
00198 
00200         wxHTTPAuthSettings GetHTTPAuthSettings() const
00201                 { return m_auth; }
00202 #endif
00203 
00206         wxString GetDownloadPath() const
00207                 { return m_pDownloadPathTextCtrl->GetValue(); } 
00208 
00210         bool RemoveFiles() const
00211                 { if (m_pRemoveFiles) return m_pRemoveFiles->GetValue(); return TRUE; }
00212 
00215         bool Restart() const
00216                 { if (m_pRestart) return m_pRestart->GetValue(); return TRUE; }
00217 
00218 
00219 private:
00220         DECLARE_CLASS(wxWebUpdateAdvPanel)
00221         DECLARE_EVENT_TABLE()
00222 };
00223 
00224 
00225 
00227 class WXDLLIMPEXP_WEBUPDATE wxWebUpdateAdvPanelXmlHandler : public wxXmlResourceHandler
00228 {
00229         DECLARE_DYNAMIC_CLASS(wxWebUpdateAdvPanelXmlHandler)
00230 
00231 public:
00232     wxWebUpdateAdvPanelXmlHandler();
00233     virtual wxObject *DoCreateResource();
00234     virtual bool CanHandle(wxXmlNode *node);
00235 };
00236 
00237 
00239 class WXDLLIMPEXP_WEBUPDATE wxWebUpdateAboutDlg : public wxDialog 
00240 {
00241 protected:
00242 
00244         bool InitWidgetsFromXRC(wxWindow *parent);
00245 
00246 public:
00247         wxWebUpdateAboutDlg::wxWebUpdateAboutDlg(wxWindow *parent)
00248                 { InitWidgetsFromXRC(parent); }
00249         virtual ~wxWebUpdateAboutDlg() {}
00250 
00251 private:
00252         DECLARE_CLASS(wxWebUpdateAboutDlg)
00253         DECLARE_EVENT_TABLE()
00254 };
00255 
00256 
00262 class WXDLLIMPEXP_WEBUPDATE wxWebUpdateDlg : public wxDialog 
00263 {
00264 protected:              // pointers to our controls
00265         
00266         wxStaticText *m_pAppNameText, *m_pTimeText, *m_pSpeedText;
00267         wxButton *m_pOkBtn, *m_pCancelBtn, *m_pShowHideAdvBtn;
00268         wxGauge *m_pGauge;
00269         wxTextCtrl *m_pDescription, *m_pLog;
00270         wxCheckBox *m_pShowOnlyOOD;
00271 
00272     // used to check if inside wxWebUpdateDlg everything went good
00273     bool m_ok;
00274 
00275         // our listctrl
00276         wxWebUpdateListCtrl *m_pUpdatesList;
00277 
00278         // we store advanced settings here:
00279         wxWebUpdateAdvPanel *m_pAdvPanel;       
00280 
00289         int m_nDownloadCount;
00290 
00294         int m_nInstallCount;
00295         
00296 protected:              // XML scripts
00297 
00300         wxWebUpdateXMLScript m_xmlRemote;
00301         
00303         wxWebUpdateLocalXMLScript m_xmlLocal;
00304         
00305 protected:              // remote-related stuff
00306 
00308         wxDownloadThread *m_dThread;
00309 
00311         wxWebUpdateInstallThread *m_iThread;
00312         
00315         wxWebUpdatePackage *m_current;
00316 
00317 protected:              // wxWebUpdateDlg-internals
00318 
00321         bool m_bUserAborted;
00322 
00326         wxWebUpdateDlgStatus m_nStatus;
00327 
00328 protected:              // init helpers
00329 
00331         bool InitWidgetsFromXRC(wxWindow *parent);
00332 
00334         bool InitThreads();
00335 
00336 protected:              // utilities
00337 
00340         wxWindow *ShowHideChild(const wxString &name);
00341         
00344         wxString GetOutputFilenameFor(const wxWebUpdatePackage &p);
00345 
00346 protected:              // pseudo event handlers
00347 
00349         void OnScriptDownload(const wxString &xmluri);
00350 
00354         bool DownloadNextPackage();
00355         
00359         bool InstallNextPackage();
00360 
00363         bool CheckForAllUpdated(wxWebUpdatePackageArray &arr, bool forcedefaultmsg = FALSE);
00364 
00369     bool FilterOtherPlatforms(wxWebUpdatePackageArray &arr);
00370         
00373         void RemoveCurrentPackage();
00374 
00375 protected:              // event handlers
00376 
00377         void OnDownload(wxCommandEvent &);
00378         void OnCancel(wxCommandEvent &);
00379         void OnAbout(wxCommandEvent &);
00380         void OnShowFilter(wxCommandEvent &);    
00381         void OnShowHideAdv(wxCommandEvent &);   
00382         void OnUpdateUI(wxUpdateUIEvent &);
00383         void OnTextURL(wxTextUrlEvent &);
00384         void OnSize(wxSizeEvent &);
00385 
00386         // for event raised by our wxDownloadThread....
00387         void OnDownloadComplete(wxCommandEvent &);
00388 
00389         // for event raised by our wxWebUpdateInstallThread...
00390         void OnInstallationComplete(wxCommandEvent &);
00391 
00392 public:
00393 
00395         wxWebUpdateDlg::wxWebUpdateDlg() { PreInit(); }
00396 
00404         wxWebUpdateDlg::wxWebUpdateDlg(
00405                                                 wxWindow *parent, 
00406                                                 const wxWebUpdateLocalXMLScript &script);
00407 
00409         void PreInit();
00410 
00412         bool Create(wxWindow *parent, 
00413                                 const wxWebUpdateLocalXMLScript &script);
00414 
00416     bool IsOk() const
00417         { return m_ok; }
00418 
00419         virtual ~wxWebUpdateDlg() 
00420                 { if (m_dThread) delete m_dThread;
00421                         if (m_iThread) delete m_iThread;}
00422 
00423 
00424 public:         // main functions
00425 
00428         bool ConnectionRequired();
00429 
00432         void AbortDialog();
00433 
00435         wxWebUpdatePackageArray &GetRemotePackages()
00436                 { return m_pUpdatesList->GetRemotePackages(); }
00437 
00439         wxWebUpdateLocalPackageArray &GetLocalPackages()
00440                 { return m_pUpdatesList->GetLocalPackages(); }
00441         
00445         void SetLocalScript(const wxWebUpdateLocalXMLScript &script)
00446                 { m_xmlLocal = script; }
00447                 
00449         wxString GetAppName() const
00450                 { return m_xmlLocal.GetAppName(); }
00451                 
00453         bool IsAppToRestart() const
00454                 { return m_xmlLocal.IsAppToRestart(); }
00455 
00457         wxWebUpdateListCtrlFilter GetPackageFilter() const;
00458         
00459 private:
00460         DECLARE_CLASS(wxWebUpdateDlg)
00461         DECLARE_EVENT_TABLE()
00462 };
00463 
00464 
00465 #endif // _WX_WEBUPDATEDLG_H_
00466 

Generated on Sat Nov 12 20:09:00 2005 for WebUpdate by  doxygen 1.4.4