00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "DownloaderProperties_NetworkPage.h"
00009 #include "vmsDialogHelper.h"
00010
00011 #ifdef _DEBUG
00012 #define new DEBUG_NEW
00013 #undef THIS_FILE
00014 static char THIS_FILE[] = __FILE__;
00015 #endif
00016
00017 IMPLEMENT_DYNCREATE(CDownloaderProperties_NetworkPage, CPropertyPage)
00018
00019 CDownloaderProperties_NetworkPage::CDownloaderProperties_NetworkPage() : CPropertyPage(CDownloaderProperties_NetworkPage::IDD)
00020 {
00021 m_psp.dwFlags |= PSP_USETITLE;
00022 m_psp.pszTitle = LS (L_NETWORK);
00023 m_bIModifing = FALSE;
00024 }
00025
00026 CDownloaderProperties_NetworkPage::~CDownloaderProperties_NetworkPage()
00027 {
00028 }
00029
00030 void CDownloaderProperties_NetworkPage::DoDataExchange(CDataExchange* pDX)
00031 {
00032 CPropertyPage::DoDataExchange(pDX);
00033
00034 DDX_Control(pDX, IDC_TRAFFICLIMITDIMENSION, m_wndTLD);
00035 DDX_Control(pDX, IDC_MODE, m_wndMode);
00036
00037 }
00038
00039 BEGIN_MESSAGE_MAP(CDownloaderProperties_NetworkPage, CPropertyPage)
00040
00041 ON_BN_CLICKED(IDC_USEMAXCONNS, OnUsemaxconns)
00042 ON_EN_CHANGE(IDC_MAXCONNS, OnChangeMaxconns)
00043 ON_BN_CLICKED(IDC_USEMAXCONNSPERSERVER, OnUsemaxconnsperserver)
00044 ON_EN_CHANGE(IDC_MAXCONNSPERSERVER, OnChangeMaxconnsperserver)
00045 ON_EN_CHANGE(IDC_TRAFFICLIMITVAL, OnChangeTrafficlimitval)
00046 ON_CBN_SELCHANGE(IDC_TRAFFICLIMITDIMENSION, OnSelchangeTrafficlimitdimension)
00047 ON_CBN_SELCHANGE(IDC_MODE, OnSelchangeMode)
00048 ON_WM_CONTEXTMENU()
00049 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00050 ON_BN_CLICKED(IDC_DETECTACTIVITY, OnDetectactivity)
00051 ON_BN_CLICKED(IDC_DECBYLEVEL, OnDecbylevel)
00052 ON_BN_CLICKED(IDC_SETTOLIGHT, OnSettolight)
00053 ON_WM_HELPINFO()
00054 ON_EN_CHANGE(IDC_MAXDLDSVAL, OnChangeMaxdldsval)
00055 ON_BN_CLICKED(IDC_USEMAXDLDS, OnUsemaxdlds)
00056
00057 END_MESSAGE_MAP()
00058
00059 BOOL CDownloaderProperties_NetworkPage::OnInitDialog()
00060 {
00061 CPropertyPage::OnInitDialog();
00062
00063 m_wndMode.AddString (LS (L_LIGHT));
00064 m_wndMode.AddString (LS (L_MEDIUM));
00065 m_wndMode.AddString (LS (L_HEAVY));
00066 m_wndMode.SetCurSel (2);
00067 m_iCurMode = 2;
00068
00069 CString str;
00070
00071 str.Format ("%s/%s", LS (L_B), LS (L_S)); m_wndTLD.AddString (str);
00072 str.Format ("%s/%s", LS (L_KB), LS (L_S)); m_wndTLD.AddString (str);
00073 str.Format ("%s/%s", LS (L_MB), LS (L_S)); m_wndTLD.AddString (str);
00074
00075 CSpinButtonCtrl *pSpin = (CSpinButtonCtrl*) GetDlgItem (IDC_MAXCONNSSPIN);
00076 pSpin->SetRange (1, UD_MAXVAL);
00077 pSpin = (CSpinButtonCtrl*) GetDlgItem (IDC_MAXCONNSPERSERVERSPIN);
00078 pSpin->SetRange (1, UD_MAXVAL);
00079 pSpin = (CSpinButtonCtrl*) GetDlgItem (IDC_MAXDLDSSPIN);
00080 pSpin->SetRange (1, UD_MAXVAL);
00081
00082 CopyMemory (m_aTUM, _DldsMgr.GetTUMs (), sizeof (m_aTUM));
00083
00084 WriteTUS ();
00085
00086 if (_DldsMgr.GetTUMManage () == TM_OFF)
00087 CheckRadioButton (IDC_DECBYLEVEL, IDC_SETTOLIGHT, IDC_DECBYLEVEL);
00088 else
00089 {
00090 CheckDlgButton (IDC_DETECTACTIVITY, BST_CHECKED);
00091 if (_DldsMgr.GetTUMManage () == TM_DECREASEBYONELEVEL)
00092 CheckRadioButton (IDC_DECBYLEVEL, IDC_SETTOLIGHT, IDC_DECBYLEVEL);
00093 else
00094 CheckRadioButton (IDC_DECBYLEVEL, IDC_SETTOLIGHT, IDC_SETTOLIGHT);
00095 }
00096
00097 UpdateEnabled ();
00098
00099 ApplyLanguage ();
00100
00101 return TRUE;
00102 }
00103
00104 BOOL CDownloaderProperties_NetworkPage::ReadTUS()
00105 {
00106 fsTrafficUsageMode tum;
00107 UINT nID;
00108 bool bMaxPSErr = false;
00109
00110 if (IsDlgButtonChecked (IDC_USEMAXCONNS) == BST_CHECKED)
00111 {
00112 tum.uMaxConns = GetDlgItemInt (IDC_MAXCONNS, NULL, FALSE);
00113 if (tum.uMaxConns == 0)
00114 {
00115 nID = IDC_MAXCONNS;
00116 goto _lErr;
00117 }
00118 }
00119 else
00120 tum.uMaxConns = UINT_MAX;
00121
00122 if (IsDlgButtonChecked (IDC_USEMAXCONNSPERSERVER) == BST_CHECKED)
00123 {
00124 tum.uMaxConnsPS = GetDlgItemInt (IDC_MAXCONNSPERSERVER, NULL, FALSE);
00125 if (tum.uMaxConnsPS == 0)
00126 {
00127 nID = IDC_MAXCONNSPERSERVER;
00128 goto _lErr;
00129 }
00130 if (tum.uMaxConnsPS > MAX_NOT_COMPLETED_SECTION_COUNT)
00131 {
00132 bMaxPSErr = true;
00133 nID = IDC_MAXCONNSPERSERVER;
00134 goto _lErr;
00135 }
00136 }
00137 else
00138 tum.uMaxConnsPS = UINT_MAX;
00139
00140 if (IsDlgButtonChecked (IDC_USEMAXDLDS) == BST_CHECKED)
00141 {
00142 tum.uMaxDlds = GetDlgItemInt (IDC_MAXDLDSVAL, NULL, FALSE);
00143 if (tum.uMaxDlds == 0)
00144 {
00145 nID = IDC_MAXDLDSVAL;
00146 goto _lErr;
00147 }
00148 }
00149 else
00150 tum.uMaxDlds = UINT_MAX;
00151
00152 if (m_iCurMode != TUM_HEAVY)
00153 {
00154 UINT64 u;
00155 vmsDialogHelper::GetDlgBytesGroup (this, IDC_TRAFFICLIMITVAL, IDC_TRAFFICLIMITDIMENSION, &u);
00156 tum.uTrafficLimit = (UINT)u;
00157 if (tum.uTrafficLimit == 0)
00158 {
00159 nID = IDC_TRAFFICLIMITVAL;
00160 goto _lErr;
00161 }
00162 }
00163
00164 m_aTUM [m_iCurMode] = tum;
00165
00166 return TRUE;
00167
00168 _lErr:
00169 CString str;
00170 if (bMaxPSErr)
00171 str.Format (LS (L_ENTERLESS), MAX_NOT_COMPLETED_SECTION_COUNT);
00172 else
00173 str.Format (LS (L_ENTERGREATER), 0);
00174 MessageBox (str, LS (L_INPERR), MB_ICONEXCLAMATION);
00175 CEdit *pE = (CEdit*) GetDlgItem (nID);
00176 pE->SetSel (0, -1);
00177 pE->SetFocus ();
00178 return FALSE;
00179 }
00180
00181 void CDownloaderProperties_NetworkPage::WriteTUS()
00182 {
00183 m_bIModifing = TRUE;
00184
00185 fsTrafficUsageMode tum = m_aTUM [m_iCurMode];
00186
00187 if (tum.uMaxConns != UINT_MAX)
00188 SetDlgItemInt (IDC_MAXCONNS, tum.uMaxConns);
00189
00190 CheckDlgButton (IDC_USEMAXCONNS, tum.uMaxConns == UINT_MAX ? BST_UNCHECKED : BST_CHECKED);
00191
00192 if (tum.uMaxConnsPS != UINT_MAX)
00193 SetDlgItemInt (IDC_MAXCONNSPERSERVER, tum.uMaxConnsPS);
00194
00195 CheckDlgButton (IDC_USEMAXCONNSPERSERVER, tum.uMaxConnsPS == UINT_MAX ? BST_UNCHECKED : BST_CHECKED);
00196
00197 if (tum.uMaxDlds != UINT_MAX)
00198 SetDlgItemInt (IDC_MAXDLDSVAL, tum.uMaxDlds);
00199
00200 CheckDlgButton (IDC_USEMAXDLDS, tum.uMaxDlds == UINT_MAX ? BST_UNCHECKED : BST_CHECKED);
00201
00202 if (m_iCurMode != TUM_HEAVY)
00203 vmsDialogHelper::SetDlgBytesGroup (this, tum.uTrafficLimit, IDC_TRAFFICLIMITVAL, IDC_TRAFFICLIMITDIMENSION);
00204 else
00205 {
00206 SetDlgItemText (IDC_TRAFFICLIMITVAL, LS (L_UNLIMITED));
00207 }
00208
00209 UpdateEnabled ();
00210
00211 m_bIModifing = FALSE;
00212 }
00213
00214 void CDownloaderProperties_NetworkPage::UpdateEnabled()
00215 {
00216 BOOL b;
00217
00218 b = IsDlgButtonChecked (IDC_USEMAXCONNS) == BST_CHECKED;
00219 GetDlgItem (IDC_MAXCONNS)->EnableWindow (b);
00220 GetDlgItem (IDC_MAXCONNSSPIN)->EnableWindow (b);
00221
00222 b = IsDlgButtonChecked (IDC_USEMAXCONNSPERSERVER) == BST_CHECKED;
00223 GetDlgItem (IDC_MAXCONNSPERSERVER)->EnableWindow (b);
00224 GetDlgItem (IDC_MAXCONNSPERSERVERSPIN)->EnableWindow (b);
00225
00226 b = IsDlgButtonChecked (IDC_USEMAXDLDS) == BST_CHECKED;
00227 GetDlgItem (IDC_MAXDLDSVAL)->EnableWindow (b);
00228 GetDlgItem (IDC_MAXDLDSSPIN)->EnableWindow (b);
00229
00230 b = m_iCurMode != TUM_HEAVY;
00231 GetDlgItem (IDC__TUR)->EnableWindow (b);
00232 GetDlgItem (IDC_TRAFFICLIMITVAL)->EnableWindow (b);
00233 GetDlgItem (IDC_TRAFFICLIMITDIMENSION)->EnableWindow (b);
00234
00235 b = IsDlgButtonChecked (IDC_DETECTACTIVITY) == BST_CHECKED;
00236 GetDlgItem (IDC_DECBYLEVEL)->EnableWindow (b);
00237 GetDlgItem (IDC_SETTOLIGHT)->EnableWindow (b);
00238 }
00239
00240 void CDownloaderProperties_NetworkPage::OnUsemaxconns()
00241 {
00242 UpdateEnabled ();
00243 if (m_bIModifing == FALSE) SetModified ();
00244 }
00245
00246 void CDownloaderProperties_NetworkPage::OnChangeMaxconns()
00247 {
00248 if (m_bIModifing == FALSE) SetModified ();
00249 }
00250
00251 void CDownloaderProperties_NetworkPage::OnUsemaxconnsperserver()
00252 {
00253 UpdateEnabled ();
00254 if (m_bIModifing == FALSE) SetModified ();
00255 }
00256
00257 void CDownloaderProperties_NetworkPage::OnChangeMaxconnsperserver()
00258 {
00259 if (m_bIModifing == FALSE) SetModified ();
00260 }
00261
00262 void CDownloaderProperties_NetworkPage::OnChangeTrafficlimitval()
00263 {
00264 if (m_bIModifing == FALSE) SetModified ();
00265 }
00266
00267 void CDownloaderProperties_NetworkPage::OnSelchangeTrafficlimitdimension()
00268 {
00269 if (m_bIModifing == FALSE) SetModified ();
00270 }
00271
00272 BOOL CDownloaderProperties_NetworkPage::OnApply()
00273 {
00274 if (FALSE == ReadTUS ())
00275 return FALSE;
00276
00277 CopyMemory (_DldsMgr.GetTUMs (), m_aTUM, sizeof (m_aTUM));
00278
00279
00280 if (IsDlgButtonChecked (IDC_DETECTACTIVITY) == BST_CHECKED)
00281 {
00282 if (IsDlgButtonChecked (IDC_DECBYLEVEL) == BST_CHECKED)
00283 _DldsMgr.SetTUMManage (TM_DECREASEBYONELEVEL);
00284 else
00285 _DldsMgr.SetTUMManage (TM_SETTOLIGHT);
00286 }
00287 else
00288 _DldsMgr.SetTUMManage (TM_OFF);
00289
00290 return CPropertyPage::OnApply();
00291 }
00292
00293 void CDownloaderProperties_NetworkPage::OnSelchangeMode()
00294 {
00295 if (FALSE == ReadTUS ())
00296 {
00297 m_wndMode.SetCurSel (m_iCurMode);
00298 }
00299 else
00300 {
00301 m_iCurMode = m_wndMode.GetCurSel ();
00302 WriteTUS ();
00303 }
00304 }
00305
00306 void CDownloaderProperties_NetworkPage::OnContextMenu(CWnd* , CPoint point)
00307 {
00308 PrepareCHMgr (point);
00309 _CHMgr.ShowMenu ();
00310 }
00311
00312 void CDownloaderProperties_NetworkPage::OnWhatisthis()
00313 {
00314 _CHMgr.OnWT ();
00315 }
00316
00317 void CDownloaderProperties_NetworkPage::ApplyLanguage()
00318 {
00319 fsDlgLngInfo lnginfo [] = {
00320 fsDlgLngInfo (IDC__TUMS, L_TUMS),
00321 fsDlgLngInfo (IDC__MODEADJUSTMENT, L_MODETOADJUST),
00322 fsDlgLngInfo (IDC_USEMAXCONNS, L_MAXCOUNTOFCONNS),
00323 fsDlgLngInfo (IDC_USEMAXCONNSPERSERVER, L_MAXCOUNTOFCONNSPERSERV),
00324 fsDlgLngInfo (IDC_USEMAXDLDS, L_MAXDLDS),
00325 fsDlgLngInfo (IDC__TUR, L_TUR),
00326 fsDlgLngInfo (IDC_DETECTACTIVITY, L_DETECTACTIVITY),
00327 fsDlgLngInfo (IDC_DECBYLEVEL, L_DECBYLEVEL),
00328 fsDlgLngInfo (IDC_SETTOLIGHT, L_SETTOLIGHT)
00329 };
00330
00331 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), 0);
00332 }
00333
00334 void CDownloaderProperties_NetworkPage::OnDetectactivity()
00335 {
00336 UpdateEnabled ();
00337 SetModified ();
00338 }
00339
00340 void CDownloaderProperties_NetworkPage::OnDecbylevel()
00341 {
00342 SetModified ();
00343 }
00344
00345 void CDownloaderProperties_NetworkPage::OnSettolight()
00346 {
00347 SetModified ();
00348 }
00349
00350 void CDownloaderProperties_NetworkPage::PrepareCHMgr(CPoint point)
00351 {
00352 fsCtrlContextHelp aCH1 [] = {
00353 fsCtrlContextHelp (IDC__MODEADJUSTMENT, LS (L_TUMHERE)),
00354 fsCtrlContextHelp (IDC_MODE, LS (L_TUMHERE)),
00355 fsCtrlContextHelp (IDC_USEMAXCONNS, LS (L_MAXCONNSHERE)),
00356 fsCtrlContextHelp (IDC_USEMAXCONNSPERSERVER, LS (L_MAXCONNSPERSERVHERE)),
00357 fsCtrlContextHelp (IDC_USEMAXDLDS, LS (L_MAXDLDSHERE)),
00358 fsCtrlContextHelp (IDC__TUR, LS (L_TURHERE)),
00359 fsCtrlContextHelp (IDC_TRAFFICLIMITVAL, LS (L_TURHERE)),
00360 fsCtrlContextHelp (IDC_TRAFFICLIMITDIMENSION, LS (L_DIMHERE)),
00361 fsCtrlContextHelp (IDC_DETECTACTIVITY, LS (L_DETECTACTIVITYHERE)),
00362 fsCtrlContextHelp (IDC_DECBYLEVEL, LS (L_DECBYLEVELHERE)),
00363 fsCtrlContextHelp (IDC_SETTOLIGHT, LS (L_SETTOLIGHTHERE)),
00364 };
00365
00366 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00367 CopyMemory (aCH, aCH1, sizeof (aCH));
00368
00369 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00370 }
00371
00372 BOOL CDownloaderProperties_NetworkPage::OnHelpInfo(HELPINFO* pHelpInfo)
00373 {
00374 RECT rc;
00375 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00376 if (pItem == NULL)
00377 return TRUE;
00378 pItem->GetWindowRect (&rc);
00379 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00380 {
00381 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00382 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00383 }
00384 PrepareCHMgr (pHelpInfo->MousePos);
00385 _CHMgr.OnWT ();
00386 return TRUE;
00387 }
00388
00389 void CDownloaderProperties_NetworkPage::OnChangeMaxdldsval()
00390 {
00391 if (m_bIModifing == FALSE)
00392 SetModified ();
00393 }
00394
00395 void CDownloaderProperties_NetworkPage::OnUsemaxdlds()
00396 {
00397 UpdateEnabled ();
00398 if (m_bIModifing == FALSE) SetModified ();
00399 }