diff options
author | George Hazan <george.hazan@gmail.com> | 2023-07-17 22:38:24 +0300 |
---|---|---|
committer | George Hazan <george.hazan@gmail.com> | 2023-07-17 22:38:24 +0300 |
commit | 728d102e547378a2d2baec15c473ab0ddc9ea0dc (patch) | |
tree | a1763b2f5f0a814f8726fa0e5fc556686cfdd989 /src | |
parent | 28abd66a73d2ae187b86a9b47ea45905d63e0aff (diff) |
File transfer options not to use g_plugin.* functions anymore, because there's no more StdFile
Diffstat (limited to 'src')
-rw-r--r-- | src/mir_app/res/resource.rc | 84 | ||||
-rw-r--r-- | src/mir_app/src/file.cpp | 7 | ||||
-rw-r--r-- | src/mir_app/src/file.h | 3 | ||||
-rw-r--r-- | src/mir_app/src/fileopts.cpp | 206 | ||||
-rw-r--r-- | src/mir_app/src/filerecvdlg.cpp | 10 | ||||
-rw-r--r-- | src/mir_app/src/filexferdlg.cpp | 51 | ||||
-rw-r--r-- | src/mir_app/src/resource.h | 13 |
7 files changed, 219 insertions, 155 deletions
diff --git a/src/mir_app/res/resource.rc b/src/mir_app/res/resource.rc index 301cd47f9f..00ae85f211 100644 --- a/src/mir_app/res/resource.rc +++ b/src/mir_app/res/resource.rc @@ -815,13 +815,11 @@ EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
GROUPBOX "Default settings for known event types",IDC_STATIC,7,5,293,153
-
CONTROL "Window",IDC_ICON1,"MButtonClass",WS_TABSTOP,109,13,16,16,WS_EX_NOACTIVATE | 0x10000000L
CONTROL "Popup",IDC_ICON2,"MButtonClass",WS_TABSTOP,149,13,16,16,WS_EX_NOACTIVATE | 0x10000000L
CONTROL "Tray",IDC_ICON3,"MButtonClass",WS_TABSTOP,189,13,16,16,WS_EX_NOACTIVATE | 0x10000000L
CONTROL "Sound",IDC_ICON4,"MButtonClass",WS_TABSTOP,229,13,16,16,WS_EX_NOACTIVATE | 0x10000000L
CONTROL "Log to file",IDC_ICON5,"MButtonClass",WS_TABSTOP,269,13,16,16,WS_EX_NOACTIVATE | 0x10000000L
-
LTEXT "Actions",IDC_STATIC,22,28,80,10
LTEXT "Messages",IDC_STATIC,22,38,80,10
LTEXT "Nick changes",IDC_STATIC,22,48,80,10
@@ -834,7 +832,6 @@ BEGIN LTEXT "User kicks",IDC_STATIC,22,118,80,10
LTEXT "Notices",IDC_STATIC,22,128,80,10
LTEXT "Highlight event",IDC_STATIC,22,138,80,10
-
CONTROL "",IDC_1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,113,28,21,10
CONTROL "",IDC_2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,113,38,21,10
CONTROL "",IDC_3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,113,48,21,10
@@ -1125,44 +1122,55 @@ FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN
END
-IDD_OPT_FILETRANSFER DIALOGEX 0, 0, 313, 243
+IDD_OPT_FILEGENERAL DIALOGEX 0, 0, 313, 243
STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
EXSTYLE WS_EX_CONTROLPARENT
FONT 8, "MS Shell Dlg", 0, 0, 0x1
BEGIN
- GROUPBOX "Receiving files",IDC_STATIC,0,0,313,99
- LTEXT "Received files folder:",IDC_STATIC,8,15,82,8
- EDITTEXT IDC_FILEDIR,92,13,190,12,ES_AUTOHSCROLL
+ GROUPBOX "Receiving files",IDC_STATIC,5,2,302,131
+ LTEXT "Received files folder:",IDC_STATIC,12,15,82,8
+ EDITTEXT IDC_FILEDIR,95,13,190,12,ES_AUTOHSCROLL
PUSHBUTTON "...",IDC_FILEDIRBROWSE,287,12,15,13
- LTEXT "Variables allowed: %userid%, %nick%, %proto%, %miranda_path%, %userprofile%",IDC_STATIC,8,26,294,11,WS_DISABLED
+ LTEXT "Variables allowed: %userid%, %nick%, %proto%, %miranda_path%, %userprofile%",IDC_STATIC,12,26,291,11,WS_DISABLED
CONTROL "Auto-accept incoming files from people on my contact list",IDC_AUTOACCEPT,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,36,294,10
- CONTROL "Minimize the file transfer window",IDC_AUTOMIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,48,285,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,36,287,10
+ CONTROL "Minimize the file transfer window",IDC_AUTOMIN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,20,48,279,10
CONTROL "Close window when transfer completes",IDC_AUTOCLOSE,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,60,294,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,60,289,10
CONTROL "Clear completed transfers on window closing",IDC_AUTOCLEAR,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,72,294,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,72,289,10
CONTROL "Sort file transfers in the reverse order",IDC_REVERSE_ORDER,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,84,286,10
- GROUPBOX "Virus scanner",IDC_VIRUSSCANNERGROUP,0,100,313,93
- LTEXT "Scan files:",IDC_STATIC,8,112,43,9,SS_CENTERIMAGE
- CONTROL "Never, do not use virus scanning",IDC_NOSCANNER,"Button",BS_AUTORADIOBUTTON,52,112,250,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,84,287,10
+ LTEXT "You will always be asked about files from people not on your contact list",IDC_STATIC,13,117,296,10
+ LTEXT "If incoming files already exist",IDC_STATIC,14,102,172,8
+ COMBOBOX IDC_FILEEXISTS,193,100,100,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ GROUPBOX "Offline files",IDC_STATIC,5,134,302,43
+ CONTROL "Download offline files automatically",IDC_OFFLINE_AUTO,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,148,288,10
+ RTEXT "Only if their size is less than",IDC_STATIC,12,162,153,8
+ EDITTEXT IDC_OFFLINE_AUTOSIZE,169,160,40,12,ES_AUTOHSCROLL
+ LTEXT "KBytes (0 - always)",IDC_STATIC,212,162,91,8
+ CONTROL "",IDC_OFFLINE_AUTOSIZE_SPIN,"msctls_updown32",UDS_ARROWKEYS,198,159,11,14
+END
+
+IDD_OPT_FILESECURITY DIALOGEX 0, 0, 313, 243
+STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD
+EXSTYLE WS_EX_CONTROLPARENT
+FONT 8, "MS Shell Dlg", 0, 0, 0x1
+BEGIN
+ GROUPBOX "Virus scanner",IDC_STATIC,0,1,313,93
+ LTEXT "Scan files:",IDC_STATIC,8,13,43,9,SS_CENTERIMAGE
+ CONTROL "Never, do not use virus scanning",IDC_NOSCANNER,"Button",BS_AUTORADIOBUTTON,52,13,250,10
CONTROL "When all files have been downloaded",IDC_SCANAFTERDL,
- "Button",BS_AUTORADIOBUTTON,52,124,250,10
+ "Button",BS_AUTORADIOBUTTON,52,25,250,10
CONTROL "As each file finishes downloading",IDC_SCANDURINGDL,
- "Button",BS_AUTORADIOBUTTON,52,136,250,10
- LTEXT "Command line:",IDC_ST_CMDLINE,7,152,62,8
- COMBOBOX IDC_SCANCMDLINE,70,151,213,71,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
- PUSHBUTTON "...",IDC_SCANCMDLINEBROWSE,287,151,15,13
- LTEXT "%f will be replaced by the file or folder name to be scanned",IDC_ST_CMDLINEHELP,70,165,232,8
+ "Button",BS_AUTORADIOBUTTON,52,37,250,10
+ LTEXT "Command line:",IDC_ST_CMDLINE,7,53,62,8
+ COMBOBOX IDC_SCANCMDLINE,70,52,213,71,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP
+ PUSHBUTTON "...",IDC_SCANCMDLINEBROWSE,287,52,15,13
+ LTEXT "%f will be replaced by the file or folder name to be scanned",IDC_ST_CMDLINEHELP,70,66,232,8
CONTROL "Warn me before opening a file that has not been scanned",IDC_WARNBEFOREOPENING,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,178,294,10
- GROUPBOX "If incoming files already exist",IDC_STATIC,0,197,313,41
- CONTROL "Ask me",IDC_ASK,"Button",BS_AUTORADIOBUTTON,8,210,73,10
- CONTROL "Resume",IDC_RESUME,"Button",BS_AUTORADIOBUTTON,82,210,125,10
- CONTROL "Overwrite",IDC_OVERWRITE,"Button",BS_AUTORADIOBUTTON,8,222,73,10
- CONTROL "Rename (append "" (1)"", etc.)",IDC_RENAME,"Button",BS_AUTORADIOBUTTON,82,222,125,10
- LTEXT "You will always be asked about files from people not on your contact list",IDC_STATIC,212,208,90,24
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,79,294,10
END
@@ -1406,6 +1414,14 @@ BEGIN BEGIN
BOTTOMMARGIN, 194
END
+
+ IDD_OPT_FILEGENERAL, DIALOG
+ BEGIN
+ END
+
+ IDD_OPT_FILESECURITY, DIALOG
+ BEGIN
+ END
END
#endif // APSTUDIO_INVOKED
@@ -1818,6 +1834,16 @@ BEGIN 0
END
+IDD_OPT_FILESECURITY AFX_DIALOG_LAYOUT
+BEGIN
+ 0
+END
+
+IDD_OPT_FILEGENERAL AFX_DIALOG_LAYOUT
+BEGIN
+ 0
+END
+
#endif // English (United States) resources
/////////////////////////////////////////////////////////////////////////////
diff --git a/src/mir_app/src/file.cpp b/src/mir_app/src/file.cpp index a53d57f5a8..b72149de8e 100644 --- a/src/mir_app/src/file.cpp +++ b/src/mir_app/src/file.cpp @@ -36,6 +36,13 @@ CMOption<bool> File::bAutoClear(SRFILEMODULE, "AutoClear", true); CMOption<bool> File::bAutoClose(SRFILEMODULE, "AutoClose", false); CMOption<bool> File::bAutoAccept(SRFILEMODULE, "AutoAccept", false); CMOption<bool> File::bReverseOrder(SRFILEMODULE, "ReverseOrder", false); +CMOption<bool> File::bWarnBeforeOpening(SRFILEMODULE, "WarnBeforeOpening", true); + +CMOption<uint8_t> File::iUseScanner(SRFILEMODULE, "UseScanner", VIRUSSCAN_DISABLE); +CMOption<uint8_t> File::iIfExists(SRFILEMODULE, "IfExists", FILERESUME_ASK); + +CMOption<wchar_t*> File::wszSaveDir(SRFILEMODULE, "RecvFilesDirAdv", L""); +CMOption<wchar_t*> File::wszScanCmdLine(SRFILEMODULE, "ScanCmdLine", L""); static HGENMENU hSRFileMenuItem; diff --git a/src/mir_app/src/file.h b/src/mir_app/src/file.h index f2d90e12ca..b807c4bc5b 100644 --- a/src/mir_app/src/file.h +++ b/src/mir_app/src/file.h @@ -137,4 +137,7 @@ extern MWindowList g_hFileWindows; namespace File { extern CMOption<bool> bAutoMin, bAutoClear, bAutoClose, bAutoAccept, bReverseOrder; + extern CMOption<bool> bWarnBeforeOpening; + extern CMOption<uint8_t> iIfExists, iUseScanner; + extern CMOption<wchar_t*> wszSaveDir, wszScanCmdLine; }; diff --git a/src/mir_app/src/fileopts.cpp b/src/mir_app/src/fileopts.cpp index b511bd6c79..c8bca065e2 100644 --- a/src/mir_app/src/fileopts.cpp +++ b/src/mir_app/src/fileopts.cpp @@ -24,58 +24,26 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" #include "file.h" -#define VSCAN_MCAFEE 1 -#define VSCAN_DRSOLOMON 2 -#define VSCAN_NORTON 3 -#define VSCAN_CA 4 - -struct { - const wchar_t *szProductName; - const wchar_t *szExeRegPath; - const wchar_t *szExeRegValue; - const wchar_t *szCommandLine; -} -static virusScanners[] = -{ - {L"Network Associates/McAfee VirusScan", L"SOFTWARE\\McAfee\\VirusScan", L"Scan32EXE", L"\"%s\" %%f /nosplash /comp /autoscan /autoexit /noboot"}, - {L"Dr Solomon's VirusScan (Network Associates)", L"SOFTWARE\\Network Associates\\TVD\\VirusScan\\AVConsol\\General", L"szScannerExe", L"\"%s\" %%f /uinone /noboot /comp /prompt /autoexit"}, - {L"Norton AntiVirus", L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Navw32.exe", nullptr, L"\"%s\" %%f /b- /m- /s+ /noresults"}, - {L"Computer Associates/Inoculate IT", L"Software\\Antivirus", L"ImageFilename", L"\"%s\" %%f /display = progress /exit"}, - {L"Computer Associates eTrust", L"SOFTWARE\\ComputerAssociates\\Anti-Virus\\Resident", L"VetPath", L"\"%s\" %%f /display = progress /exit"}, - {L"Kaspersky Anti-Virus", L"SOFTWARE\\KasperskyLab\\Components\\101", L"EXEName", L"\"%s\" /S /Q %%f"}, - {L"Kaspersky Anti-Virus", L"SOFTWARE\\KasperskyLab\\SetupFolders", L"KAV8", L"\"%savp.exe\" SCAN %%f"}, - {L"Kaspersky Anti-Virus", L"SOFTWARE\\KasperskyLab\\SetupFolders", L"KAV9", L"\"%savp.exe\" SCAN %%f"}, - {L"AntiVir PersonalEdition Classic", L"SOFTWARE\\Avira\\AntiVir PersonalEdition Classic", L"Path", L"\"%savscan.exe\" /GUIMODE = 2 /PATH = \"%%f\""}, - {L"ESET NOD32 Antivirus", L"SOFTWARE\\ESET\\ESET Security\\CurrentVersion\\Info", L"InstallDir", L"\"%secls.exe\" /log-all /aind /no-boots /adware /sfx /unsafe /unwanted /heur /adv-heur /action = clean \"%%f\""}, -}; - #ifndef SHACF_FILESYS_DIRS #define SHACF_FILESYS_DIRS 0x00000020 #endif -class CFileOptsDlg : public CDlgBase +class CFileGeneralOptsDlg : public CDlgBase { - CCtrlButton btnFileDir, btnScanCmdLine; + CCtrlButton btnFileDir; CCtrlCheck chkAutoMin, chkAutoClear, chkAutoClose, chkAutoAccept, chkReverseOrder; - CCtrlCheck chkNoScanner, chkScanDuringDl, chkScanAfterDl; - CCtrlCombo cmbScanCmdLine; + CCtrlCombo cmbFileExists; public: - CFileOptsDlg() : - CDlgBase(g_plugin, IDD_OPT_FILETRANSFER), + CFileGeneralOptsDlg() : + CDlgBase(g_plugin, IDD_OPT_FILEGENERAL), btnFileDir(this, IDC_FILEDIRBROWSE), - btnScanCmdLine(this, IDC_SCANCMDLINEBROWSE), chkAutoMin(this, IDC_AUTOMIN), chkAutoClear(this, IDC_AUTOCLEAR), chkAutoClose(this, IDC_AUTOCLOSE), chkAutoAccept(this, IDC_AUTOACCEPT), - chkReverseOrder(this, IDC_REVERSE_ORDER), - - chkNoScanner(this, IDC_NOSCANNER), - chkScanAfterDl(this, IDC_SCANAFTERDL), - chkScanDuringDl(this, IDC_SCANDURINGDL), - - cmbScanCmdLine(this, IDC_SCANCMDLINE) + cmbFileExists(this, IDC_FILEEXISTS), + chkReverseOrder(this, IDC_REVERSE_ORDER) { CreateLink(chkAutoMin, File::bAutoMin); CreateLink(chkAutoClear, File::bAutoClear); @@ -83,79 +51,140 @@ public: CreateLink(chkAutoAccept, File::bAutoAccept); CreateLink(chkReverseOrder, File::bReverseOrder); - btnFileDir.OnClick = Callback(this, &CFileOptsDlg::onClick_FileDir); - btnScanCmdLine.OnClick = Callback(this, &CFileOptsDlg::onClick_ScanCmdLine); + btnFileDir.OnClick = Callback(this, &CFileGeneralOptsDlg::onClick_FileDir); - chkNoScanner.OnChange = Callback(this, &CFileOptsDlg::onChange_NoScanner); - chkAutoAccept.OnChange = Callback(this, &CFileOptsDlg::onChange_AutoAccept); - cmbScanCmdLine.OnSelChanged = Callback(this, &CFileOptsDlg::onSelChanged_Combo); + chkAutoAccept.OnChange = Callback(this, &CFileGeneralOptsDlg::onChange_AutoAccept); } bool OnInitDialog() override { SHAutoComplete(GetDlgItem(m_hwnd, IDC_FILEDIR), SHACF_FILESYS_DIRS); + cmbFileExists.AddString(TranslateT("Ask me"), 0); + cmbFileExists.AddString(TranslateT("Resume"), FILERESUME_RESUMEALL); + cmbFileExists.AddString(TranslateT("Overwrite"), FILERESUME_OVERWRITEALL); + cmbFileExists.AddString(TranslateT("Rename (append \" (1)\", etc.)"), FILERESUME_RENAMEALL); + cmbFileExists.SelectData(File::iIfExists); + wchar_t str[MAX_PATH]; GetContactReceivedFilesDir(NULL, str, _countof(str), FALSE); SetDlgItemText(m_hwnd, IDC_FILEDIR, str); + return true; + } + + bool OnApply() override + { + wchar_t str[512]; + GetDlgItemText(m_hwnd, IDC_FILEDIR, str, _countof(str)); + RemoveInvalidPathChars(str); + File::wszSaveDir = str; + + File::iIfExists = cmbFileExists.GetCurData(); + return TRUE; + } + + void onChange_AutoAccept(CCtrlCheck *) + { + chkAutoMin.Enable(chkAutoAccept.GetState()); + } + + void onClick_FileDir(CCtrlButton*) + { + wchar_t str[MAX_PATH]; + GetDlgItemText(m_hwnd, IDC_FILEDIR, str, _countof(str)); + if (BrowseForFolder(m_hwnd, str)) + SetDlgItemText(m_hwnd, IDC_FILEDIR, str); + } +}; + +///////////////////////////////////////////////////////////////////////////////////////// +// File security options + +#define VSCAN_MCAFEE 1 +#define VSCAN_DRSOLOMON 2 +#define VSCAN_NORTON 3 +#define VSCAN_CA 4 + +struct +{ + const wchar_t *szProductName; + const wchar_t *szExeRegPath; + const wchar_t *szExeRegValue; + const wchar_t *szCommandLine; +} +static virusScanners[] = +{ + { L"Network Associates/McAfee VirusScan", L"SOFTWARE\\McAfee\\VirusScan", L"Scan32EXE", L"\"%s\" %%f /nosplash /comp /autoscan /autoexit /noboot" }, + { L"Dr Solomon's VirusScan (Network Associates)", L"SOFTWARE\\Network Associates\\TVD\\VirusScan\\AVConsol\\General", L"szScannerExe", L"\"%s\" %%f /uinone /noboot /comp /prompt /autoexit" }, + { L"Norton AntiVirus", L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\Navw32.exe", nullptr, L"\"%s\" %%f /b- /m- /s+ /noresults" }, + { L"Computer Associates/Inoculate IT", L"Software\\Antivirus", L"ImageFilename", L"\"%s\" %%f /display = progress /exit" }, + { L"Computer Associates eTrust", L"SOFTWARE\\ComputerAssociates\\Anti-Virus\\Resident", L"VetPath", L"\"%s\" %%f /display = progress /exit" }, + { L"Kaspersky Anti-Virus", L"SOFTWARE\\KasperskyLab\\Components\\101", L"EXEName", L"\"%s\" /S /Q %%f" }, + { L"Kaspersky Anti-Virus", L"SOFTWARE\\KasperskyLab\\SetupFolders", L"KAV8", L"\"%savp.exe\" SCAN %%f" }, + { L"Kaspersky Anti-Virus", L"SOFTWARE\\KasperskyLab\\SetupFolders", L"KAV9", L"\"%savp.exe\" SCAN %%f" }, + { L"AntiVir PersonalEdition Classic", L"SOFTWARE\\Avira\\AntiVir PersonalEdition Classic", L"Path", L"\"%savscan.exe\" /GUIMODE = 2 /PATH = \"%%f\"" }, + { L"ESET NOD32 Antivirus", L"SOFTWARE\\ESET\\ESET Security\\CurrentVersion\\Info", L"InstallDir", L"\"%secls.exe\" /log-all /aind /no-boots /adware /sfx /unsafe /unwanted /heur /adv-heur /action = clean \"%%f\"" }, +}; - switch (g_plugin.getByte("UseScanner", VIRUSSCAN_DISABLE)) { +class CFileSecurityOptsDlg : public CDlgBase +{ + CCtrlButton btnScanCmdLine; + CCtrlCheck chkNoScanner, chkScanDuringDl, chkScanAfterDl, chkWarnBeforeOpening; + CCtrlCombo cmbScanCmdLine; + +public: + CFileSecurityOptsDlg() : + CDlgBase(g_plugin, IDD_OPT_FILESECURITY), + chkNoScanner(this, IDC_NOSCANNER), + chkScanAfterDl(this, IDC_SCANAFTERDL), + chkScanDuringDl(this, IDC_SCANDURINGDL), + cmbScanCmdLine(this, IDC_SCANCMDLINE), + btnScanCmdLine(this, IDC_SCANCMDLINEBROWSE), + chkWarnBeforeOpening(this, IDC_WARNBEFOREOPENING) + { + CreateLink(chkWarnBeforeOpening, File::bWarnBeforeOpening); + + btnScanCmdLine.OnClick = Callback(this, &CFileSecurityOptsDlg::onClick_ScanCmdLine); + + chkNoScanner.OnChange = Callback(this, &CFileSecurityOptsDlg::onChange_NoScanner); + + cmbScanCmdLine.OnSelChanged = Callback(this, &CFileSecurityOptsDlg::onSelChanged_Combo); + } + + bool OnInitDialog() override + { + switch (File::iUseScanner) { case VIRUSSCAN_AFTERDL: chkScanAfterDl.SetState(true); break; case VIRUSSCAN_DURINGDL: chkScanDuringDl.SetState(true); break; default: chkNoScanner.SetState(true); break; } - CheckDlgButton(m_hwnd, IDC_WARNBEFOREOPENING, g_plugin.getByte("WarnBeforeOpening", 1) ? BST_CHECKED : BST_UNCHECKED); for (int i = 0; i < _countof(virusScanners); i++) { wchar_t szScanExe[MAX_PATH]; if (SRFile_GetRegValue(HKEY_LOCAL_MACHINE, virusScanners[i].szExeRegPath, virusScanners[i].szExeRegValue, szScanExe, _countof(szScanExe))) cmbScanCmdLine.AddString(virusScanners[i].szProductName, i); } - + if (!cmbScanCmdLine.GetCount()) cmbScanCmdLine.AddString(L"", -1); - DBVARIANT dbv; - if (g_plugin.getWString("ScanCmdLine", &dbv) == 0) { - cmbScanCmdLine.SetText(dbv.pwszVal); - db_free(&dbv); + if (mir_wstrlen(File::wszScanCmdLine)) { + cmbScanCmdLine.SetText(File::wszScanCmdLine); } else if (cmbScanCmdLine.GetCount()) { cmbScanCmdLine.SetCurSel(0); onSelChanged_Combo(0); } - switch (g_plugin.getByte("IfExists", FILERESUME_ASK)) { - case FILERESUME_RESUMEALL: CheckDlgButton(m_hwnd, IDC_RESUME, BST_CHECKED); break; - case FILERESUME_OVERWRITEALL: CheckDlgButton(m_hwnd, IDC_OVERWRITE, BST_CHECKED); break; - case FILERESUME_RENAMEALL: CheckDlgButton(m_hwnd, IDC_RENAME, BST_CHECKED); break; - default: CheckDlgButton(m_hwnd, IDC_ASK, BST_CHECKED); break; - } - return true; } bool OnApply() override { - wchar_t str[512]; - GetDlgItemText(m_hwnd, IDC_FILEDIR, str, _countof(str)); - RemoveInvalidPathChars(str); - g_plugin.setWString("RecvFilesDirAdv", str); - - cmbScanCmdLine.GetText(str, _countof(str)); - g_plugin.setWString("ScanCmdLine", str); - - g_plugin.setByte("UseScanner", chkScanAfterDl.GetState() ? VIRUSSCAN_AFTERDL : (chkScanDuringDl.GetState() ? VIRUSSCAN_DURINGDL : VIRUSSCAN_DISABLE)); - g_plugin.setByte("WarnBeforeOpening", (uint8_t)IsDlgButtonChecked(m_hwnd, IDC_WARNBEFOREOPENING)); - g_plugin.setByte("IfExists", (uint8_t)(IsDlgButtonChecked(m_hwnd, IDC_ASK) ? FILERESUME_ASK : - (IsDlgButtonChecked(m_hwnd, IDC_RESUME) ? FILERESUME_RESUMEALL : - (IsDlgButtonChecked(m_hwnd, IDC_OVERWRITE) ? FILERESUME_OVERWRITEALL : FILERESUME_RENAMEALL)))); - return TRUE; - } + File::wszScanCmdLine = ptrW(cmbScanCmdLine.GetText()); - void onChange_AutoAccept(CCtrlCheck *) - { - chkAutoMin.Enable(chkAutoAccept.GetState()); + File::iUseScanner = chkScanAfterDl.GetState() ? VIRUSSCAN_AFTERDL : (chkScanDuringDl.GetState() ? VIRUSSCAN_DURINGDL : VIRUSSCAN_DISABLE); + return true; } void onChange_NoScanner(CCtrlCheck *) @@ -167,7 +196,7 @@ public: EnableWindow(GetDlgItem(m_hwnd, IDC_ST_CMDLINEHELP), bEnabled); } - void onSelChanged_Combo(CCtrlCombo*) + void onSelChanged_Combo(CCtrlCombo *) { int iScanner = cmbScanCmdLine.GetCurData(); if (iScanner >= _countof(virusScanners) || iScanner < 0) @@ -181,15 +210,7 @@ public: cmbScanCmdLine.SetText(str); } - void onClick_FileDir(CCtrlButton*) - { - wchar_t str[MAX_PATH]; - GetDlgItemText(m_hwnd, IDC_FILEDIR, str, _countof(str)); - if (BrowseForFolder(m_hwnd, str)) - SetDlgItemText(m_hwnd, IDC_FILEDIR, str); - } - - void onClick_ScanCmdLine(CCtrlButton*) + void onClick_ScanCmdLine(CCtrlButton *) { wchar_t str[MAX_PATH + 2]; cmbScanCmdLine.GetText(str, _countof(str)); @@ -228,14 +249,23 @@ public: } }; +///////////////////////////////////////////////////////////////////////////////////////// +// Module entry point + int SRFileOptInitialise(WPARAM wParam, LPARAM) { OPTIONSDIALOGPAGE odp = {}; + odp.flags = ODPF_BOLDGROUPS; odp.position = 900000000; odp.szTitle.a = LPGEN("File transfers"); odp.szGroup.a = LPGEN("Events"); - odp.pDialog = new CFileOptsDlg(); - odp.flags = ODPF_BOLDGROUPS; + + odp.szTab.a = LPGEN("General"); + odp.pDialog = new CFileGeneralOptsDlg(); + g_plugin.addOptions(wParam, &odp); + + odp.szTab.a = LPGEN("Security"); + odp.pDialog = new CFileSecurityOptsDlg(); g_plugin.addOptions(wParam, &odp); return 0; } diff --git a/src/mir_app/src/filerecvdlg.cpp b/src/mir_app/src/filerecvdlg.cpp index 7dfa5c8a41..e069b55b77 100644 --- a/src/mir_app/src/filerecvdlg.cpp +++ b/src/mir_app/src/filerecvdlg.cpp @@ -125,9 +125,8 @@ void GetContactReceivedFilesDir(MCONTACT hContact, wchar_t *szDir, int cchDir, B { wchar_t tszTemp[MAX_PATH]; - ptrW tszRecvPath(g_plugin.getWStringA("RecvFilesDirAdv")); - if (tszRecvPath) - wcsncpy_s(tszTemp, tszRecvPath, _TRUNCATE); + if (mir_wstrlen(File::wszSaveDir)) + wcsncpy_s(tszTemp, File::wszSaveDir, _TRUNCATE); else mir_snwprintf(tszTemp, L"%%mydocuments%%\\%s\\%%userid%%", TranslateT("My received files")); @@ -165,9 +164,8 @@ void GetReceivedFilesDir(wchar_t *szDir, int cchDir) { wchar_t tszTemp[MAX_PATH]; - ptrW tszRecvPath(g_plugin.getWStringA("RecvFilesDirAdv")); - if (tszRecvPath) - wcsncpy_s(tszTemp, tszRecvPath, _TRUNCATE); + if (mir_wstrlen(File::wszSaveDir)) + wcsncpy_s(tszTemp, File::wszSaveDir, _TRUNCATE); else mir_snwprintf(tszTemp, L"%%mydocuments%%\\%s\\%%userid%%", TranslateT("My received files")); diff --git a/src/mir_app/src/filexferdlg.cpp b/src/mir_app/src/filexferdlg.cpp index 9f6f042ef7..957afd243d 100644 --- a/src/mir_app/src/filexferdlg.cpp +++ b/src/mir_app/src/filexferdlg.cpp @@ -80,32 +80,29 @@ static void SetOpenFileButtonStyle(HWND hwndButton, int enabled) static void __cdecl RunVirusScannerThread(virusscanthreadstartinfo *info) { - DBVARIANT dbv; - if (!g_plugin.getWString("ScanCmdLine", &dbv)) { - if (dbv.pwszVal[0]) { - STARTUPINFO si = { 0 }; - si.cb = sizeof(si); - wchar_t *pszReplace = wcsstr(dbv.pwszVal, L"%f"); - wchar_t szCmdLine[768]; - if (pszReplace) { - if (info->szFile[mir_wstrlen(info->szFile) - 1] == '\\') - info->szFile[mir_wstrlen(info->szFile) - 1] = '\0'; - *pszReplace = 0; - mir_snwprintf(szCmdLine, L"%s\"%s\"%s", dbv.pwszVal, info->szFile, pszReplace + 2); - } - else - wcsncpy_s(szCmdLine, dbv.pwszVal, _TRUNCATE); - - PROCESS_INFORMATION pi; - if (CreateProcess(nullptr, szCmdLine, nullptr, nullptr, FALSE, 0, nullptr, nullptr, &si, &pi)) { - if (WaitForSingleObject(pi.hProcess, 3600 * 1000) == WAIT_OBJECT_0) - PostMessage(info->hwndReply, M_VIRUSSCANDONE, info->returnCode, 0); - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } + ptrW pwszScanLine(File::wszScanCmdLine); + if (mir_wstrlen(pwszScanLine)) { + STARTUPINFO si = { 0 }; + si.cb = sizeof(si); + wchar_t *pszReplace = wcsstr(pwszScanLine, L"%f"); + wchar_t szCmdLine[768]; + if (pszReplace) { + if (info->szFile[mir_wstrlen(info->szFile) - 1] == '\\') + info->szFile[mir_wstrlen(info->szFile) - 1] = '\0'; + *pszReplace = 0; + mir_snwprintf(szCmdLine, L"%s\"%s\"%s", pwszScanLine.get(), info->szFile, pszReplace + 2); + } + else wcsncpy_s(szCmdLine, pwszScanLine, _TRUNCATE); + + PROCESS_INFORMATION pi; + if (CreateProcess(nullptr, szCmdLine, nullptr, nullptr, FALSE, 0, nullptr, nullptr, &si, &pi)) { + if (WaitForSingleObject(pi.hProcess, 3600 * 1000) == WAIT_OBJECT_0) + PostMessage(info->hwndReply, M_VIRUSSCANDONE, info->returnCode, 0); + CloseHandle(pi.hProcess); + CloseHandle(pi.hThread); } - db_free(&dbv); } + mir_free(info->szFile); mir_free(info); } @@ -245,7 +242,7 @@ INT_PTR CALLBACK DlgProcFileTransfer(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR if (!Contact::OnList(dat->hContact)) dat->resumeBehaviour = FILERESUME_ASK; else - dat->resumeBehaviour = g_plugin.getByte("IfExists", FILERESUME_ASK); + dat->resumeBehaviour = File::iIfExists; SetFtStatus(hwndDlg, LPGENW("Waiting for connection..."), FTS_TEXT); } @@ -505,7 +502,7 @@ INT_PTR CALLBACK DlgProcFileTransfer(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR SetDlgItemTextA(hwndDlg, IDC_FILENAME, ""); if (dat->transferStatus.currentFileNumber == 1 && dat->transferStatus.totalFiles > 1 && !dat->send) SetOpenFileButtonStyle(GetDlgItem(hwndDlg, IDC_OPENFILE), 1); - if (dat->transferStatus.currentFileNumber != -1 && dat->files && !dat->send && g_plugin.getByte("UseScanner", VIRUSSCAN_DISABLE) == VIRUSSCAN_DURINGDL) { + if (dat->transferStatus.currentFileNumber != -1 && dat->files && !dat->send && File::iUseScanner == VIRUSSCAN_DURINGDL) { if (GetFileAttributes(dat->files[dat->transferStatus.currentFileNumber]) & FILE_ATTRIBUTE_DIRECTORY) PostMessage(hwndDlg, M_VIRUSSCANDONE, dat->transferStatus.currentFileNumber, 0); else { @@ -642,7 +639,7 @@ INT_PTR CALLBACK DlgProcFileTransfer(HWND hwndDlg, UINT msg, WPARAM wParam, LPAR LPGENW("Transfer completed, open folder."), FTS_OPEN); - int useScanner = g_plugin.getByte("UseScanner", VIRUSSCAN_DISABLE); + int useScanner = File::iUseScanner; if (useScanner != VIRUSSCAN_DISABLE) { auto *vstsi = (virusscanthreadstartinfo *)mir_alloc(sizeof(virusscanthreadstartinfo)); vstsi->hwndReply = hwndDlg; diff --git a/src/mir_app/src/resource.h b/src/mir_app/src/resource.h index 8e7469954b..1cd7434f37 100644 --- a/src/mir_app/src/resource.h +++ b/src/mir_app/src/resource.h @@ -131,8 +131,9 @@ #define IDD_OPT_NETLIB 246
#define IDD_NETLIBLOGOPTS 247
#define IDD_FILETRANSFERINFO 249
-#define IDD_OPT_FILETRANSFER 250
-#define IDD_FILEEXISTS 251
+#define IDD_OPT_FILEGENERAL 250
+#define IDD_OPT_FILESECURITY 251
+#define IDD_FILEEXISTS 253
#define IDD_DELETECONTACT 254
#define IDD_ADDCONTACT 257
#define IDD_OPT_CONTACT 261
@@ -504,8 +505,6 @@ #define IDC_SAVEAS 1513
#define IDC_AUTORENAME 1514
#define IDC_ASK 1516
-#define IDC_RENAME 1519
-#define IDC_VIRUSSCANNERGROUP 1520
#define IDC_HIDE 1534
#define IDC_TOPLINE 1535
#define IDC_MYHANDLE 1540
@@ -602,6 +601,10 @@ #define IDC_TREE 1753
#define IDC_BKG 1754
#define IDC_TEXT 1755
+#define IDC_FILEEXISTS 1755
+#define IDC_OFFLINE_AUTO 1756
+#define IDC_OFFLINE_AUTOSIZE 1757
+#define IDC_OFFLINE_AUTOSIZE_SPIN 1758
#define IDC_EFFECT_COLOUR_TEXT1 1853
#define IDC_EFFECT_COLOUR_SPIN1 1854
#define IDC_EXTRAORDER 1889
@@ -708,7 +711,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 336
#define _APS_NEXT_COMMAND_VALUE 40018
-#define _APS_NEXT_CONTROL_VALUE 1755
+#define _APS_NEXT_CONTROL_VALUE 1759
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
|