00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "DownloadProperties_ConnectionPage.h"
00009 #include "DownloadProperties.h"
00010 #include "misc.h"
00011 #include "DownloadsWnd.h"
00012 #include "fsDownloadMgr.h"
00013 #include "vmsDialogHelper.h"
00014
00015 #ifdef _DEBUG
00016 #define new DEBUG_NEW
00017 #undef THIS_FILE
00018 static char THIS_FILE[] = __FILE__;
00019 #endif
00020
00021 IMPLEMENT_DYNCREATE(CDownloadProperties_ConnectionPage, CPropertyPage)
00022
00023 CDownloadProperties_ConnectionPage::CDownloadProperties_ConnectionPage() : CPropertyPage(CDownloadProperties_ConnectionPage::IDD)
00024 {
00025 m_psp.dwFlags |= PSP_USETITLE;
00026 m_psp.pszTitle = LS (L_CONNECTION);
00027 }
00028
00029 CDownloadProperties_ConnectionPage::~CDownloadProperties_ConnectionPage()
00030 {
00031 }
00032
00033 void CDownloadProperties_ConnectionPage::DoDataExchange(CDataExchange* pDX)
00034 {
00035 CPropertyPage::DoDataExchange(pDX);
00036
00037
00038
00039 }
00040
00041 BEGIN_MESSAGE_MAP(CDownloadProperties_ConnectionPage, CPropertyPage)
00042
00043 ON_BN_CLICKED(IDC_LIMITTRAFFIC, OnLimittraffic)
00044 ON_BN_CLICKED(IDC_IGNOREALLRESTRICTIONS, OnIgnoreallrestrictions)
00045 ON_EN_CHANGE(IDC_PAUSEBETWEEN, OnChangePausebetween)
00046 ON_EN_CHANGE(IDC_MAXATTEMPTS, OnChangeMaxattempts)
00047 ON_EN_CHANGE(IDC_TIMEOUT, OnChangeTimeout)
00048 ON_EN_CHANGE(IDC_SECTMINSIZE, OnChangeSectminsize)
00049 ON_EN_CHANGE(IDC_SECTMAXCOUNT, OnChangeSectmaxcount)
00050 ON_EN_CHANGE(IDC_TRAFFICLIMITVAL, OnChangeTrafficlimitval)
00051 ON_CBN_EDITCHANGE(IDC_TRAFFICLIMITDIM, OnEditchangeTrafficlimitdim)
00052 ON_CBN_SELCHANGE(IDC_TRAFFICLIMITDIM, OnSelchangeTrafficlimitdim)
00053 ON_CBN_SELCHANGE(IDC_SECTMINSIZEDIM, OnSelchangeSectminsizedim)
00054 ON_BN_CLICKED(IDC_USEMAXATTEMPTS, OnUsemaxattempts)
00055 ON_WM_CONTEXTMENU()
00056 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00057 ON_WM_HELPINFO()
00058 ON_BN_CLICKED(IDC_RESTARTIFSPEEDLOW, OnRestartifspeedlow)
00059 ON_EN_CHANGE(IDC_LOWSPEED_DURATION, OnChangeLowspeedDuration)
00060
00061 END_MESSAGE_MAP()
00062
00063 #define DP_OFFSET(member) ( LPBYTE (&dp.member) - LPBYTE (&dp) )
00064
00065 #define DP_SIZEOF(member) ( sizeof (dp.member) )
00066
00067 #define DP_EQ(member, bString) DPEntry_IsAllEqual (m_pvDlds, DP_OFFSET (member), DP_SIZEOF (member), bString)
00068
00069 #define DP_SET(member, bString, NewVal) DPEntry_SetValue (m_pvDlds, DP_OFFSET (member), DP_SIZEOF (member), bString, NewVal)
00070
00071 #define DNP_OFFSET(member) ( LPBYTE (&dnp.member) - LPBYTE (&dnp) )
00072 #define DNP_SIZEOF(member) ( sizeof (dnp.member) )
00073 #define DNP_EQ(member, bString) DNPEntry_IsAllEqual (m_pvDlds, DNP_OFFSET (member), DNP_SIZEOF (member), bString)
00074 #define DNP_EQ_MASK(member, mask) DNPEntry_IsAllEqual_BitMask (m_pvDlds, DNP_OFFSET (member), mask)
00075 #define DNP_SET(member, bString, NewVal) DNPEntry_SetValue (m_pvDlds, DNP_OFFSET (member), DNP_SIZEOF (member), bString, NewVal)
00076 #define DNP_SET_MASK(member, mask) DNPEntry_SetValue_BitMask (m_pvDlds, DNP_OFFSET (member), mask)
00077 #define DNP_UNSET_MASK(member, mask) DNPEntry_UnsetValue_BitMask (m_pvDlds, DNP_OFFSET (member), mask)
00078
00079 BOOL CDownloadProperties_ConnectionPage::OnInitDialog()
00080 {
00081 CPropertyPage::OnInitDialog();
00082
00083 fsDownload_Properties dp;
00084 fsDownload_Properties* dp0 = m_pvDlds->at (0)->pMgr->GetDownloadMgr ()->GetDP ();
00085
00086
00087 UINT pID [] = {
00088 IDC_PAUSEBETWEENSPIN, IDC_MAXATTEMPTSSPIN, IDC_SECTMAXCOUNTSPIN,
00089 IDC_LOWSPEED_DURATIONSPIN,
00090 };
00091
00092 CSpinButtonCtrl *pSpin;
00093
00094 for (int i = 0; i < sizeof (pID) / sizeof (UINT); i++)
00095 {
00096 pSpin = (CSpinButtonCtrl*) GetDlgItem (pID [i]);
00097 pSpin->SetRange (1, UD_MAXVAL);
00098 }
00099
00100 pSpin = (CSpinButtonCtrl*) GetDlgItem (IDC_TIMEOUTSPIN);
00101 pSpin->SetRange (10, UD_MAXVAL);
00102
00103 CComboBox *pBox = (CComboBox*) GetDlgItem (IDC_SECTMINSIZEDIM);
00104 pBox->AddString (LS (L_B)); pBox->AddString (LS (L_KB)); pBox->AddString (LS (L_MB));
00105
00106 pBox = (CComboBox*) GetDlgItem (IDC_TRAFFICLIMITDIM);
00107 CString str;
00108
00109 str.Format ("%s/%s", LS (L_B), LS (L_S)); pBox->AddString (str);
00110 str.Format ("%s/%s", LS (L_KB), LS (L_S)); pBox->AddString (str);
00111 str.Format ("%s/%s", LS (L_MB), LS (L_S)); pBox->AddString (str);
00112
00113 if (DP_EQ (uRetriesTime, FALSE))
00114
00115 SetDlgItemInt (IDC_PAUSEBETWEEN, dp0->uRetriesTime / 1000, FALSE);
00116 else
00117 SetDlgItemText (IDC_PAUSEBETWEEN, "");
00118
00119 if (DP_EQ (uMaxAttempts, FALSE))
00120 {
00121 if (dp0->uMaxAttempts != UINT_MAX)
00122 SetDlgItemInt (IDC_MAXATTEMPTS, dp0->uMaxAttempts, FALSE);
00123 else
00124 SetDlgItemInt (IDC_MAXATTEMPTS, 1, FALSE);
00125
00126 CheckDlgButton (IDC_USEMAXATTEMPTS, dp0->uMaxAttempts != UINT_MAX ? BST_CHECKED : BST_UNCHECKED);
00127 }
00128 else
00129 {
00130 BOOL bUse = dp0->uMaxAttempts != UINT_MAX;
00131 for (int i = m_pvDlds->size () - 1; i; i--)
00132 {
00133 BOOL bU = m_pvDlds->at (i)->pMgr->GetDownloadMgr ()->GetDP ()->uMaxAttempts != UINT_MAX;
00134 if (bU != bUse)
00135 break;
00136 }
00137
00138 if (i)
00139 CheckDlgButton (IDC_USEMAXATTEMPTS, BST_INDETERMINATE);
00140 else
00141 CheckDlgButton (IDC_USEMAXATTEMPTS, bUse ? BST_CHECKED : BST_UNCHECKED);
00142
00143 SetDlgItemText (IDC_MAXATTEMPTS, "");
00144 }
00145
00146 if (DP_EQ (uTimeout, FALSE))
00147 SetDlgItemInt (IDC_TIMEOUT, dp0->uTimeout / 1000, FALSE);
00148 else
00149 SetDlgItemText (IDC_TIMEOUT, "");
00150
00151 if (DP_EQ (uSectionMinSize, FALSE))
00152 vmsDialogHelper::SetDlgBytesGroup (this, dp0->uSectionMinSize, IDC_SECTMINSIZE, IDC_SECTMINSIZEDIM);
00153 else
00154 ((CComboBox*) GetDlgItem (IDC_SECTMINSIZEDIM))->SetCurSel (0);
00155
00156 if (DP_EQ (uMaxSections, FALSE))
00157 SetDlgItemInt (IDC_SECTMAXCOUNT, dp0->uMaxSections, FALSE);
00158 else
00159 SetDlgItemText (IDC_SECTMAXCOUNT, "");
00160
00161 BOOL bLimit = dp0->uTrafficRestriction != UINT_MAX;
00162 CheckDlgButton (IDC_LIMITTRAFFIC, bLimit ? BST_CHECKED : BST_UNCHECKED);
00163 for (i = m_pvDlds->size () - 1; i; i--)
00164 {
00165 BOOL bLim = m_pvDlds->at (i)->pMgr->GetDownloadMgr ()->GetDP ()->uTrafficRestriction != UINT_MAX;
00166 if (bLim != bLimit)
00167 {
00168 CheckDlgButton (IDC_LIMITTRAFFIC, BST_INDETERMINATE);
00169 break;
00170 }
00171 }
00172
00173 ((CComboBox*) GetDlgItem (IDC_TRAFFICLIMITDIM))->SetCurSel (0);
00174 if (DP_EQ (uTrafficRestriction, FALSE))
00175 {
00176 if (dp0->uTrafficRestriction != UINT_MAX)
00177 vmsDialogHelper::SetDlgBytesGroup (this, dp0->uTrafficRestriction, IDC_TRAFFICLIMITVAL, IDC_TRAFFICLIMITDIM);
00178 }
00179
00180 if (DP_EQ (bIgnoreRestrictions, FALSE))
00181 CheckDlgButton (IDC_IGNOREALLRESTRICTIONS, dp0->bIgnoreRestrictions ? BST_CHECKED : BST_UNCHECKED);
00182 else
00183 CheckDlgButton (IDC_IGNOREALLRESTRICTIONS, BST_INDETERMINATE);
00184
00185 fsDownload_NetworkProperties dnp;
00186 fsDownload_NetworkProperties* dnp0 = m_pvDlds->at (0)->pMgr->GetDownloadMgr ()->GetDNP ();
00187
00188 if (DNP_EQ_MASK (dwFlags, DNPF_RESTARTSECTIONWHENSPEEDTOOLOW))
00189 CheckDlgButton (IDC_RESTARTIFSPEEDLOW, dnp0->dwFlags & DNPF_RESTARTSECTIONWHENSPEEDTOOLOW ? BST_CHECKED : BST_UNCHECKED);
00190 else
00191 CheckDlgButton (IDC_RESTARTIFSPEEDLOW, BST_INDETERMINATE);
00192
00193 if (DNP_EQ (wLowSpeed_Duration, FALSE))
00194 SetDlgItemInt (IDC_LOWSPEED_DURATION, dnp0->wLowSpeed_Duration, FALSE);
00195 else
00196 SetDlgItemText (IDC_LOWSPEED_DURATION, "");
00197
00198 UpdateEnabled ();
00199
00200 ApplyLanguage ();
00201
00202 return TRUE;
00203 }
00204
00205 void CDownloadProperties_ConnectionPage::UpdateEnabled()
00206 {
00207 BOOL bLimitTraffic = IsDlgButtonChecked (IDC_LIMITTRAFFIC) == BST_CHECKED;
00208 BOOL bIgnoreAll = IsDlgButtonChecked (IDC_IGNOREALLRESTRICTIONS) == BST_CHECKED;
00209
00210 GetDlgItem (IDC_TRAFFICLIMITVAL)->EnableWindow (bLimitTraffic && bIgnoreAll == FALSE);
00211 GetDlgItem (IDC_TRAFFICLIMITDIM)->EnableWindow (bLimitTraffic && bIgnoreAll == FALSE);
00212 GetDlgItem (IDC_LIMITTRAFFIC)->EnableWindow (bIgnoreAll == FALSE);
00213
00214 BOOL b = IsDlgButtonChecked (IDC_USEMAXATTEMPTS) == BST_CHECKED;
00215 GetDlgItem (IDC_MAXATTEMPTS)->EnableWindow (b);
00216 GetDlgItem (IDC_MAXATTEMPTSSPIN)->EnableWindow (b);
00217
00218 b = IsDlgButtonChecked (IDC_RESTARTIFSPEEDLOW) == BST_CHECKED;
00219 GetDlgItem (IDC_LOWSPEED_DURATION)->EnableWindow (b);
00220 GetDlgItem (IDC_LOWSPEED_DURATIONSPIN)->EnableWindow (b);
00221 }
00222
00223 void CDownloadProperties_ConnectionPage::OnLimittraffic()
00224 {
00225 if (IsDlgButtonChecked (IDC_LIMITTRAFFIC) == BST_INDETERMINATE)
00226 CheckDlgButton (IDC_LIMITTRAFFIC, BST_UNCHECKED);
00227
00228 UpdateEnabled ();
00229 SetModified ();
00230 }
00231
00232 void CDownloadProperties_ConnectionPage::OnIgnoreallrestrictions()
00233 {
00234
00235 if (IsDlgButtonChecked (IDC_IGNOREALLRESTRICTIONS) == BST_INDETERMINATE)
00236 CheckDlgButton (IDC_IGNOREALLRESTRICTIONS, BST_UNCHECKED);
00237
00238 UpdateEnabled ();
00239 SetModified ();
00240 }
00241
00242 void CDownloadProperties_ConnectionPage::OnChangePausebetween()
00243 {
00244 SetModified ();
00245 }
00246
00247 void CDownloadProperties_ConnectionPage::OnChangeMaxattempts()
00248 {
00249 SetModified ();
00250 }
00251
00252 void CDownloadProperties_ConnectionPage::OnChangeTimeout()
00253 {
00254 SetModified ();
00255 }
00256
00257 void CDownloadProperties_ConnectionPage::OnChangeSectminsize()
00258 {
00259 SetModified ();
00260 }
00261
00262 void CDownloadProperties_ConnectionPage::OnChangeSectmaxcount()
00263 {
00264 SetModified ();
00265 }
00266
00267 void CDownloadProperties_ConnectionPage::OnChangeTrafficlimitval()
00268 {
00269 SetModified ();
00270 }
00271
00272 void CDownloadProperties_ConnectionPage::OnEditchangeTrafficlimitdim()
00273 {
00274 SetModified ();
00275 }
00276
00277 void CDownloadProperties_ConnectionPage::OnSelchangeTrafficlimitdim()
00278 {
00279 SetModified ();
00280 }
00281
00282 void CDownloadProperties_ConnectionPage::OnSelchangeSectminsizedim()
00283 {
00284 SetModified ();
00285 }
00286
00287 BOOL CDownloadProperties_ConnectionPage::OnApply()
00288 {
00289
00290 #define CHECK_RANGE(id, min) if (val < min) { ErrMustBeGreaterThan (id, min); return FALSE; }
00291
00292 #define SET_VAL_EX(id, min, Value, Mul) GetDlgItemText (id, str); if (str.GetLength ()) { int val = atoi (str); CHECK_RANGE (id, min); val*= Mul; DP_SET (Value, FALSE, &val); }
00293 #define SET_VAL(id, min, Value) SET_VAL_EX (id, min, Value, 1)
00294
00295 CString str;
00296 UINT uVal;
00297 fsDownload_Properties dp;
00298
00299 SET_VAL_EX (IDC_PAUSEBETWEEN, 1, uRetriesTime, 1000);
00300 SET_VAL_EX (IDC_TIMEOUT, 10, uTimeout, 1000);
00301
00302 UINT nCheck = IsDlgButtonChecked (IDC_USEMAXATTEMPTS);
00303 if (nCheck == BST_CHECKED)
00304 {
00305 SET_VAL (IDC_MAXATTEMPTS, 1, uMaxAttempts);
00306 }
00307 else if (nCheck == BST_UNCHECKED)
00308 {
00309 UINT val = UINT_MAX;
00310 DP_SET (uMaxAttempts, FALSE, &val);
00311 }
00312
00313 UINT64 u;
00314 if (vmsDialogHelper::GetDlgBytesGroup (this, IDC_SECTMINSIZE, IDC_SECTMINSIZEDIM, &u))
00315 {
00316 uVal = (UINT)u;
00317 DP_SET (uSectionMinSize, FALSE, &uVal);
00318 }
00319 else if (GetLastError () == ERROR_INVALID_DATA)
00320 return FALSE;
00321
00322 SET_VAL (IDC_SECTMAXCOUNT, 1, uMaxSections);
00323
00324 nCheck = IsDlgButtonChecked (IDC_LIMITTRAFFIC);
00325 if (nCheck == BST_UNCHECKED)
00326 {
00327 uVal = UINT_MAX;
00328 DP_SET (uTrafficRestriction, FALSE, &uVal);
00329 }
00330 else
00331 {
00332 UINT64 u;
00333 if (vmsDialogHelper::GetDlgBytesGroup (this, IDC_TRAFFICLIMITVAL, IDC_TRAFFICLIMITDIM, &u))
00334 {
00335 uVal = (UINT)u;
00336 DP_SET (uTrafficRestriction, FALSE, &uVal);
00337 }
00338 else if (GetLastError () == ERROR_INVALID_DATA)
00339 return FALSE;
00340 }
00341
00342 nCheck = IsDlgButtonChecked (IDC_IGNOREALLRESTRICTIONS);
00343 if (nCheck != BST_INDETERMINATE)
00344 {
00345 BOOL bIgnore = nCheck == BST_CHECKED;
00346 DP_SET (bIgnoreRestrictions, FALSE, &bIgnore);
00347 }
00348
00349 fsDownload_NetworkProperties dnp;
00350
00351
00352 nCheck = IsDlgButtonChecked (IDC_RESTARTIFSPEEDLOW);
00353 if (nCheck == BST_CHECKED)
00354 {
00355 DNP_SET_MASK (dwFlags, DNPF_RESTARTSECTIONWHENSPEEDTOOLOW);
00356 WORD w = (WORD)GetDlgItemInt (IDC_LOWSPEED_DURATION, NULL, FALSE);
00357 if (w)
00358 DNP_SET (wLowSpeed_Duration, FALSE, &w);
00359 }
00360 else if (nCheck == BST_UNCHECKED)
00361 {
00362 DNP_UNSET_MASK (dwFlags, DNPF_RESTARTSECTIONWHENSPEEDTOOLOW);
00363 }
00364
00365 for (int i = m_pvDlds->size () - 1; i >= 0; i--)
00366 {
00367 if (m_pvDlds->at (i)->pMgr->IsRunning ())
00368 m_pvDlds->at (i)->pMgr->GetDownloadMgr ()->ApplyProperties ();
00369 }
00370
00371 return CPropertyPage::OnApply();
00372 }
00373
00374 void CDownloadProperties_ConnectionPage::ErrMustBeGreaterThan(UINT nID, UINT uMin)
00375 {
00376 CString str;
00377
00378 str.Format (LS (L_ENTERGREATER), uMin);
00379 MessageBox (str, LS (L_INPERR), MB_ICONEXCLAMATION);
00380
00381 CEdit *pEdit = (CEdit*) GetDlgItem (nID);
00382 pEdit->SetSel (0, -1);
00383 pEdit->SetFocus ();
00384 }
00385
00386 void CDownloadProperties_ConnectionPage::OnUsemaxattempts()
00387 {
00388 if (IsDlgButtonChecked (IDC_USEMAXATTEMPTS) == BST_INDETERMINATE)
00389 CheckDlgButton (IDC_USEMAXATTEMPTS, BST_UNCHECKED);
00390
00391 UpdateEnabled ();
00392 SetModified ();
00393 }
00394
00395 void CDownloadProperties_ConnectionPage::OnContextMenu(CWnd* , CPoint point)
00396 {
00397 PrepareCHMgr (point);
00398 _CHMgr.ShowMenu ();
00399 }
00400
00401 void CDownloadProperties_ConnectionPage::OnWhatisthis()
00402 {
00403 _CHMgr.OnWT ();
00404 }
00405
00406 void CDownloadProperties_ConnectionPage::ApplyLanguage()
00407 {
00408 fsDlgLngInfo lnginfo [] = {
00409 fsDlgLngInfo (IDC__NETWORK, L_NETWORK),
00410 fsDlgLngInfo (IDC__ERRORS, L_ERRS),
00411 fsDlgLngInfo (IDC__PAUSEBETWEEN, L_PAUSEBETWEEN),
00412 fsDlgLngInfo (IDC_USEMAXATTEMPTS, L_MAXATTEMPTS),
00413 fsDlgLngInfo (IDC__TIMEOUT, L_TIMEOUTINSEC),
00414 fsDlgLngInfo (IDC__SECTIONS, L_SECTIONS),
00415 fsDlgLngInfo (IDC__SECTMINSIZE, L_MINSIZE),
00416 fsDlgLngInfo (IDC__SECTMAXCOUNT, L_MAXCOUNT),
00417 fsDlgLngInfo (IDC__NETUSAGERESTR, L_NETUSAGERESTR),
00418 fsDlgLngInfo (IDC_LIMITTRAFFIC, L_LIMITTRAFF),
00419 fsDlgLngInfo (IDC_IGNOREALLRESTRICTIONS, L_IGNOREALLRESTR),
00420 fsDlgLngInfo (IDC_RESTARTIFSPEEDLOW, L_RESTARTATLOWSPEED),
00421 };
00422
00423 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), 0);
00424 }
00425
00426 BOOL CDownloadProperties_ConnectionPage::OnHelpInfo(HELPINFO* pHelpInfo)
00427 {
00428 RECT rc;
00429 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00430 if (pItem == NULL)
00431 return TRUE;
00432 pItem->GetWindowRect (&rc);
00433 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00434 {
00435 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00436 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00437 }
00438 PrepareCHMgr (pHelpInfo->MousePos);
00439 _CHMgr.OnWT ();
00440 return TRUE;
00441 }
00442
00443 void CDownloadProperties_ConnectionPage::PrepareCHMgr(CPoint point)
00444 {
00445 fsCtrlContextHelp aCH1 [] = {
00446 fsCtrlContextHelp (IDC__PAUSEBETWEEN, LS (L_PAUSEBETWEENHERE)),
00447 fsCtrlContextHelp (IDC_PAUSEBETWEEN, LS (L_PAUSEBETWEENHERE)),
00448 fsCtrlContextHelp (IDC_USEMAXATTEMPTS, LS (L_MAXATTEMPTSHERE)),
00449 fsCtrlContextHelp (IDC__TIMEOUT, LS (L_TIMEOUTHERE)),
00450 fsCtrlContextHelp (IDC_TIMEOUT, LS (L_TIMEOUTHERE)),
00451 fsCtrlContextHelp (IDC__SECTMINSIZE, LS (L_MINSECTSIZEHERE)),
00452 fsCtrlContextHelp (IDC_SECTMINSIZE, LS (L_MINSECTSIZEHERE)),
00453 fsCtrlContextHelp (IDC__SECTMAXCOUNT, LS (L_MAXSECTHERE)),
00454 fsCtrlContextHelp (IDC_SECTMAXCOUNT, LS (L_MAXSECTHERE)),
00455 fsCtrlContextHelp (IDC_LIMITTRAFFIC, LS (L_TRAFFLIMITHERE)),
00456 fsCtrlContextHelp (IDC_IGNOREALLRESTRICTIONS, LS (L_IGNOREALLHERE)),
00457 fsCtrlContextHelp (IDC_SECTMINSIZEDIM, LS (L_DIMHERE)),
00458 fsCtrlContextHelp (IDC_TRAFFICLIMITDIM, LS (L_DIMHERE)),
00459 fsCtrlContextHelp (IDC_RESTARTIFSPEEDLOW, LS (L_RESTARTATLOWSPEED_HERE)),
00460 fsCtrlContextHelp (IDC_LOWSPEED_DURATION, LS (L_RESTARTATLOWSPEED_HERE)),
00461 };
00462
00463 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00464 CopyMemory (aCH, aCH1, sizeof (aCH));
00465
00466 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00467 }
00468
00469 void CDownloadProperties_ConnectionPage::OnRestartifspeedlow()
00470 {
00471 if (IsDlgButtonChecked (IDC_RESTARTIFSPEEDLOW) == BST_INDETERMINATE)
00472 CheckDlgButton (IDC_RESTARTIFSPEEDLOW, BST_UNCHECKED);
00473
00474 SetModified ();
00475 UpdateEnabled ();
00476 }
00477
00478 void CDownloadProperties_ConnectionPage::OnChangeLowspeedDuration()
00479 {
00480 SetModified ();
00481 }