00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "Sites_GeneralPage.h"
00009 #include "GroupDlg.h"
00010 #include "DownloadsWnd.h"
00011 #include "inetutil.h"
00012 #include "fsSitesMgr.h"
00013
00014 extern CDownloadsWnd *_pwndDownloads;
00015 #ifdef _DEBUG
00016 #define new DEBUG_NEW
00017 #undef THIS_FILE
00018 static char THIS_FILE[] = __FILE__;
00019 #endif
00020
00021 IMPLEMENT_DYNCREATE(CSites_GeneralPage, CPropertyPage)
00022
00023 CSites_GeneralPage::CSites_GeneralPage() : CPropertyPage(CSites_GeneralPage::IDD)
00024 {
00025 m_psp.dwFlags |= PSP_USETITLE;
00026 m_psp.pszTitle = LS (L_GENERAL);
00027 }
00028
00029 CSites_GeneralPage::~CSites_GeneralPage()
00030 {
00031 }
00032
00033 void CSites_GeneralPage::DoDataExchange(CDataExchange* pDX)
00034 {
00035 CPropertyPage::DoDataExchange(pDX);
00036
00037 DDX_Control(pDX, IDC_MAXCONNSSPIN, m_wndMaxConnsSpin);
00038 DDX_Control(pDX, IDC_GROUPS, m_wndGroups);
00039 DDX_Control(pDX, IDC_CREATEGROUP, m_btnCreateGroup);
00040 DDX_Control(pDX, IDC_SITE, m_wndSite);
00041
00042 }
00043
00044 BEGIN_MESSAGE_MAP(CSites_GeneralPage, CPropertyPage)
00045
00046 ON_BN_CLICKED(IDC_USELOGIN, OnUselogin)
00047 ON_BN_CLICKED(IDC_USEMAXCONNS, OnUsemaxconns)
00048 ON_BN_CLICKED(IDC_USEDEFGROUP, OnUsedefgroup)
00049 ON_BN_CLICKED(IDC_USEFTPPASSIVE, OnUseftppassive)
00050 ON_CBN_EDITCHANGE(IDC_SITE, OnEditchangeSite)
00051 ON_EN_CHANGE(IDC_USER, OnChangeUser)
00052 ON_EN_CHANGE(IDC_PASSWORD, OnChangePassword)
00053 ON_EN_CHANGE(IDC_MAXCONNS, OnChangeMaxconns)
00054 ON_CBN_SELCHANGE(IDC_GROUPS, OnSelchangeGroups)
00055 ON_BN_CLICKED(IDC_CREATEGROUP, OnCreategroup)
00056 ON_CBN_SELCHANGE(IDC_SITE, OnSelchangeSite)
00057 ON_WM_CONTEXTMENU()
00058 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00059 ON_WM_HELPINFO()
00060 ON_BN_CLICKED(IDC_DONTSENDLIST2, OnDontsendlist2)
00061
00062 END_MESSAGE_MAP()
00063
00064 BOOL CSites_GeneralPage::OnInitDialog()
00065 {
00066 CPropertyPage::OnInitDialog();
00067
00068 m_btnCreateGroup.SetIcon (SICO (IDI_CREATEGROUP));
00069
00070
00071 for (int i = 0; i < _LastUrlPaths.GetRecordCount (); i++)
00072 m_wndSite.AddString (_LastUrlPaths.GetRecord (i));
00073
00074 m_wndGroups.Fill ();
00075
00076 m_wndMaxConnsSpin.SetRange (1, UD_MAXVAL);
00077
00078 if (m_pSite->strName != NULL)
00079 SetDlgItemText (IDC_SITE, m_pSite->strName);
00080
00081 if (m_pSite->strUser)
00082 {
00083 CheckDlgButton (IDC_USELOGIN, BST_CHECKED);
00084 SetDlgItemText (IDC_USER, m_pSite->strUser);
00085 if (m_pSite->strPassword)
00086 SetDlgItemText (IDC_PASSWORD, m_pSite->strPassword);
00087 }
00088
00089 if (m_pSite->cMaxConns != UINT_MAX)
00090 {
00091 CheckDlgButton (IDC_USEMAXCONNS, BST_CHECKED);
00092 SetDlgItemInt (IDC_MAXCONNS, m_pSite->cMaxConns);
00093 }
00094 else
00095 SetDlgItemInt (IDC_MAXCONNS, 1);
00096
00097 if (m_pSite->pGroup == NULL)
00098 {
00099 m_wndGroups.SelectGroupById (_App.CreateDld_IdOfLastGrpSelected ());
00100 }
00101 else
00102 {
00103 CheckDlgButton (IDC_USEDEFGROUP, BST_CHECKED);
00104 m_wndGroups.SelectGroup (m_pSite->pGroup);
00105 }
00106
00107 CheckDlgButton (IDC_USEFTPPASSIVE, m_pSite->dwFtpFlags & FTP_USEPASSIVEMODE ? BST_CHECKED : BST_UNCHECKED);
00108 CheckDlgButton (IDC_DONTSENDLIST2, m_pSite->dwFtpFlags & FTP_DONTSENDLIST ? BST_CHECKED : BST_UNCHECKED);
00109
00110 UpdateEnabled ();
00111
00112 ApplyLanguage ();
00113
00114 return TRUE;
00115 }
00116
00117 void CSites_GeneralPage::UpdateEnabled()
00118 {
00119 BOOL b = IsDlgButtonChecked (IDC_USELOGIN) == BST_CHECKED;
00120 GetDlgItem (IDC__USER)->EnableWindow (b);
00121 GetDlgItem (IDC_USER)->EnableWindow (b);
00122 GetDlgItem (IDC__PASSWORD)->EnableWindow (b);
00123 GetDlgItem (IDC_PASSWORD)->EnableWindow (b);
00124
00125 b = IsDlgButtonChecked (IDC_USEMAXCONNS);
00126 GetDlgItem (IDC_MAXCONNS)->EnableWindow (b);
00127 GetDlgItem (IDC_MAXCONNSSPIN)->EnableWindow (b);
00128
00129 b = IsDlgButtonChecked (IDC_USEDEFGROUP);
00130 GetDlgItem (IDC_GROUPS)->EnableWindow (b);
00131 GetDlgItem (IDC_CREATEGROUP)->EnableWindow (b);
00132 }
00133
00134 void CSites_GeneralPage::OnUselogin()
00135 {
00136 SetModified ();
00137 UpdateEnabled ();
00138 }
00139
00140 void CSites_GeneralPage::OnUsemaxconns()
00141 {
00142 SetModified ();
00143 UpdateEnabled ();
00144 }
00145
00146 void CSites_GeneralPage::OnUsedefgroup()
00147 {
00148 SetModified ();
00149 UpdateEnabled ();
00150 }
00151
00152 void CSites_GeneralPage::OnUseftppassive()
00153 {
00154 SetModified ();
00155 }
00156
00157 void CSites_GeneralPage::OnEditchangeSite()
00158 {
00159 SetModified ();
00160 }
00161
00162 void CSites_GeneralPage::OnChangeUser()
00163 {
00164 SetModified ();
00165 }
00166
00167 void CSites_GeneralPage::OnChangePassword()
00168 {
00169 SetModified ();
00170 }
00171
00172 void CSites_GeneralPage::OnChangeMaxconns()
00173 {
00174 SetModified ();
00175 }
00176
00177 void CSites_GeneralPage::OnSelchangeGroups()
00178 {
00179 SetModified ();
00180 }
00181
00182 void CSites_GeneralPage::OnCreategroup()
00183 {
00184 if (m_wndGroups.CreateNewGroup (m_wndGroups.GetSelectedGroup ()))
00185 OnSelchangeGroups ();
00186 }
00187
00188 void CSites_GeneralPage::OnSelchangeSite()
00189 {
00190 SetModified ();
00191 }
00192
00193 BOOL CSites_GeneralPage::OnApply()
00194 {
00195 CString strSite, strUser, strPassword;
00196 UINT cMaxConns;
00197 vmsDownloadsGroupSmartPtr pGroup;
00198
00199 GetDlgItemText (IDC_SITE, strSite);
00200
00201 if (strSite.GetLength () == 0)
00202 {
00203 MessageBox (LS (L_ENTERSITE), LS (L_INPERR), MB_ICONEXCLAMATION);
00204 GetDlgItem (IDC_SITE)->SetFocus ();
00205 return FALSE;
00206 }
00207
00208 fsURL url;
00209 if (IR_SUCCESS == url.Crack (strSite))
00210 {
00211 strSite = url.GetHostName ();
00212 SetDlgItemText (IDC_SITE, strSite);
00213 if (*url.GetUserName ())
00214 {
00215 CheckDlgButton (IDC_USELOGIN, BST_CHECKED);
00216 SetDlgItemText (IDC_USER, url.GetUserName ());
00217 if (url.GetPassword ())
00218 SetDlgItemText (IDC_PASSWORD, url.GetPassword ());
00219 }
00220
00221 if (m_advanced->IsUserChangedProtocols () == FALSE)
00222 {
00223
00224 m_pSite->dwValidFor &= ~ (SITE_VALIDFOR_HTTP|SITE_VALIDFOR_HTTPS|SITE_VALIDFOR_FTP);
00225 m_pSite->dwValidFor |= fsNPToSiteValidFor (fsSchemeToNP (url.GetInternetScheme ()));
00226 m_advanced->ToDialog ();
00227 }
00228
00229 UpdateEnabled ();
00230 }
00231
00232 m_advanced->FromDialog ();
00233
00234 DWORD dwVF = m_pSite->dwValidFor;
00235 dwVF &= ~ SITE_VALIDFOR_SUBDOMAINS;
00236 int iNewSiteIndex = _SitesMgr.FindSite (strSite, dwVF, FALSE);
00237
00238 if (iNewSiteIndex != -1 && iNewSiteIndex != m_iSiteIndex)
00239 {
00240 MessageBox (LS (L_SITEALREXISTS), LS (L_INPERR), MB_ICONEXCLAMATION);
00241 GetDlgItem (IDC_SITE)->SetFocus ();
00242 return FALSE;
00243 }
00244
00245 if (IsDlgButtonChecked (IDC_USELOGIN) == BST_CHECKED)
00246 {
00247 GetDlgItemText (IDC_USER, strUser);
00248 GetDlgItemText (IDC_PASSWORD, strPassword);
00249
00250 if (strUser.GetLength () == 0)
00251 {
00252 MessageBox (LS (L_ENTERUSER), LS (L_INPERR), MB_ICONEXCLAMATION);
00253 GetDlgItem (IDC_USER)->SetFocus ();
00254 return FALSE;
00255 }
00256 }
00257
00258 if (IsDlgButtonChecked (IDC_USEMAXCONNS) == BST_CHECKED)
00259 {
00260 cMaxConns = GetDlgItemInt (IDC_MAXCONNS);
00261 if (cMaxConns == 0)
00262 {
00263 MessageBox (LS (L_MAXCONNSMUST), LS (L_INPERR), MB_ICONEXCLAMATION);
00264 GetDlgItem (IDC_MAXCONNS)->SetFocus ();
00265 return FALSE;
00266 }
00267 }
00268 else
00269 cMaxConns = UINT_MAX;
00270
00271 if (IsDlgButtonChecked (IDC_USEDEFGROUP) == BST_CHECKED)
00272 {
00273 pGroup = m_wndGroups.GetSelectedGroup ();
00274 }
00275
00276 m_pSite->dwFtpFlags = 0;
00277
00278 if (IsDlgButtonChecked (IDC_USEFTPPASSIVE) == BST_CHECKED)
00279 m_pSite->dwFtpFlags |= FTP_USEPASSIVEMODE;
00280 if (IsDlgButtonChecked (IDC_DONTSENDLIST2) == BST_CHECKED)
00281 m_pSite->dwFtpFlags |= FTP_DONTSENDLIST;
00282
00283 m_pSite->strName = strSite;
00284 m_pSite->cMaxConns = cMaxConns;
00285 m_pSite->pGroup = pGroup;
00286 if (strUser.GetLength ())
00287 m_pSite->strUser = strUser;
00288 else
00289 m_pSite->strUser = NULL;
00290 if (strPassword.GetLength ())
00291 m_pSite->strPassword = strPassword;
00292 else
00293 m_pSite->strPassword = NULL;
00294
00295 return CPropertyPage::OnApply();
00296 }
00297
00298 void CSites_GeneralPage::OnContextMenu(CWnd* , CPoint point)
00299 {
00300 PrepareCHMgr (point);
00301 _CHMgr.ShowMenu ();
00302 }
00303
00304 void CSites_GeneralPage::OnWhatisthis()
00305 {
00306 _CHMgr.OnWT ();
00307 }
00308
00309 void CSites_GeneralPage::ApplyLanguage()
00310 {
00311 fsDlgLngInfo lnginfo [] = {
00312 fsDlgLngInfo (IDC_USELOGIN, L_LOGINREQ),
00313 fsDlgLngInfo (IDC__USER, L_USER),
00314 fsDlgLngInfo (IDC__PASSWORD, L_PASSWORD),
00315 fsDlgLngInfo (IDC_USEMAXCONNS, L_MAXSITECONNS),
00316 fsDlgLngInfo (IDC_USEDEFGROUP, L_USEDEFGRP),
00317 fsDlgLngInfo (IDC_USEFTPPASSIVE, L_USESITEFTPPASSIVE),
00318 fsDlgLngInfo (IDC_DONTSENDLIST2, L_DONTRETRFILEDATEFROMSERV),
00319 };
00320
00321 CString str; str = LS (L_SITENAME); str += ':';
00322 SetDlgItemText (IDC__SITE, str);
00323
00324 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), 0);
00325 }
00326
00327 void CSites_GeneralPage::PrepareCHMgr(CPoint point)
00328 {
00329 fsCtrlContextHelp aCH1 [] = {
00330 fsCtrlContextHelp (IDC__SITE, LS (L_SITEHERE)),
00331 fsCtrlContextHelp (IDC_SITE, LS (L_SITEHERE)),
00332 fsCtrlContextHelp (IDC_USELOGIN,LS (L_LOGINHERE)),
00333 fsCtrlContextHelp (IDC__USER, LS (L_USERHERE)),
00334 fsCtrlContextHelp (IDC_USER, LS (L_USERHERE)),
00335 fsCtrlContextHelp (IDC__PASSWORD, LS (L_PWDHERE)),
00336 fsCtrlContextHelp (IDC_PASSWORD, LS (L_PWDHERE)),
00337 fsCtrlContextHelp (IDC_USEMAXCONNS, LS (L_MAXCONNSHERE2)),
00338 fsCtrlContextHelp (IDC_USEDEFGROUP, LS (L_USEDEFGRPHERE)),
00339 fsCtrlContextHelp (IDC_CREATEGROUP, LS (L_CREATEGRP)),
00340 fsCtrlContextHelp (IDC_USEFTPPASSIVE, LS (L_USEPASSIVEMODEHERE)),
00341 fsCtrlContextHelp (IDC_DONTSENDLIST2, LS (L_DONTRETRFILEDATEFROMSERV_HERE)),
00342 };
00343
00344 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00345 CopyMemory (aCH, aCH1, sizeof (aCH));
00346
00347 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00348 }
00349
00350 BOOL CSites_GeneralPage::OnHelpInfo(HELPINFO* pHelpInfo)
00351 {
00352 RECT rc;
00353 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00354 if (pItem == NULL)
00355 return TRUE;
00356 pItem->GetWindowRect (&rc);
00357 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00358 {
00359 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00360 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00361 }
00362 PrepareCHMgr (pHelpInfo->MousePos);
00363 _CHMgr.OnWT ();
00364 return TRUE;
00365 }
00366
00367 void CSites_GeneralPage::OnDontsendlist2()
00368 {
00369 SetModified ();
00370 }