00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "DownloaderProperties_MirrorsPage.h"
00009 #include "DownloadsWnd.h"
00010 #include "vmsDialogHelper.h"
00011
00012 extern CDownloadsWnd* _pwndDownloads;
00013
00014 #ifdef _DEBUG
00015 #define new DEBUG_NEW
00016 #undef THIS_FILE
00017 static char THIS_FILE[] = __FILE__;
00018 #endif
00019
00020 IMPLEMENT_DYNCREATE(CDownloaderProperties_MirrorsPage, CPropertyPage)
00021
00022 CDownloaderProperties_MirrorsPage::CDownloaderProperties_MirrorsPage() : CPropertyPage(CDownloaderProperties_MirrorsPage::IDD)
00023 {
00024 m_psp.dwFlags |= PSP_USETITLE;
00025 m_psp.pszTitle = LS (L_MIRRORS);
00026 }
00027
00028 CDownloaderProperties_MirrorsPage::~CDownloaderProperties_MirrorsPage()
00029 {
00030 }
00031
00032 void CDownloaderProperties_MirrorsPage::DoDataExchange(CDataExchange* pDX)
00033 {
00034 CPropertyPage::DoDataExchange(pDX);
00035
00036 DDX_Control(pDX, IDC_MIRRSERVERS, m_wndMirrServers);
00037 DDX_Control(pDX, IDC_FILEMINSIZEDIM, m_wndMinSizeDim);
00038
00039 }
00040
00041 BEGIN_MESSAGE_MAP(CDownloaderProperties_MirrorsPage, CPropertyPage)
00042
00043 ON_WM_CONTEXTMENU()
00044 ON_WM_HELPINFO()
00045 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00046 ON_BN_CLICKED(IDC_AUTO, OnAuto)
00047 ON_BN_CLICKED(IDC_MAXMIRRORS, OnMaxmirrors)
00048 ON_EN_CHANGE(IDC_MAXMIRRORSVAL, OnChangeMaxmirrorsval)
00049 ON_BN_CLICKED(IDC_CALCSPEED, OnCalcspeed)
00050 ON_BN_CLICKED(IDC_RECALCSPEED, OnRecalcspeed)
00051 ON_EN_CHANGE(IDC_RECALCVAL, OnChangeRecalcval)
00052 ON_EN_CHANGE(IDC_FILEMINSIZE, OnChangeFileminsize)
00053 ON_CBN_SELCHANGE(IDC_FILEMINSIZEDIM, OnSelchangeFileminsizedim)
00054 ON_CBN_SELCHANGE(IDC_MIRRSERVERS, OnSelchangeMirrservers)
00055
00056 END_MESSAGE_MAP()
00057
00058 BOOL CDownloaderProperties_MirrorsPage::OnInitDialog()
00059 {
00060 CPropertyPage::OnInitDialog();
00061
00062 UINT anIDs [] = {
00063 IDC_MAXMIRRORSSPIN, IDC_RECALCSPIN
00064 };
00065
00066 for (int i = 0; i < sizeof (anIDs) / sizeof (UINT); i++)
00067 {
00068 CSpinButtonCtrl *p = (CSpinButtonCtrl*) GetDlgItem (anIDs [i]);
00069 p->SetRange (1, UD_MAXVAL);
00070 }
00071
00072 m_wndMinSizeDim.AddString (LS (L_B));
00073 m_wndMinSizeDim.AddString (LS (L_KB));
00074 m_wndMinSizeDim.AddString (LS (L_MB));
00075
00076 CheckDlgButton (IDC_AUTO, _App.Mirr_AutoSearch () ? BST_CHECKED : BST_UNCHECKED);
00077 if (_App.Mirr_MaxCount () != UINT_MAX)
00078 {
00079 CheckDlgButton (IDC_MAXMIRRORS, BST_CHECKED);
00080 SetDlgItemInt (IDC_MAXMIRRORSVAL, _App.Mirr_MaxCount (), FALSE);
00081 }
00082 else
00083 SetDlgItemInt (IDC_MAXMIRRORSVAL, 10, FALSE);
00084
00085 CheckDlgButton (IDC_CALCSPEED, _App.Mirr_CalcSpeed () ? BST_CHECKED : BST_UNCHECKED);
00086
00087 if (_App.Mirr_RecalcSpeedTime ())
00088 {
00089 CheckDlgButton (IDC_RECALCSPEED, BST_CHECKED);
00090 SetDlgItemInt (IDC_RECALCVAL, _App.Mirr_RecalcSpeedTime (), FALSE);
00091 }
00092 else
00093 SetDlgItemInt (IDC_RECALCVAL, 60, FALSE);
00094
00095 vmsDialogHelper::SetDlgBytesGroup (this, _App.Mirr_FileMinSize (), IDC_FILEMINSIZE, IDC_FILEMINSIZEDIM);
00096
00097 CheckDlgButton (IDC_DONTIFSIZEUNK, _App.Mirr_DontSearchIfSizeUnk () ? BST_CHECKED : BST_UNCHECKED);
00098
00099 m_wndMirrServers.AddString ("FileSearching.com");
00100 m_wndMirrServers.AddString ("FindFiles.com");
00101 m_wndMirrServers.AddString ("download.huihoo.com");
00102 m_wndMirrServers.SetCurSel (_App.Mirr_Server ());
00103
00104 ApplyLanguage ();
00105 UpdateEnabled ();
00106
00107 return TRUE;
00108 }
00109
00110 void CDownloaderProperties_MirrorsPage::OnContextMenu(CWnd* , CPoint point)
00111 {
00112 PrepareCHMgr (point);
00113 _CHMgr.ShowMenu ();
00114 }
00115
00116 BOOL CDownloaderProperties_MirrorsPage::OnHelpInfo(HELPINFO* pHelpInfo)
00117 {
00118 RECT rc;
00119 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00120 if (pItem == NULL)
00121 return TRUE;
00122 pItem->GetWindowRect (&rc);
00123 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00124 {
00125 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00126 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00127 }
00128 PrepareCHMgr (pHelpInfo->MousePos);
00129 _CHMgr.OnWT ();
00130 return TRUE;
00131 }
00132
00133 void CDownloaderProperties_MirrorsPage::ApplyLanguage()
00134 {
00135 fsDlgLngInfo lnginfo [] = {
00136 fsDlgLngInfo (IDC_AUTO, L_MIRR_AUTOSEARCH),
00137 fsDlgLngInfo (IDC_MAXMIRRORS, L_MIRR_MAXNUMBER),
00138 fsDlgLngInfo (IDC_CALCSPEED, L_MIRR_CALCSPEED),
00139 fsDlgLngInfo (IDC_RECALCSPEED, L_MIRR_RECALCSPEEDEACH),
00140 fsDlgLngInfo (IDC__MIN, L_MIN),
00141 fsDlgLngInfo (IDC__DONTSEARCH, L_MIRR_DONTSEARCH),
00142 fsDlgLngInfo (IDC_DONTIFSIZEUNK, L_MIRR_DONTIFSIZEUNK),
00143 fsDlgLngInfo (IDC__MIRRSERVER, L_MIRRSERVER),
00144 };
00145
00146 _LngMgr.ApplyLanguage ( this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), 0);
00147 }
00148
00149 void CDownloaderProperties_MirrorsPage::PrepareCHMgr(CPoint point)
00150 {
00151 fsCtrlContextHelp aCH1 [] = {
00152 fsCtrlContextHelp (IDC_AUTO, LS (L_MIRR_AUTOHERE)),
00153 fsCtrlContextHelp (IDC_MAXMIRRORS, LS (L_MIRR_MAXMIRRORSHERE)),
00154 fsCtrlContextHelp (IDC_MAXMIRRORSVAL, LS (L_MIRR_MAXMIRRORSHERE)),
00155 fsCtrlContextHelp (IDC_CALCSPEED, LS (L_MIRR_CALCSPEEDHERE)),
00156 fsCtrlContextHelp (IDC_RECALCSPEED, LS (L_MIRR_RECALCSPEEDHERE)),
00157 fsCtrlContextHelp (IDC_RECALCVAL, LS (L_MIRR_RECALCSPEEDHERE)),
00158 fsCtrlContextHelp (IDC__DONTSEARCH, LS (L_MIRR_DONTSEARCHHERE)),
00159 fsCtrlContextHelp (IDC_FILEMINSIZE, LS (L_MIRR_DONTSEARCHHERE)),
00160 fsCtrlContextHelp (IDC_FILEMINSIZEDIM, LS (L_DIMHERE)),
00161 };
00162
00163 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00164 CopyMemory (aCH, aCH1, sizeof (aCH));
00165
00166 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00167 }
00168
00169 void CDownloaderProperties_MirrorsPage::OnWhatisthis()
00170 {
00171 _CHMgr.OnWT ();
00172 }
00173
00174 void CDownloaderProperties_MirrorsPage::UpdateEnabled()
00175 {
00176 BOOL b = IsDlgButtonChecked (IDC_AUTO);
00177 GetDlgItem (IDC__DONTSEARCH)->EnableWindow (b);
00178 GetDlgItem (IDC_FILEMINSIZE)->EnableWindow (b);
00179 GetDlgItem (IDC_FILEMINSIZEDIM)->EnableWindow (b);
00180 GetDlgItem (IDC_DONTIFSIZEUNK)->EnableWindow (b);
00181
00182 b = IsDlgButtonChecked (IDC_CALCSPEED) == BST_CHECKED;
00183 GetDlgItem (IDC_RECALCSPEED)->EnableWindow (b);
00184 b = b && IsDlgButtonChecked (IDC_RECALCSPEED) == BST_CHECKED;
00185 GetDlgItem (IDC_RECALCVAL)->EnableWindow (b);
00186 GetDlgItem (IDC_RECALCSPIN)->EnableWindow (b);
00187 GetDlgItem (IDC__MIN)->EnableWindow (b);
00188
00189 b = IsDlgButtonChecked (IDC_MAXMIRRORS) == BST_CHECKED;
00190 GetDlgItem (IDC_MAXMIRRORSVAL)->EnableWindow (b);
00191 GetDlgItem (IDC_MAXMIRRORSSPIN)->EnableWindow (b);
00192 }
00193
00194 void CDownloaderProperties_MirrorsPage::OnAuto()
00195 {
00196 UpdateEnabled ();
00197 SetModified ();
00198 }
00199
00200 void CDownloaderProperties_MirrorsPage::OnMaxmirrors()
00201 {
00202 UpdateEnabled ();
00203 SetModified ();
00204 }
00205
00206 void CDownloaderProperties_MirrorsPage::OnChangeMaxmirrorsval()
00207 {
00208 SetModified ();
00209 }
00210
00211 void CDownloaderProperties_MirrorsPage::OnCalcspeed()
00212 {
00213 UpdateEnabled ();
00214 SetModified ();
00215 }
00216
00217 void CDownloaderProperties_MirrorsPage::OnRecalcspeed()
00218 {
00219 UpdateEnabled ();
00220 SetModified ();
00221 }
00222
00223 void CDownloaderProperties_MirrorsPage::OnChangeRecalcval()
00224 {
00225 SetModified ();
00226 }
00227
00228 BOOL CDownloaderProperties_MirrorsPage::OnApply()
00229 {
00230 UINT nID;
00231 BOOL b;
00232
00233 UINT u;
00234 UINT64 u64;
00235 if (vmsDialogHelper::GetDlgBytesGroup (this, IDC_FILEMINSIZE, IDC_FILEMINSIZEDIM, &u64) == FALSE)
00236 return FALSE;
00237 u = (UINT)u64;
00238
00239 if (u < 100*1024)
00240 u = 100*1024;
00241
00242 _App.Mirr_FileMinSize (u);
00243
00244 _App.Mirr_AutoSearch (IsDlgButtonChecked (IDC_AUTO) == BST_CHECKED);
00245
00246 if (IsDlgButtonChecked (IDC_MAXMIRRORS) == BST_CHECKED)
00247 {
00248 UINT u;
00249 u = GetDlgItemInt (IDC_MAXMIRRORSVAL);
00250 if (u == 0)
00251 {
00252 nID = IDC_MAXMIRRORSVAL;
00253 goto _lInpErr;
00254 }
00255 _App.Mirr_MaxCount (u);
00256 }
00257 else
00258 _App.Mirr_MaxCount (UINT_MAX);
00259
00260 b = IsDlgButtonChecked (IDC_CALCSPEED) == BST_CHECKED;
00261 _App.Mirr_CalcSpeed (b);
00262 if (b)
00263 {
00264 if (IsDlgButtonChecked (IDC_RECALCSPEED) == BST_CHECKED)
00265 {
00266 UINT u;
00267 u = GetDlgItemInt (IDC_RECALCVAL);
00268 if (u == 0)
00269 {
00270 nID = IDC_RECALCVAL;
00271 goto _lInpErr;
00272 }
00273 _App.Mirr_RecalcSpeedTime (u);
00274 }
00275 else
00276 _App.Mirr_RecalcSpeedTime (0);
00277 }
00278
00279 _App.Mirr_DontSearchIfSizeUnk (IsDlgButtonChecked (IDC_DONTIFSIZEUNK) == BST_CHECKED);
00280 _App.Mirr_Server (m_wndMirrServers.GetCurSel ());
00281
00282 _DldsMgr.ReadMirrParameters ();
00283 _DldsMgr.Apply_MirrParameters ();
00284
00285 return CPropertyPage::OnApply();
00286
00287 _lInpErr:
00288 CString str;
00289 str.Format (LS (L_ENTERGREATER), 0);
00290 MessageBox (str, LS (L_INPERR), MB_ICONEXCLAMATION);
00291 CEdit *pE = (CEdit*) GetDlgItem (nID);
00292 pE->SetSel (0, -1);
00293 pE->SetFocus ();
00294 return FALSE;
00295 }
00296
00297 void CDownloaderProperties_MirrorsPage::OnChangeFileminsize()
00298 {
00299 SetModified ();
00300 }
00301
00302 void CDownloaderProperties_MirrorsPage::OnSelchangeFileminsizedim()
00303 {
00304 SetModified ();
00305 }
00306
00307 void CDownloaderProperties_MirrorsPage::OnSelchangeMirrservers()
00308 {
00309 SetModified ();
00310 }