00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "DownloadProperties_ProxyPage.h"
00009 #include "DownloadProperties.h"
00010 #include "misc.h"
00011 #include "DownloadsWnd.h"
00012 #include "fsDownloadMgr.h"
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(CDownloadProperties_ProxyPage, CPropertyPage)
00021
00022 CDownloadProperties_ProxyPage::CDownloadProperties_ProxyPage() : CPropertyPage(CDownloadProperties_ProxyPage::IDD)
00023 {
00024 m_psp.dwFlags |= PSP_USETITLE;
00025 m_psp.pszTitle = LS (L_PROXY);
00026 }
00027
00028 CDownloadProperties_ProxyPage::~CDownloadProperties_ProxyPage()
00029 {
00030 }
00031
00032 void CDownloadProperties_ProxyPage::DoDataExchange(CDataExchange* pDX)
00033 {
00034 CPropertyPage::DoDataExchange(pDX);
00035
00036 DDX_Control(pDX, IDC_PROTOCOLS, m_wndProtocols);
00037
00038 }
00039
00040 BEGIN_MESSAGE_MAP(CDownloadProperties_ProxyPage, CPropertyPage)
00041
00042 ON_BN_CLICKED(IDC_GETFROMIE, OnGetfromie)
00043 ON_BN_CLICKED(IDC_MANUALLY, OnManually)
00044 ON_BN_CLICKED(IDC_USESOCKS, OnUsesocks)
00045 ON_BN_CLICKED(IDC_DONTUSEPROXY, OnDontuseproxy)
00046 ON_EN_CHANGE(IDC_PROXYNAME, OnChangeProxyname)
00047 ON_EN_CHANGE(IDC_PORT, OnChangePort)
00048 ON_BN_CLICKED(IDC_AUTHORIZATION, OnAuthorization)
00049 ON_EN_CHANGE(IDC_USER, OnChangeUser)
00050 ON_EN_CHANGE(IDC_PASSWORD, OnChangePassword)
00051 ON_CBN_SELCHANGE(IDC_PROTOCOLS, OnSelchangeProtocols)
00052 ON_WM_CONTEXTMENU()
00053 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00054 ON_WM_HELPINFO()
00055 ON_BN_CLICKED(IDC_USEROLLBACK, OnUserollback)
00056 ON_EN_CHANGE(IDC_ROLLBACKSIZE, OnChangeRollbacksize)
00057 ON_BN_CLICKED(IDC_FROMFIREFOX, OnFromfirefox)
00058
00059 END_MESSAGE_MAP()
00060
00061 #define DNP_OFFSET(member) ( LPBYTE (&dnp.member) - LPBYTE (&dnp) )
00062 #define DNP_SIZEOF(member) ( sizeof (dnp.member) )
00063 #define DNP_EQ(member, bString) DNPEntry_IsAllEqual (m_pvDlds, DNP_OFFSET (member), DNP_SIZEOF (member), bString)
00064 #define DNP_SET(member, bString, NewVal) DNPEntry_SetValue (m_pvDlds, DNP_OFFSET (member), DNP_SIZEOF (member), bString, NewVal)
00065
00066 BOOL CDownloadProperties_ProxyPage::OnInitDialog()
00067 {
00068 CPropertyPage::OnInitDialog();
00069
00070 fsDownload_NetworkProperties dnp;
00071 fsDownload_NetworkProperties *dnp0 = m_pvDlds->at (0)->pMgr->GetDownloadMgr ()->GetDNP ();
00072
00073 UINT nChecked = 0;
00074
00075 m_bIChange = TRUE;
00076
00077
00078 if (DNP_EQ (enAccType, FALSE))
00079 {
00080 switch (dnp0->enAccType)
00081 {
00082 case IAT_PRECONFIGPROXY:
00083 nChecked = IDC_GETFROMIE;
00084 break;
00085
00086 case IAT_MANUALPROXY:
00087 nChecked = IDC_MANUALLY;
00088 break;
00089
00090 case IAT_NOPROXY:
00091 nChecked = IDC_DONTUSEPROXY;
00092 break;
00093
00094 case IATE_FIREFOXPROXY:
00095 nChecked = IDC_FROMFIREFOX;
00096 break;
00097
00098 default:
00099 ASSERT (FALSE);
00100 }
00101
00102 CheckRadioButton (IDC_GETFROMIE, IDC_DONTUSEPROXY, nChecked);
00103 }
00104
00105 for (int i = m_pvDlds->size () - 1; i >= 0; i--)
00106 {
00107 vmsDownloadSmartPtr dld = m_pvDlds->at (i);
00108
00109 switch (dld->pMgr->GetDownloadMgr ()->GetDNP ()->enProtocol)
00110 {
00111 case NP_HTTP:
00112 m_vHttp.push_back (dld);
00113 break;
00114
00115 case NP_HTTPS:
00116 m_vHttps.push_back (dld);
00117 break;
00118
00119 case NP_FTP:
00120 m_vFtp.push_back (dld);
00121 break;
00122 }
00123 }
00124
00125 if (m_vHttp.size ())
00126 {
00127 ProxyInfo pi;
00128 DLDS_LIST *pvDlds = m_pvDlds;
00129 m_pvDlds = &m_vHttp;
00130 dnp0 = m_pvDlds->at (0)->pMgr->GetDownloadMgr ()->GetDNP ();
00131
00132 if (DNP_EQ (pszProxyName, TRUE))
00133 {
00134 pi.strName = dnp0->pszProxyName;
00135 pi.bNameModified = TRUE;
00136 }
00137
00138 if (DNP_EQ (pszProxyUserName, TRUE))
00139 {
00140 pi.strUser = dnp0->pszProxyUserName;
00141 if (pi.strUser.GetLength () == 0)
00142 pi.uAuthorization = BST_UNCHECKED;
00143 else
00144 pi.uAuthorization = BST_CHECKED;
00145 }
00146 else
00147 {
00148 pi.uAuthorization = *dnp0->pszProxyUserName ? BST_CHECKED : BST_UNCHECKED;
00149 for (int i = m_pvDlds->size () - 1; i; i--)
00150 {
00151 UINT u = *(m_pvDlds->at (i)->pMgr->GetDownloadMgr ()->GetDNP ()->pszProxyUserName) ? BST_CHECKED : BST_UNCHECKED;
00152 if (u != pi.uAuthorization)
00153 {
00154 pi.uAuthorization = BST_INDETERMINATE;
00155 break;
00156 }
00157 }
00158 }
00159
00160 if (pi.uAuthorization == BST_CHECKED || pi.uAuthorization == BST_UNCHECKED)
00161 pi.bUserModified = pi.bPasswordModified = TRUE;
00162
00163 if (DNP_EQ (pszProxyPassword, TRUE))
00164 pi.strPassword = dnp0->pszProxyPassword;
00165
00166 m_pvDlds = pvDlds;
00167 m_vProxies.add (pi);
00168 m_wndProtocols.AddString ("HTTP");
00169 }
00170
00171 if (m_vHttps.size ())
00172 {
00173 ProxyInfo pi;
00174 DLDS_LIST *pvDlds = m_pvDlds;
00175 m_pvDlds = &m_vHttps;
00176 dnp0 = m_pvDlds->at (0)->pMgr->GetDownloadMgr ()->GetDNP ();
00177
00178 if (DNP_EQ (pszProxyName, TRUE))
00179 {
00180 pi.strName = dnp0->pszProxyName;
00181 pi.bNameModified = TRUE;
00182 }
00183
00184 if (DNP_EQ (pszProxyUserName, TRUE))
00185 {
00186 pi.strUser = dnp0->pszProxyUserName;
00187 if (pi.strUser.GetLength () == 0)
00188 pi.uAuthorization = BST_UNCHECKED;
00189 else
00190 pi.uAuthorization = BST_CHECKED;
00191 }
00192 else
00193 {
00194 pi.uAuthorization = *dnp0->pszProxyUserName ? BST_CHECKED : BST_UNCHECKED;
00195 for (int i = m_pvDlds->size () - 1; i; i--)
00196 {
00197 UINT u = *(m_pvDlds->at (i)->pMgr->GetDownloadMgr ()->GetDNP ()->pszProxyUserName) ? BST_CHECKED : BST_UNCHECKED;
00198 if (u != pi.uAuthorization)
00199 {
00200 pi.uAuthorization = BST_INDETERMINATE;
00201 break;
00202 }
00203 }
00204 }
00205
00206 if (DNP_EQ (pszProxyPassword, TRUE))
00207 pi.strPassword = dnp0->pszProxyPassword;
00208
00209 if (pi.uAuthorization == BST_CHECKED || pi.uAuthorization == BST_UNCHECKED)
00210 pi.bUserModified = pi.bPasswordModified = TRUE;
00211
00212 m_pvDlds = pvDlds;
00213 m_vProxies.add (pi);
00214 m_wndProtocols.AddString ("HTTPS");
00215 }
00216
00217 if (m_vFtp.size ())
00218 {
00219 ProxyInfo pi;
00220 DLDS_LIST *pvDlds = m_pvDlds;
00221 m_pvDlds = &m_vFtp;
00222 dnp0 = m_pvDlds->at (0)->pMgr->GetDownloadMgr ()->GetDNP ();
00223
00224 if (DNP_EQ (pszProxyName, TRUE))
00225 {
00226 pi.strName = dnp0->pszProxyName;
00227 pi.bNameModified = TRUE;
00228 }
00229
00230 if (DNP_EQ (pszProxyUserName, TRUE))
00231 {
00232 pi.strUser = dnp0->pszProxyUserName;
00233 if (pi.strUser.GetLength () == 0)
00234 pi.uAuthorization = BST_UNCHECKED;
00235 else
00236 pi.uAuthorization = BST_CHECKED;
00237 }
00238 else
00239 {
00240 pi.uAuthorization = *dnp0->pszProxyUserName ? BST_CHECKED : BST_UNCHECKED;
00241 for (int i = m_pvDlds->size () - 1; i; i--)
00242 {
00243 UINT u = *(m_pvDlds->at (i)->pMgr->GetDownloadMgr ()->GetDNP ()->pszProxyUserName) ? BST_CHECKED : BST_UNCHECKED;
00244 if (u != pi.uAuthorization)
00245 {
00246 pi.uAuthorization = BST_INDETERMINATE;
00247 break;
00248 }
00249 }
00250 }
00251
00252 if (DNP_EQ (pszProxyPassword, TRUE))
00253 pi.strPassword = dnp0->pszProxyPassword;
00254
00255 if (pi.uAuthorization == BST_CHECKED || pi.uAuthorization == BST_UNCHECKED)
00256 pi.bUserModified = pi.bPasswordModified = TRUE;
00257
00258 m_pvDlds = pvDlds;
00259 m_vProxies.add (pi);
00260 m_wndProtocols.AddString ("FTP");
00261 }
00262
00263 if (m_vHttp.size () == 0 && m_vHttps.size () == 0 && m_vFtp.size () == 0)
00264 {
00265 CheckRadioButton (IDC_GETFROMIE, IDC_DONTUSEPROXY, IDC_DONTUSEPROXY);
00266 GetDlgItem (IDC_GETFROMIE)->EnableWindow (FALSE);
00267 GetDlgItem (IDC_MANUALLY)->EnableWindow (FALSE);
00268 GetDlgItem (IDC_DONTUSEPROXY)->EnableWindow (FALSE);
00269 }
00270
00271 if (DNP_EQ (wRollBackSize, FALSE))
00272 {
00273 CheckDlgButton (IDC_USEROLLBACK, dnp0->wRollBackSize ? BST_CHECKED : BST_UNCHECKED);
00274 if (dnp0->wRollBackSize)
00275 SetDlgItemInt (IDC_ROLLBACKSIZE, dnp0->wRollBackSize);
00276 else
00277 SetDlgItemInt (IDC_ROLLBACKSIZE, 3000);
00278 }
00279 else
00280 {
00281 CheckDlgButton (IDC_USEROLLBACK, BST_INDETERMINATE);
00282 SetDlgItemText (IDC_ROLLBACKSIZE, "");
00283 }
00284
00285 m_wndProtocols.SetCurSel (0);
00286 m_iCurProtocol = 0;
00287 UpdatePS ();
00288
00289 UpdateEnabled ();
00290
00291 SetModified (FALSE);
00292
00293 m_bIChange = FALSE;
00294
00295 ApplyLanguage ();
00296
00297 return TRUE;
00298 }
00299
00300 void CDownloadProperties_ProxyPage::UpdateEnabled()
00301 {
00302 BOOL bSetE = IsDlgButtonChecked (IDC_MANUALLY) == BST_CHECKED;
00303
00304 GetDlgItem (IDC__PROTOCOL)->EnableWindow (bSetE);
00305 GetDlgItem (IDC_PROTOCOLS)->EnableWindow (bSetE);
00306 GetDlgItem (IDC__ADDRESS)->EnableWindow (bSetE);
00307 GetDlgItem (IDC__PORT)->EnableWindow (bSetE);
00308 GetDlgItem (IDC__PROTOCOL)->EnableWindow (bSetE);
00309 GetDlgItem (IDC_PROXYNAME)->EnableWindow (bSetE);
00310 GetDlgItem (IDC_PORT)->EnableWindow (bSetE);
00311 GetDlgItem (IDC_AUTHORIZATION)->EnableWindow (bSetE);
00312
00313 bSetE &= IsDlgButtonChecked (IDC_AUTHORIZATION) == BST_CHECKED;
00314
00315 GetDlgItem (IDC__USER)->EnableWindow (bSetE);
00316 GetDlgItem (IDC__PASSWORD)->EnableWindow (bSetE);
00317 GetDlgItem (IDC_USER)->EnableWindow (bSetE);
00318 GetDlgItem (IDC_PASSWORD)->EnableWindow (bSetE);
00319
00320 BOOL b = IsDlgButtonChecked (IDC_USEROLLBACK) == BST_CHECKED;
00321 GetDlgItem (IDC__ROLSIZE)->EnableWindow (b);
00322 GetDlgItem (IDC_ROLLBACKSIZE)->EnableWindow (b);
00323 GetDlgItem (IDC__BYTES)->EnableWindow (b);
00324 }
00325
00326 void CDownloadProperties_ProxyPage::OnGetfromie()
00327 {
00328 SetModified ();
00329 UpdateEnabled ();
00330 }
00331
00332 void CDownloadProperties_ProxyPage::OnManually()
00333 {
00334 SetModified ();
00335 UpdateEnabled ();
00336 }
00337
00338 void CDownloadProperties_ProxyPage::OnUsesocks()
00339 {
00340 SetModified ();
00341 UpdateEnabled ();
00342 }
00343
00344 void CDownloadProperties_ProxyPage::OnDontuseproxy()
00345 {
00346 SetModified ();
00347 UpdateEnabled ();
00348 }
00349
00350 void CDownloadProperties_ProxyPage::OnChangeProxyname()
00351 {
00352 if (m_bIChange == FALSE)
00353 {
00354 m_vProxies [m_iCurProtocol].bNameModified = TRUE;
00355 SetModified ();
00356 }
00357
00358 CString str, strName;
00359 USHORT uPort;
00360
00361 GetDlgItemText (IDC_PROXYNAME, str);
00362
00363 if (str == "http:" || str == "ftp:" || str == "https:")
00364 return;
00365
00366 if (CrackProxyName (str, strName, uPort))
00367 SetDlgItemInt (IDC_PORT, uPort, FALSE);
00368
00369 if (strName != str)
00370 {
00371 SetDlgItemText (IDC_PROXYNAME, strName);
00372 GetDlgItem (IDC_PORT)->SetFocus ();
00373 }
00374 }
00375
00376 void CDownloadProperties_ProxyPage::OnChangePort()
00377 {
00378 if (m_bIChange == FALSE)
00379 SetModified ();
00380 }
00381
00382 void CDownloadProperties_ProxyPage::OnAuthorization()
00383 {
00384 if (IsDlgButtonChecked (IDC_AUTHORIZATION) == BST_INDETERMINATE)
00385 CheckDlgButton (IDC_AUTHORIZATION, BST_UNCHECKED);
00386
00387 m_vProxies [m_iCurProtocol].uAuthorization = IsDlgButtonChecked (IDC_AUTHORIZATION);
00388
00389 SetModified ();
00390 UpdateEnabled ();
00391 }
00392
00393 void CDownloadProperties_ProxyPage::OnChangeUser()
00394 {
00395 if (m_bIChange == FALSE)
00396 {
00397 m_vProxies [m_iCurProtocol].bUserModified = TRUE;
00398 SetModified ();
00399 }
00400 }
00401
00402 void CDownloadProperties_ProxyPage::OnChangePassword()
00403 {
00404 if (m_bIChange == FALSE)
00405 {
00406 m_vProxies [m_iCurProtocol].bPasswordModified = TRUE;
00407 SetModified ();
00408 }
00409 }
00410
00411 BOOL CDownloadProperties_ProxyPage::CrackProxyName(LPCSTR pszName, CString &strName, USHORT &uPort)
00412 {
00413 CHAR szName [1000];
00414
00415
00416 LPCSTR pszPort = strrchr (pszName, ':');
00417
00418
00419 if (strstr (pszName, ":/") == pszPort ||
00420 strstr (pszName, ":\\") == pszPort )
00421 pszPort = NULL;
00422
00423 if (pszPort == NULL)
00424 {
00425 strName = pszName;
00426 return FALSE;
00427 }
00428
00429 strcpy (szName, pszName);
00430 szName [pszPort - pszName] = 0;
00431
00432 strName = szName;
00433
00434 if (pszPort - pszName + 1 == (int) strlen (pszName))
00435 return FALSE;
00436
00437 uPort = (USHORT) atoi (pszPort+1);
00438
00439 return TRUE;
00440 }
00441
00442 BOOL CDownloadProperties_ProxyPage::OnApply()
00443 {
00444 fsDownload_NetworkProperties dnp;
00445
00446 if (IsDlgButtonChecked (IDC_GETFROMIE) == BST_CHECKED)
00447 {
00448 fsInternetAccessTypeEx type = IATE_PRECONFIGPROXY;
00449 DNP_SET (enAccType, FALSE, &type);
00450 DNP_SET (pszProxyName, TRUE, "");
00451 DNP_SET (pszProxyUserName, TRUE, "");
00452 DNP_SET (pszProxyPassword, TRUE, "");
00453 }
00454 else if (IsDlgButtonChecked (IDC_FROMFIREFOX) == BST_CHECKED)
00455 {
00456 fsInternetAccessTypeEx type = IATE_FIREFOXPROXY;
00457 DNP_SET (enAccType, FALSE, &type);
00458 DNP_SET (pszProxyName, TRUE, "");
00459 DNP_SET (pszProxyUserName, TRUE, "");
00460 DNP_SET (pszProxyPassword, TRUE, "");
00461 }
00462 else if (IsDlgButtonChecked (IDC_MANUALLY) == BST_CHECKED)
00463 {
00464 if (ReadPS () == FALSE)
00465 return FALSE;
00466
00467 fsInternetAccessTypeEx type = IATE_MANUALPROXY;
00468 DNP_SET (enAccType, FALSE, &type);
00469
00470 int i = 0;
00471
00472 if (m_vHttp.size ())
00473 ApplyPS (&m_vHttp, &m_vProxies [i++]);
00474
00475 if (m_vHttps.size ())
00476 ApplyPS (&m_vHttps, &m_vProxies [i++]);
00477
00478 if (m_vFtp.size ())
00479 ApplyPS (&m_vFtp, &m_vProxies [i++]);
00480 }
00481 else if (IsDlgButtonChecked (IDC_DONTUSEPROXY) == BST_CHECKED)
00482 {
00483 fsInternetAccessTypeEx type = IATE_NOPROXY;
00484 DNP_SET (enAccType, FALSE, &type);
00485 DNP_SET (pszProxyName, TRUE, "");
00486 DNP_SET (pszProxyUserName, TRUE, "");
00487 DNP_SET (pszProxyPassword, TRUE, "");
00488 }
00489
00490 UINT u = IsDlgButtonChecked (IDC_USEROLLBACK);
00491 if (u == BST_CHECKED)
00492 {
00493 WORD w = (WORD)GetDlgItemInt (IDC_ROLLBACKSIZE);
00494 if (w == 0)
00495 w = 3000;
00496 if (w > 65000)
00497 w = 65000;
00498 DNP_SET (wRollBackSize, FALSE, &w);
00499 }
00500 else if (u == BST_UNCHECKED)
00501 {
00502 WORD w = 0;
00503 DNP_SET (wRollBackSize, FALSE, &w);
00504 }
00505
00506 return CPropertyPage::OnApply();
00507 }
00508
00509 BOOL CDownloadProperties_ProxyPage::ReadPS()
00510 {
00511 UINT nErrID = 0;
00512
00513 m_bIChange = TRUE;
00514
00515 CString str;
00516 BOOL bOk;
00517
00518 ProxyInfo *pi = &m_vProxies [m_iCurProtocol];
00519
00520 if (pi->bNameModified)
00521 {
00522 GetDlgItemText (IDC_PROXYNAME, str);
00523 if (str.GetLength () == 0)
00524 {
00525 MessageBox (LS (L_ENTERPROXY), LS (L_INPERR), MB_ICONEXCLAMATION);
00526 nErrID = IDC_PROXYNAME;
00527 goto _lErr;
00528 }
00529
00530 pi->strName = str;
00531 USHORT u = (USHORT) GetDlgItemInt (IDC_PORT, &bOk, FALSE);
00532 if (bOk == FALSE)
00533 {
00534 if (str.GetLength ())
00535 {
00536 MessageBox (LS (L_ENTERPROXYPORT), LS (L_INPERR), MB_ICONEXCLAMATION);
00537 nErrID = IDC_PORT;
00538 goto _lErr;
00539 }
00540 }
00541 else
00542 {
00543 if (str.GetLength () == 0)
00544 {
00545 MessageBox (LS (L_ENTERPROXY), LS (L_INPERR), MB_ICONEXCLAMATION);
00546 nErrID = IDC_PROXYNAME;
00547 goto _lErr;
00548 }
00549
00550 str.Format (":%d", u);
00551 m_vProxies [m_iCurProtocol].strName += str;
00552 }
00553 }
00554
00555 if (pi->uAuthorization == BST_CHECKED)
00556 {
00557 if (pi->bUserModified)
00558 {
00559 GetDlgItemText (IDC_USER, str);
00560 if (str.GetLength () == 0)
00561 {
00562 MessageBox (LS (L_ENTERUSER), LS (L_INPERR), MB_ICONEXCLAMATION);
00563 nErrID = IDC_USER;
00564 goto _lErr;
00565 }
00566 pi->strUser = str;
00567 }
00568
00569 if (pi->bPasswordModified)
00570 GetDlgItemText (IDC_PASSWORD, pi->strPassword);
00571 }
00572
00573 m_iCurProtocol = m_wndProtocols.GetCurSel ();
00574 UpdatePS ();
00575 m_bIChange = FALSE;
00576 return TRUE;
00577
00578 _lErr:
00579 m_wndProtocols.SetCurSel (m_iCurProtocol);
00580 CEdit *pE = (CEdit*) GetDlgItem (nErrID);
00581 pE->SetFocus ();
00582 pE->SetSel (0, -1);
00583 m_bIChange = FALSE;
00584 return FALSE;
00585 }
00586
00587 void CDownloadProperties_ProxyPage::UpdatePS()
00588 {
00589 CString strProxy;
00590 USHORT uPort;
00591
00592 if (m_vProxies.size () == 0)
00593 return;
00594
00595 if (CrackProxyName (m_vProxies [m_iCurProtocol].strName, strProxy, uPort))
00596 SetDlgItemInt (IDC_PORT, uPort, FALSE);
00597 else
00598 SetDlgItemText (IDC_PORT, "");
00599
00600 SetDlgItemText (IDC_PROXYNAME, strProxy);
00601
00602 CheckDlgButton (IDC_AUTHORIZATION, m_vProxies [m_iCurProtocol].uAuthorization);
00603
00604 SetDlgItemText (IDC_USER, m_vProxies [m_iCurProtocol].strUser);
00605 SetDlgItemText (IDC_PASSWORD, m_vProxies [m_iCurProtocol].strPassword);
00606
00607 UpdateEnabled ();
00608 }
00609
00610 void CDownloadProperties_ProxyPage::ApplyPS(DLDS_LIST *pvDlds, ProxyInfo* pi)
00611 {
00612 if (m_vProxies.size () == 0)
00613 return;
00614
00615 DLDS_LIST *pvOld = m_pvDlds;
00616 fsDownload_NetworkProperties dnp;
00617
00618 m_pvDlds = pvDlds;
00619
00620 if (pi->bNameModified)
00621 DNP_SET (pszProxyName, TRUE, pi->strName);
00622
00623 if (pi->uAuthorization == BST_UNCHECKED)
00624 {
00625 DNP_SET (pszProxyUserName, TRUE, "");
00626 DNP_SET (pszProxyPassword, TRUE, "");
00627 }
00628 else
00629 {
00630 if (pi->bUserModified)
00631 DNP_SET (pszProxyUserName, TRUE, pi->strUser);
00632
00633 if (pi->bPasswordModified)
00634 DNP_SET (pszProxyPassword, TRUE, pi->strPassword);
00635 }
00636
00637 m_pvDlds = pvOld;
00638 }
00639
00640 void CDownloadProperties_ProxyPage::OnSelchangeProtocols()
00641 {
00642 if (m_wndProtocols.GetCurSel () != m_iCurProtocol)
00643 ReadPS ();
00644 }
00645
00646 void CDownloadProperties_ProxyPage::OnContextMenu(CWnd* , CPoint point)
00647 {
00648 PrepareCHMgr (point);
00649 _CHMgr.ShowMenu ();
00650 }
00651
00652 void CDownloadProperties_ProxyPage::OnWhatisthis()
00653 {
00654 _CHMgr.OnWT ();
00655 }
00656
00657 void CDownloadProperties_ProxyPage::ApplyLanguage()
00658 {
00659 fsDlgLngInfo lnginfo [] = {
00660 fsDlgLngInfo (IDC__GETFROM, L_GETFROM),
00661 fsDlgLngInfo (IDC_GETFROMIE, L_FROMIE),
00662 fsDlgLngInfo (IDC_FROMFIREFOX, L_FROMFIREFOX),
00663 fsDlgLngInfo (IDC_MANUALLY, L_FROMMANUALLY),
00664 fsDlgLngInfo (IDC_DONTUSEPROXY, L_FROMDONTUSE),
00665 fsDlgLngInfo (IDC__SETTINGS, L_SETTINGS),
00666 fsDlgLngInfo (IDC__PROTOCOL, L_PROTOCOL),
00667 fsDlgLngInfo (IDC__ADDRESS, L_ADDR),
00668 fsDlgLngInfo (IDC__PORT, L_PORT),
00669 fsDlgLngInfo (IDC_AUTHORIZATION, L_LOGINREQ),
00670 fsDlgLngInfo (IDC__USER, L_USER),
00671 fsDlgLngInfo (IDC__PASSWORD, L_PASSWORD),
00672 fsDlgLngInfo (IDC_USEROLLBACK, L_USEROLLBACK),
00673 fsDlgLngInfo (IDC__ROLSIZE, L_ROLLBACKSIZE),
00674 fsDlgLngInfo (IDC__BYTES, L_BYTES),
00675 };
00676
00677 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), 0);
00678 }
00679
00680 BOOL CDownloadProperties_ProxyPage::OnHelpInfo(HELPINFO* pHelpInfo)
00681 {
00682 RECT rc;
00683 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00684 if (pItem == NULL)
00685 return TRUE;
00686 pItem->GetWindowRect (&rc);
00687 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00688 {
00689 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00690 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00691 }
00692 PrepareCHMgr (pHelpInfo->MousePos);
00693 _CHMgr.OnWT ();
00694 return TRUE;
00695 }
00696
00697 void CDownloadProperties_ProxyPage::PrepareCHMgr(CPoint point)
00698 {
00699 fsCtrlContextHelp aCH1 [] = {
00700 fsCtrlContextHelp (IDC_GETFROMIE, LS (L_FROMIEHERE)),
00701 fsCtrlContextHelp (IDC_FROMFIREFOX, LS (L_FROMFIREFOX_HERE)),
00702 fsCtrlContextHelp (IDC_MANUALLY, LS (L_FROMMANUALHERE)),
00703 fsCtrlContextHelp (IDC_DONTUSEPROXY, LS (L_FROMDONTUSEHERE)),
00704 fsCtrlContextHelp (IDC__PROTOCOL, LS (L_PROTOCOLHERE)),
00705 fsCtrlContextHelp (IDC_PROTOCOLS, LS (L_PROTOCOLHERE)),
00706 fsCtrlContextHelp (IDC__ADDRESS, LS (L_PROXYADDRHERE)),
00707 fsCtrlContextHelp (IDC_PROXYNAME, LS (L_PROXYADDRHERE)),
00708 fsCtrlContextHelp (IDC__PORT, LS (L_PROXYPORTHERE)),
00709 fsCtrlContextHelp (IDC_PORT, LS (L_PROXYPORTHERE)),
00710 fsCtrlContextHelp (IDC_AUTHORIZATION, LS (L_PROXYLOGINHERE)),
00711 fsCtrlContextHelp (IDC__USER, LS (L_USERHERE)),
00712 fsCtrlContextHelp (IDC_USER, LS (L_USERHERE)),
00713 fsCtrlContextHelp (IDC__PASSWORD, LS (L_PWDHERE)),
00714 fsCtrlContextHelp (IDC_PASSWORD, LS (L_PWDHERE)),
00715 fsCtrlContextHelp (IDC_USEROLLBACK, LS (L_USEROLLBACKHERE)),
00716 fsCtrlContextHelp (IDC__ROLSIZE, LS (L_ROLLBACKSIZEHERE)),
00717 fsCtrlContextHelp (IDC_ROLLBACKSIZE, LS (L_ROLLBACKSIZEHERE)),
00718 };
00719
00720 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00721 CopyMemory (aCH, aCH1, sizeof (aCH));
00722
00723 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00724 }
00725
00726 void CDownloadProperties_ProxyPage::OnUserollback()
00727 {
00728 if (IsDlgButtonChecked (IDC_USEROLLBACK) == BST_INDETERMINATE)
00729 CheckDlgButton (IDC_USEROLLBACK, BST_UNCHECKED);
00730
00731 SetModified ();
00732 UpdateEnabled ();
00733 }
00734
00735 void CDownloadProperties_ProxyPage::OnChangeRollbacksize()
00736 {
00737 SetModified ();
00738 }
00739
00740 void CDownloadProperties_ProxyPage::OnFromfirefox()
00741 {
00742 SetModified ();
00743 UpdateEnabled ();
00744 }