summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGeorge Hazan <george.hazan@gmail.com>2023-07-17 22:38:24 +0300
committerGeorge Hazan <george.hazan@gmail.com>2023-07-17 22:38:24 +0300
commit728d102e547378a2d2baec15c473ab0ddc9ea0dc (patch)
treea1763b2f5f0a814f8726fa0e5fc556686cfdd989 /src
parent28abd66a73d2ae187b86a9b47ea45905d63e0aff (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.rc84
-rw-r--r--src/mir_app/src/file.cpp7
-rw-r--r--src/mir_app/src/file.h3
-rw-r--r--src/mir_app/src/fileopts.cpp206
-rw-r--r--src/mir_app/src/filerecvdlg.cpp10
-rw-r--r--src/mir_app/src/filexferdlg.cpp51
-rw-r--r--src/mir_app/src/resource.h13
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