00001
00002
00003
00004
00005
00006 #include "stdafx.h"
00007 #include "FdmApp.h"
00008 #include "DownloaderProperties_ListPage.h"
00009 #include "DownloadsWnd.h"
00010 #include "vmsRegisteredApp.h"
00011
00012 #ifdef _DEBUG
00013 #define new DEBUG_NEW
00014 #undef THIS_FILE
00015 static char THIS_FILE[] = __FILE__;
00016 #endif
00017
00018 extern CDownloadsWnd* _pwndDownloads;
00019
00020 IMPLEMENT_DYNCREATE(CDownloaderProperties_ListPage, CPropertyPage)
00021
00022 CDownloaderProperties_ListPage::CDownloaderProperties_ListPage() : CPropertyPage(CDownloaderProperties_ListPage::IDD)
00023 {
00024 m_psp.dwFlags |= PSP_USETITLE;
00025 m_psp.pszTitle = LS (L_ALLDLDS);
00026 }
00027
00028 CDownloaderProperties_ListPage::~CDownloaderProperties_ListPage()
00029 {
00030 }
00031
00032 void CDownloaderProperties_ListPage::DoDataExchange(CDataExchange* pDX)
00033 {
00034 CPropertyPage::DoDataExchange(pDX);
00035
00036 DDX_Control(pDX, IDC_VIRNAME, m_wndVirName);
00037 DDX_Control(pDX, IDC_WHENDEL, m_wndWhenDel);
00038
00039 }
00040
00041 BEGIN_MESSAGE_MAP(CDownloaderProperties_ListPage, CPropertyPage)
00042
00043 ON_CBN_SELCHANGE(IDC_WHENDEL, OnSelchangeWhendel)
00044 ON_BN_CLICKED(IDC_AUTODEL, OnAutodel)
00045 ON_WM_CONTEXTMENU()
00046 ON_COMMAND(ID_WHATISTHIS, OnWhatisthis)
00047 ON_WM_HELPINFO()
00048 ON_BN_CLICKED(IDC_DETAILEDLOG, OnDetailedlog)
00049 ON_BN_CLICKED(IDC_SIZEINBYTES, OnSizeinbytes)
00050 ON_BN_CLICKED(IDC_VIRCHECK, OnVircheck)
00051 ON_CBN_SELCHANGE(IDC_VIRNAME, OnSelchangeVirname)
00052 ON_CBN_EDITCHANGE(IDC_VIRNAME, OnEditchangeVirname)
00053 ON_EN_CHANGE(IDC_ARGS, OnChangeArgs)
00054 ON_EN_CHANGE(IDC_VIREXTS, OnChangeVirexts)
00055 ON_BN_CLICKED(IDC_CHOOSEVIR, OnChoosevir)
00056 ON_BN_CLICKED(IDC_SHOWDLDDLG, OnShowdlddlg)
00057 ON_BN_CLICKED(IDC_DONTSAVELOGS, OnDontsavelogs)
00058 ON_BN_CLICKED(IDC_USEWC, OnUsewc)
00059 ON_EN_CHANGE(IDC_WC_SIZE, OnChangeWcSize)
00060
00061 END_MESSAGE_MAP()
00062
00063 BOOL CDownloaderProperties_ListPage::OnInitDialog()
00064 {
00065 CPropertyPage::OnInitDialog();
00066
00067 CSpinButtonCtrl *pSpin = (CSpinButtonCtrl*) GetDlgItem (IDC_WC_SPIN);
00068 pSpin->SetRange (1, UD_MAXVAL);
00069
00070
00071 m_wndWhenDel.AddString (LS (L_ASK));
00072 m_wndWhenDel.AddString (LS (L_DONTDELFILE));
00073 m_wndWhenDel.AddString (LS (L_DELFILE));
00074
00075 m_wndWhenDel.SetCurSel (_DldsMgr.m_enDDR);
00076
00077 CheckDlgButton (IDC_DONTSAVELOGS, _App.DontSaveLogs () ? BST_CHECKED : BST_UNCHECKED);
00078
00079 CheckDlgButton (IDC_AUTODEL, _DldsMgr.m_bAutoDelCompleted ? BST_CHECKED : BST_UNCHECKED);
00080 CheckDlgButton (IDC_DETAILEDLOG, _DldsMgr.m_bDetLog ? BST_CHECKED : BST_UNCHECKED);
00081
00082 CheckDlgButton (IDC_SIZEINBYTES, _pwndDownloads->m_wndDownloads.m_tasks.m_bSizesInBytes ? BST_CHECKED : BST_UNCHECKED);
00083
00084 AvirToDlg ();
00085
00086 CheckDlgButton (IDC_SHOWDLDDLG, _App.DownloadDialog_Use () ? BST_CHECKED : BST_UNCHECKED);
00087
00088 DWORD dw = _App.FileWriteCacheSize () / 1024 / 1024;
00089 CheckDlgButton (IDC_USEWC, dw ? BST_CHECKED : BST_UNCHECKED);
00090 SetDlgItemInt (IDC_WC_SIZE, dw ? dw : 1, FALSE);
00091
00092 ApplyLanguage ();
00093
00094 UpdateEnabled ();
00095
00096 return TRUE;
00097 }
00098
00099 void CDownloaderProperties_ListPage::OnSelchangeWhendel()
00100 {
00101 SetModified ();
00102 }
00103
00104 void CDownloaderProperties_ListPage::OnAutodel()
00105 {
00106 SetModified ();
00107 }
00108
00109 BOOL CDownloaderProperties_ListPage::OnApply()
00110 {
00111 if (FALSE == DlgToVir ())
00112 return FALSE;
00113
00114 _DldsMgr.m_enDDR = (fsDeleteDownloadReaction) m_wndWhenDel.GetCurSel ();
00115 _DldsMgr.m_bAutoDelCompleted = IsDlgButtonChecked (IDC_AUTODEL) == BST_CHECKED;
00116 _DldsMgr.UseDetailedLog (IsDlgButtonChecked (IDC_DETAILEDLOG) == BST_CHECKED);
00117 BOOL bSIB = IsDlgButtonChecked (IDC_SIZEINBYTES) == BST_CHECKED;
00118 if (bSIB != _pwndDownloads->m_wndDownloads.m_tasks.m_bSizesInBytes)
00119 {
00120 _pwndDownloads->m_wndDownloads.m_tasks.m_bSizesInBytes = bSIB;
00121 _pwndDownloads->m_wndDownloads.m_tasks.OnForceUpdate ();
00122 _pwndDownloads->m_wndDownloads.m_info.m_bt.UpdateStat ();
00123 }
00124
00125 _App.DontSaveLogs (IsDlgButtonChecked (IDC_DONTSAVELOGS) == BST_CHECKED);
00126
00127 BOOL bShow = IsDlgButtonChecked (IDC_SHOWDLDDLG) == BST_CHECKED;
00128 if (!bShow != !_App.DownloadDialog_Use ())
00129 {
00130 _App.DownloadDialog_Use (bShow);
00131 if (bShow)
00132 _App.DownloadDialog_DontAskOnHide (FALSE);
00133 }
00134
00135 DWORD dw = 0;
00136 if (IsDlgButtonChecked (IDC_USEWC) == BST_CHECKED)
00137 dw = GetDlgItemInt (IDC_WC_SIZE, NULL, FALSE) * 1024 * 1024;
00138 _App.FileWriteCacheSize (dw);
00139
00140 return CPropertyPage::OnApply();
00141 }
00142
00143 void CDownloaderProperties_ListPage::OnContextMenu(CWnd* , CPoint point)
00144 {
00145 PrepareCHMgr (point);
00146 _CHMgr.ShowMenu ();
00147 }
00148
00149 void CDownloaderProperties_ListPage::OnWhatisthis()
00150 {
00151 _CHMgr.OnWT ();
00152 }
00153
00154 void CDownloaderProperties_ListPage::ApplyLanguage()
00155 {
00156 fsDlgLngInfo lnginfo [] = {
00157 fsDlgLngInfo (IDC__LISTOFDLDS, L_LISTOFDLDS),
00158 fsDlgLngInfo (IDC__WHENDEL, L_WHENDEL),
00159 fsDlgLngInfo (IDC_AUTODEL, L_AUTODEL),
00160 fsDlgLngInfo (IDC_DETAILEDLOG, L_DETAILEDLOG),
00161 fsDlgLngInfo (IDC_SIZEINBYTES, L_SHOWSIZESINBYTES),
00162 fsDlgLngInfo (IDC_VIRCHECK, L_PERFVIRCHECK),
00163 fsDlgLngInfo (IDC__ARGS, L_DLGARGUMENTS),
00164 fsDlgLngInfo (IDC__EXTS, L_DLGEXTS),
00165 fsDlgLngInfo (IDC_DONTSAVELOGS, L_DONTSAVELOGS),
00166 fsDlgLngInfo (IDC_SHOWDLDDLG, L_SHOWDLDDLG),
00167 fsDlgLngInfo (IDC_USEWC, L_USEWRITECACHE),
00168 fsDlgLngInfo (IDC__WC_MB, L_MB),
00169 };
00170
00171 _LngMgr.ApplyLanguage (this, lnginfo, sizeof (lnginfo) / sizeof (fsDlgLngInfo), 0);
00172 }
00173
00174 BOOL CDownloaderProperties_ListPage::OnHelpInfo(HELPINFO* pHelpInfo)
00175 {
00176 RECT rc;
00177 CWnd *pItem = GetDlgItem (pHelpInfo->iCtrlId);
00178 if (pItem == NULL)
00179 return TRUE;
00180 pItem->GetWindowRect (&rc);
00181 if (PtInRect (&rc, pHelpInfo->MousePos) == FALSE)
00182 {
00183 pHelpInfo->MousePos.x = rc.left + (rc.right - rc.left) / 2;
00184 pHelpInfo->MousePos.y = rc.top + (rc.bottom - rc.top) / 2;
00185 }
00186 PrepareCHMgr (pHelpInfo->MousePos);
00187 _CHMgr.OnWT ();
00188 return TRUE;
00189 }
00190
00191 void CDownloaderProperties_ListPage::PrepareCHMgr(CPoint point)
00192 {
00193 fsCtrlContextHelp aCH1 [] = {
00194 fsCtrlContextHelp (IDC__WHENDEL, LS (L_WHENDELHERE)),
00195 fsCtrlContextHelp (IDC_WHENDEL, LS (L_WHENDELHERE)),
00196 fsCtrlContextHelp (IDC_AUTODEL, LS (L_AUTODELHERE)),
00197 fsCtrlContextHelp (IDC_DETAILEDLOG, LS (L_DETAILEDLOGHERE)),
00198 fsCtrlContextHelp (IDC_SIZEINBYTES, LS (L_SIZEINBYTESHERE)),
00199 fsCtrlContextHelp (IDC_VIRCHECK, LS (L_VIRCHECKHERE)),
00200 fsCtrlContextHelp (IDC_VIRNAME, LS (L_VIRNAMEHERE)),
00201 fsCtrlContextHelp (IDC__ARGS, LS (L_VIRARGSHERE)),
00202 fsCtrlContextHelp (IDC_ARGS, LS (L_VIRARGSHERE)),
00203 fsCtrlContextHelp (IDC__EXTS, LS (L_VIREXTSHERE)),
00204 fsCtrlContextHelp (IDC_VIREXTS, LS (L_VIREXTSHERE)),
00205 fsCtrlContextHelp (IDC_DONTSAVELOGS, LS (L_DONTSAVELOGS_HERE)),
00206 fsCtrlContextHelp (IDC_SHOWDLDDLG, LS (L_SHOWDLDDLG_HERE)),
00207 fsCtrlContextHelp (IDC_USEWC, LS (L_USEWRITECACHE_HERE)),
00208 fsCtrlContextHelp (IDC_WC_SIZE, LS (L_USEWRITECACHE_HERE)),
00209 fsCtrlContextHelp (IDC__WC_MB, LS (L_USEWRITECACHE_HERE)),
00210 };
00211
00212 static fsCtrlContextHelp aCH [sizeof (aCH1) / sizeof (fsCtrlContextHelp)];
00213 CopyMemory (aCH, aCH1, sizeof (aCH));
00214
00215 _CHMgr.PrepareContextMenu (this, point, aCH, sizeof (aCH) / sizeof (fsCtrlContextHelp));
00216 }
00217
00218 void CDownloaderProperties_ListPage::OnDetailedlog()
00219 {
00220 SetModified ();
00221 }
00222
00223 void CDownloaderProperties_ListPage::OnSizeinbytes()
00224 {
00225 SetModified ();
00226 }
00227
00228 void CDownloaderProperties_ListPage::OnVircheck()
00229 {
00230 SetModified ();
00231 UpdateEnabled ();
00232 }
00233
00234 LPCSTR _ppszAvirs [] = {
00235
00236 "avgw.exe",
00237 "avscan.exe",
00238 "kav.exe",
00239 "avp32.exe",
00240 "drweb32w.exe",
00241 "wfindv32.exe",
00242 "clamwin.exe",
00243 "f-prot.exe",
00244 "ibmasn.exe",
00245 "ibmavsp.exe",
00246 "im.exe",
00247 "scan95.exe",
00248 "scan32.exe",
00249 "scan.exe",
00250 "nod32.exe",
00251 "navw32.exe",
00252 "n32scan.exe",
00253 "n32scanw.exe",
00254 "navwnt.exe",
00255 "stop.exe",
00256 };
00257
00258 LPCSTR _ppszAvirArgs [] = {
00259 "/SE %file%",
00260 "/GUIMODE=1 /PATH=%file%",
00261 "%file% /silent /wait /minimize",
00262 "%file% /s /n /q",
00263 "%file% /AR /UP /QU /FM /HA",
00264 "%file%",
00265 "--mode=scanner --path=%file% --close",
00266 "/NOBOOT /NOMEM /LIST %file%",
00267 "-nlog -nmbr %file%",
00268 "-nlog -nmbr %file%",
00269 "/N /UN /B /VL /CF=%file%",
00270 "%file% /autoscan /nosplash",
00271 "%file% /autoscan /nosplash",
00272 "/nomem /all %file%",
00273 "%file% /quit+ /arch+ /pack+ /adware /prompt",
00274 "%file% /s",
00275 "%file% /s",
00276 "%file% /s",
00277 "%file% /s",
00278 "/NOAUTO /UPDATE /QUITAFTERSCAN %file%",
00279 };
00280
00281 LPCSTR _ppszAvirNames [] = {
00282 "AVG Free Antivirus",
00283 "Avira",
00284 "AVP, Kapersky Antivirus (\"kav.exe\")",
00285 "AVP, Kapersky Antivirus (\"avp32.exe\")",
00286 "DrWeb for Windows",
00287 "Dr. Solomon's FindVirus",
00288 "Clamwin",
00289 "F-secure",
00290 "IBM Antivirus (\"ibmasn.exe\")",
00291 "IBM Antivirus (\"ibmavsp.exe\")",
00292 "Integrity Master",
00293 "McAfee Virus Scan (\"scan95.exe\")",
00294 "McAfee Virus Scan (\"scan32.exe\")",
00295 "McAfee Virus Scan (\"scan.exe\")",
00296 "NOD32",
00297 "Norton Antivirus (\"navw32.exe\")",
00298 "Norton Antivirus (\"n32scan.exe\")",
00299 "Norton Antivirus (\"n32scanw.exe\")",
00300 "Norton Antivirus (\"navwnt.exe\")",
00301 "Stop!",
00302 };
00303
00304 void CDownloaderProperties_ListPage::OnSelchangeVirname()
00305 {
00306 SetDlgItemText (IDC_ARGS, _ppszAvirArgs [m_wndVirName.GetCurSel ()]);
00307 SetModified ();
00308 }
00309
00310 void CDownloaderProperties_ListPage::OnEditchangeVirname()
00311 {
00312 SetModified ();
00313 }
00314
00315 void CDownloaderProperties_ListPage::OnChangeArgs()
00316 {
00317 SetModified ();
00318 }
00319
00320 void CDownloaderProperties_ListPage::OnChangeVirexts()
00321 {
00322 SetModified ();
00323 }
00324
00325 void CDownloaderProperties_ListPage::UpdateEnabled()
00326 {
00327 BOOL b = IsDlgButtonChecked (IDC_VIRCHECK) == BST_CHECKED;
00328 UINT aIDs [] = {IDC__EXTS, IDC_VIREXTS};
00329
00330 for (int i = 0; i < sizeof (aIDs) / sizeof (UINT); i++)
00331 GetDlgItem (aIDs [i])->EnableWindow (b);
00332
00333 b = IsDlgButtonChecked (IDC_USEWC) == BST_CHECKED;
00334 UINT aIDs2 [] = {IDC_WC_SIZE, IDC_WC_SPIN, IDC__WC_MB};
00335 for (i = 0; i < sizeof (aIDs2) / sizeof (UINT); i++)
00336 GetDlgItem (aIDs2 [i])->EnableWindow (b);
00337 }
00338
00339 void CDownloaderProperties_ListPage::AvirToDlg()
00340 {
00341 CheckDlgButton (IDC_VIRCHECK, _DldsMgr.m_bVirCheck ? BST_CHECKED : BST_UNCHECKED);
00342
00343 CString strVirName = _DldsMgr.m_strVirName;
00344
00345
00346 for (int i = 0; i < sizeof (_ppszAvirNames) / sizeof (LPCSTR); i++)
00347 m_wndVirName.AddString (_ppszAvirNames [i]);
00348
00349 m_wndVirName.SetWindowText (_DldsMgr.m_strVirName);
00350
00351 for (i = 0; i < sizeof (_ppszAvirs) / sizeof (LPCSTR); i++)
00352 {
00353 if (strVirName.CompareNoCase (_ppszAvirs [i]) == 0)
00354 {
00355 m_wndVirName.SetCurSel (i);
00356 break;
00357 }
00358 }
00359
00360 GetDlgItem (IDC_ARGS)->SetWindowText (_DldsMgr.m_strVirArgs);
00361 GetDlgItem (IDC_VIREXTS)->SetWindowText (_DldsMgr.m_strVirExts);
00362 }
00363
00364 BOOL CDownloaderProperties_ListPage::DlgToVir()
00365 {
00366 CString strVir;
00367 m_wndVirName.GetWindowText (strVir);
00368
00369 BOOL bVirCheck = IsDlgButtonChecked (IDC_VIRCHECK) == BST_CHECKED;
00370
00371 if (strVir == "")
00372 {
00373 if (bVirCheck)
00374 {
00375 MessageBox (LS (L_ENTERAVIRNAME), LS (L_INPERR), MB_ICONEXCLAMATION);
00376 m_wndVirName.SetFocus ();
00377 return FALSE;
00378 }
00379
00380 _DldsMgr.m_bVirCheck = FALSE;
00381 _DldsMgr.m_strVirName = "";
00382 return TRUE;
00383 }
00384
00385 BOOL bPredefined = FALSE;
00386
00387
00388 for (int i = 0; i < sizeof (_ppszAvirNames) / sizeof (LPCSTR); i++)
00389 {
00390 if (strVir.CompareNoCase (_ppszAvirNames [i]) == 0)
00391 {
00392 strVir = _ppszAvirs [i];
00393 bPredefined = TRUE;
00394 break;
00395 }
00396 }
00397
00398 if (bPredefined)
00399 {
00400 bool bFound = false;
00401
00402 bFound = DWORD (-1) != GetFileAttributes (vmsRegisteredApp::GetFullPath (strVir));
00403
00404 if (bFound == false) {
00405 MessageBox (LS (L_FAILEDTOFOUNDTHISAVIRTRYSPECIFYMANUALLY), LS (L_INPERR), MB_ICONEXCLAMATION);
00406 PostMessage (WM_COMMAND, IDC_CHOOSEVIR);
00407 return FALSE;
00408 }
00409 }
00410 else if (GetFileAttributes (strVir) == DWORD (-1))
00411 {
00412 MessageBox (LS (L_NAMEISINVALID), LS (L_INPERR), MB_ICONEXCLAMATION);
00413 m_wndVirName.SetFocus ();
00414 return FALSE;
00415 }
00416
00417 CString strArgs, strExts;
00418 GetDlgItemText (IDC_ARGS, strArgs);
00419 GetDlgItemText (IDC_VIREXTS, strExts);
00420
00421 if (strArgs.Find ("%file%", 0) == -1)
00422 {
00423 CString str = LS (L_ARGSHAVNTFILEMACRO);
00424 str += "\n\n"; str += LS (L_CONTINUEANYWAY);
00425 if (IDNO == MessageBox (str, LS (L_WARNING), MB_ICONEXCLAMATION | MB_YESNO))
00426 {
00427 GetDlgItem (IDC_ARGS)->SetFocus ();
00428 return FALSE;
00429 }
00430 }
00431
00432 if (strExts == "" && bVirCheck)
00433 {
00434 MessageBox (LS (L_ENTEREXTS), LS (L_INPERR), MB_ICONEXCLAMATION);
00435 GetDlgItem (IDC_VIREXTS)->SetFocus ();
00436 return FALSE;
00437 }
00438
00439 _DldsMgr.m_bVirCheck = TRUE;
00440 _DldsMgr.m_strVirName = strVir;
00441 _DldsMgr.m_strVirArgs = strArgs;
00442 _DldsMgr.m_strVirExts = strExts;
00443
00444 _DldsMgr.m_bVirCheck = bVirCheck;
00445
00446 return TRUE;
00447 }
00448
00449 void CDownloaderProperties_ListPage::OnChoosevir()
00450 {
00451 CString strFilter;
00452 strFilter.Format ("%s (*.exe, *.com)|*.exe;*.com||", LS (L_APPLICATIONS));
00453
00454 CFileDialog dlg (TRUE, "exe", NULL, OFN_HIDEREADONLY|OFN_NOCHANGEDIR, strFilter, this);
00455 dlg.DoModal ();
00456 m_wndVirName.SetWindowText (dlg.GetPathName ());
00457 SetModified ();
00458 }
00459
00460 void CDownloaderProperties_ListPage::OnShowdlddlg()
00461 {
00462 SetModified ();
00463 }
00464
00465 void CDownloaderProperties_ListPage::OnDontsavelogs()
00466 {
00467 SetModified ();
00468 }
00469
00470 void CDownloaderProperties_ListPage::OnUsewc()
00471 {
00472 UpdateEnabled ();
00473 SetModified ();
00474 }
00475
00476 void CDownloaderProperties_ListPage::OnChangeWcSize()
00477 {
00478 SetModified ();
00479 }