00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012
00013
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
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
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;
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