batchdownloaddlg.cpp

00001 
00002 // Name:        batchdownloaddlg.cpp
00003 // Purpose:     wxPackageBatchDownloadDlg
00004 // Author:      Francesco Montorsi
00005 // Modified by:
00006 // Created:     15/07/2006 12:43:10
00007 // RCS-ID:      $Id: batchdownloaddlg.cpp,v 1.4 2007/01/31 13:00:54 frm Exp $
00008 // Copyright:   (c) 2006 Francesco Montorsi
00009 // Licence:     wxWidgets license
00011 
00012 
00013 // For compilers that support precompilation, includes "wx/wx.h".
00014 #include "wx/wxprec.h"
00015 
00016 #ifdef __BORLANDC__
00017 #pragma hdrstop
00018 #endif
00019 
00020 #ifndef WX_PRECOMP
00021 #include "wx/wx.h"
00022 #endif
00023 
00024 #include <wx/stdpaths.h>
00025 #include <wx/animate.h>
00026 
00027 #include "guipm/batchdownloaddlg.h"
00028 #include "wxp/package.h"
00029 
00030 
00031 
00032 // ----------------------------------------------------------------------------
00033 // wxPackageBatchDownloadDlg
00034 // ----------------------------------------------------------------------------
00035 
00036 IMPLEMENT_DYNAMIC_CLASS( wxPackageBatchDownloadDlg, wxDialog )
00037 BEGIN_EVENT_TABLE( wxPackageBatchDownloadDlg, wxDialog )
00038 END_EVENT_TABLE()
00039 
00040 
00041 wxPackageBatchDownloadDlg::wxPackageBatchDownloadDlg( )
00042 {
00043 }
00044 
00045 wxPackageBatchDownloadDlg::wxPackageBatchDownloadDlg( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
00046 {
00047     Create(parent, id, caption, pos, size, style);
00048 }
00049 
00050 bool wxPackageBatchDownloadDlg::Create( wxWindow* parent, wxWindowID id, const wxString& caption, const wxPoint& pos, const wxSize& size, long style )
00051 {
00053     m_pPackageList = NULL;
00054     m_pAnimation = NULL;
00055     m_pTotalSize = NULL;
00057 
00058     SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS);
00059     wxDialog::Create( parent, id, caption, pos, size, style );
00060 
00061     CreateControls();
00062     if (GetSizer())
00063     {
00064         GetSizer()->SetSizeHints(this);
00065     }
00066     CentreOnScreen();
00067     return true;
00068 }
00069 
00070 void wxPackageBatchDownloadDlg::CreateControls()
00071 {
00072     m_pDestination = new wxDirPickerCtrl(this, ID_BATCHDOWNLOAD_DESTINATION);
00073     m_pAnimation = new wxAnimationCtrl(this, ID_BATCHDOWNLOAD_ANIMATION);
00074 
00075     wxAnimation anim;
00076     wxString imgpath = wxStandardPaths::Get().GetDataDir() + 
00077                        wxFileName::GetPathSeparator() + 
00078                        wxT("images") + wxFileName::GetPathSeparator();
00079     if (anim.LoadFile(imgpath + wxT("internetfiletransfer.gif")))
00080     {
00081         m_pAnimation->SetAnimation(anim);    
00082         m_pAnimation->Play();
00083     }
00084 
00086     wxPackageBatchDownloadDlg* itemDialog1 = this;
00087 
00088     wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
00089     itemDialog1->SetSizer(itemBoxSizer2);
00090 
00091     wxStaticText* itemStaticText3 = new wxStaticText( itemDialog1, wxID_STATIC, _("Are you sure you want to queue the download of all the\nfollowing packages?"), wxDefaultPosition, wxDefaultSize, 0 );
00092     itemBoxSizer2->Add(itemStaticText3, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 10);
00093 
00094     wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
00095     itemBoxSizer2->Add(itemBoxSizer4, 0, wxGROW|wxALL, 5);
00096 
00097     wxString* m_pPackageListStrings = NULL;
00098     m_pPackageList = new wxListBox( itemDialog1, ID_BATCHDOWNLOAD_LIST, wxDefaultPosition, wxSize(150, 120), 0, m_pPackageListStrings, wxLB_SINGLE );
00099     itemBoxSizer4->Add(m_pPackageList, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxBOTTOM, 5);
00100 
00101     m_pAnimation = (wxAnimationCtrl*) FindWindow(ID_BATCHDOWNLOAD_ANIMATION);
00102     wxASSERT( m_pAnimation != NULL );
00103     itemBoxSizer4->Add(m_pAnimation, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
00104 
00105     wxBoxSizer* itemBoxSizer7 = new wxBoxSizer(wxHORIZONTAL);
00106     itemBoxSizer2->Add(itemBoxSizer7, 0, wxGROW|wxLEFT, 5);
00107 
00108     wxStaticText* itemStaticText8 = new wxStaticText( itemDialog1, wxID_STATIC, _("Approximate total download size:"), wxDefaultPosition, wxDefaultSize, 0 );
00109     itemBoxSizer7->Add(itemStaticText8, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
00110 
00111     m_pTotalSize = new wxStaticText( itemDialog1, ID_BATCHDOWNLOAD_SIZE, _("Static text"), wxDefaultPosition, wxDefaultSize, wxALIGN_CENTRE|wxST_NO_AUTORESIZE );
00112     m_pTotalSize->SetFont(wxFont(8, wxSWISS, wxNORMAL, wxBOLD, false, _T("Tahoma")));
00113     itemBoxSizer7->Add(m_pTotalSize, 0, wxGROW|wxALL, 5);
00114 
00115     wxStaticLine* itemStaticLine10 = new wxStaticLine( itemDialog1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
00116     itemBoxSizer2->Add(itemStaticLine10, 0, wxGROW|wxALL, 10);
00117 
00118     wxStaticText* itemStaticText11 = new wxStaticText( itemDialog1, wxID_STATIC, _("The downloaded packages will be placed at:"), wxDefaultPosition, wxDefaultSize, 0 );
00119     itemBoxSizer2->Add(itemStaticText11, 0, wxALIGN_LEFT|wxALL|wxADJUST_MINSIZE, 10);
00120 
00121     wxWindow* itemWindow12 = (wxWindow*) FindWindow(ID_BATCHDOWNLOAD_DESTINATION);
00122     wxASSERT( itemWindow12 != NULL );
00123     itemBoxSizer2->Add(itemWindow12, 0, wxGROW|wxLEFT|wxRIGHT|wxBOTTOM, 10);
00124 
00125     wxStaticLine* itemStaticLine13 = new wxStaticLine( itemDialog1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
00126     itemBoxSizer2->Add(itemStaticLine13, 0, wxGROW|wxALL, 10);
00127 
00128     wxStdDialogButtonSizer* itemStdDialogButtonSizer14 = new wxStdDialogButtonSizer;
00129 
00130     itemBoxSizer2->Add(itemStdDialogButtonSizer14, 0, wxALIGN_RIGHT|wxALL, 5);
00131     wxButton* itemButton15 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
00132     itemStdDialogButtonSizer14->AddButton(itemButton15);
00133 
00134     wxButton* itemButton16 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
00135     itemStdDialogButtonSizer14->AddButton(itemButton16);
00136 
00137     itemStdDialogButtonSizer14->Realize();
00138 
00140 }
00141 
00142 void wxPackageBatchDownloadDlg::SetPackages(const wxPackageArray &arr)
00143 {
00144     wxULongLong n, size=0;
00145     bool na = false;
00146 
00147     m_pPackageList->Clear();
00148     for (size_t i=0; i<arr.GetCount(); i++)
00149     {
00150         n = arr[i].GetCompressedSize();
00151         size += n;
00152 
00153         // build the string to append to the package list
00154         wxString str = arr[i].GetName();
00155         if (n > 0)
00156             str += wxT(" (") + wxFileName::GetHumanReadableSize(n) + wxT(")");
00157         else
00158         {
00159             str += wxT(" (size not available)");
00160             na = true;      // there's at least a package of unknown size!
00161         }
00162         m_pPackageList->Append(str);
00163     }
00164 
00165     if (size > 0)
00166     {
00167         m_pTotalSize->SetLabel(wxFileName::GetHumanReadableSize(size));
00168         if (na) m_pTotalSize->SetLabel(wxT("> ") + m_pTotalSize->GetLabel());
00169     }
00170     else
00171         m_pTotalSize->SetLabel(wxT("Not available"));
00172 }
00173 

Generated on Thu Feb 1 22:14:30 2007 for wxWidgets Package Manager by  doxygen 1.5.1-p1