From e0d320c3b272bb21655bccfd26e4bd03fe69fd34 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 7 Mar 2019 13:28:16 +0300 Subject: fixes #1888 (DbAutobackuper: move "Disable popups" option to Popus section) --- plugins/Db_autobackups/res/db_autobackups.rc | 13 +++++------ plugins/Db_autobackups/src/backup.cpp | 5 ++-- plugins/Db_autobackups/src/main.cpp | 34 +++++++++++++++++++++++++--- plugins/Db_autobackups/src/options.cpp | 7 +----- plugins/Db_autobackups/src/resource.h | 1 - plugins/Db_autobackups/src/stdafx.h | 2 ++ plugins/Db_autobackups/src/version.h | 2 +- 7 files changed, 44 insertions(+), 20 deletions(-) (limited to 'plugins/Db_autobackups') diff --git a/plugins/Db_autobackups/res/db_autobackups.rc b/plugins/Db_autobackups/res/db_autobackups.rc index bb700851b8..ba0cbfab69 100644 --- a/plugins/Db_autobackups/res/db_autobackups.rc +++ b/plugins/Db_autobackups/res/db_autobackups.rc @@ -23,12 +23,12 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_DEFAULT // Dialog // -IDD_OPTIONS DIALOGEX 0, 0, 271, 241 +IDD_OPTIONS DIALOGEX 0, 0, 271, 229 STYLE DS_SETFONT | DS_FIXEDSYS | WS_CHILD EXSTYLE WS_EX_CONTROLPARENT FONT 8, "MS Shell Dlg", 0, 0, 0x1 BEGIN - GROUPBOX "Automatic backups",IDC_STATIC,6,4,258,226,WS_GROUP + GROUPBOX "Automatic backups",IDC_STATIC,6,4,258,215,WS_GROUP CONTROL "Disabled",IDC_RAD_DISABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,19,128,10 CONTROL "When Miranda starts",IDC_RAD_START,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,32,153,10 CONTROL "When Miranda exits",IDC_RAD_EXIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,45,156,10 @@ -48,10 +48,9 @@ BEGIN EDITTEXT IDC_FILEMASK,17,145,231,14,ES_AUTOHSCROLL CONTROL "Compress backup to zip-archive",IDC_CHK_USEZIP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,165,231,10 CONTROL "Backup profile folder",IDC_BACKUPPROFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,26,177,176,10 - CONTROL "Disable progress bar",IDC_CHK_NOPROG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,201,231,10 - CONTROL "Disable popups",IDC_CHK_NOPOPUP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,188,231,11 - CONTROL "Use CloudFile",IDC_CLOUDFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,213,105,10 - COMBOBOX IDC_CLOUDFILESEVICE,131,211,117,30,CBS_DROPDOWNLIST | CBS_SORT | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "Disable progress bar",IDC_CHK_NOPROG,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,191,231,10 + CONTROL "Use CloudFile",IDC_CLOUDFILE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,203,105,10 + COMBOBOX IDC_CLOUDFILESEVICE,131,201,117,30,CBS_DROPDOWNLIST | CBS_SORT | WS_DISABLED | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Backup NOW",IDC_BUT_NOW,173,19,75,14 END @@ -82,7 +81,7 @@ BEGIN VERTGUIDE, 193 VERTGUIDE, 248 TOPMARGIN, 4 - BOTTOMMARGIN, 230 + BOTTOMMARGIN, 219 END IDD_COPYPROGRESS, DIALOG diff --git a/plugins/Db_autobackups/src/backup.cpp b/plugins/Db_autobackups/src/backup.cpp index e36c994ea6..2d6eface9e 100644 --- a/plugins/Db_autobackups/src/backup.cpp +++ b/plugins/Db_autobackups/src/backup.cpp @@ -28,15 +28,16 @@ static LRESULT CALLBACK DlgProcPopup(HWND hWnd, UINT msg, WPARAM wParam, LPARAM static void ShowPopup(const wchar_t *ptszText, wchar_t *ptszHeader, wchar_t *ptszPath) { - POPUPDATAW ppd = { 0 }; + if (g_plugin.bTerminated) + return; + POPUPDATAW ppd = {}; wcsncpy_s(ppd.lpwzText, ptszText, _TRUNCATE); wcsncpy_s(ppd.lpwzContactName, ptszHeader, _TRUNCATE); if (ptszPath != nullptr) ppd.PluginData = (void*)mir_wstrdup(ptszPath); ppd.PluginWindowProc = DlgProcPopup; ppd.lchIcon = IcoLib_GetIcon(iconList[0].szName); - PUAddPopupW(&ppd); } diff --git a/plugins/Db_autobackups/src/main.cpp b/plugins/Db_autobackups/src/main.cpp index 1e0fb8a867..e0522f1c18 100644 --- a/plugins/Db_autobackups/src/main.cpp +++ b/plugins/Db_autobackups/src/main.cpp @@ -2,6 +2,7 @@ CMPlugin g_plugin; +HGENMENU g_hPopupMenu; HANDLE hFolder; char g_szMirVer[100]; @@ -38,6 +39,16 @@ CMPlugin::CMPlugin() : ///////////////////////////////////////////////////////////////////////////////////////// +static void UpdateMenuIcons() +{ + if (g_plugin.disable_popups) + Menu_ModifyItem(g_hPopupMenu, LPGENW("Enable &AutoBackups notification"), Skin_LoadIcon(SKINICON_OTHER_NOPOPUP)); + else + Menu_ModifyItem(g_hPopupMenu, LPGENW("Disable &AutoBackups notification"), Skin_LoadIcon(SKINICON_OTHER_POPUP)); +} + +///////////////////////////////////////////////////////////////////////////////////////// + static INT_PTR ABService(WPARAM, LPARAM) { BackupStart(nullptr); @@ -74,11 +85,19 @@ static int FoldersGetBackupPath(WPARAM, LPARAM) return 0; } +static INT_PTR OnTogglePopups(WPARAM, LPARAM) +{ + g_plugin.disable_popups = !g_plugin.disable_popups; + UpdateMenuIcons(); + return 0; +} + static int ModulesLoad(WPARAM, LPARAM) { CMenuItem mi(&g_plugin); mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Database"), 500100000); + // Main menu items SET_UID(mi, 0x1439b1db, 0x7d95, 0x495b, 0xbf, 0x5, 0x3d, 0x21, 0xc1, 0xeb, 0xf7, 0x58); mi.name.a = LPGEN("Backup profile"); mi.pszService = MS_AB_BACKUP; @@ -93,6 +112,15 @@ static int ModulesLoad(WPARAM, LPARAM) mi.position = 500100001; Menu_AddMainMenuItem(&mi); + // Popup menu item + SET_UID(mi, 0xe9250a75, 0x30da, 0x42f2, 0x85, 0x27, 0x54, 0x24, 0x62, 0x59, 0x9e, 0xae); + mi.position = 0; + mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Popups"), 0); + mi.pszService = "DbAutoBackup/EnableDisableMenuCommand"; + g_hPopupMenu = Menu_AddMainMenuItem(&mi); + UpdateMenuIcons(); + CreateServiceFunction(mi.pszService, &OnTogglePopups); + if (hFolder = FoldersRegisterCustomPathT(LPGEN("Database backups"), LPGEN("Backup folder"), DIR SUB_DIR)) { HookEvent(ME_FOLDERS_PATH_CHANGED, FoldersGetBackupPath); FoldersGetBackupPath(0, 0); @@ -114,10 +142,10 @@ static int ModulesLoad(WPARAM, LPARAM) // for setting changed event not cleared. the backup on exit function will write to the db, calling those hooks. static int PreShutdown(WPARAM, LPARAM) { - if (g_plugin.backup_types & BT_EXIT) { - g_plugin.disable_popups = 1; // Don't try to show popups on exit + g_plugin.bTerminated = true; + + if (g_plugin.backup_types & BT_EXIT) BackupStart(nullptr); - } return 0; } diff --git a/plugins/Db_autobackups/src/options.cpp b/plugins/Db_autobackups/src/options.cpp index 760ed9832a..d473220897 100644 --- a/plugins/Db_autobackups/src/options.cpp +++ b/plugins/Db_autobackups/src/options.cpp @@ -21,7 +21,6 @@ class COptionsDlg : public CDlgBase m_filemask.Enable(bEnabled); m_foldersPageLink.Enable(bEnabled); m_disableProgress.Enable(bEnabled); - m_disablePopups.Enable(bEnabled); m_useZip.Enable(bEnabled); periodText.Enable(bEnabled); m_period.Enable(bEnabled); @@ -116,7 +115,6 @@ class COptionsDlg : public CDlgBase CCtrlHyperlink m_foldersPageLink; CCtrlSpin m_numBackups; CCtrlCheck m_disableProgress; - CCtrlCheck m_disablePopups; CCtrlCheck m_useZip; CCtrlCheck m_backupProfile; CCtrlCheck m_useCloudFile; @@ -133,14 +131,13 @@ public: m_period(this, SPIN_PERIOD, 60, 1), m_periodType(this, IDC_PT), m_folder(this, IDC_ED_FOLDER), m_browseFolder(this, IDC_BUT_BROWSE), m_filemask(this, IDC_FILEMASK), m_foldersPageLink(this, IDC_LNK_FOLDERS, nullptr), m_numBackups(this, SPIN_NUMBACKUPS, 9999, 1), - m_disableProgress(this, IDC_CHK_NOPROG), m_disablePopups(this, IDC_CHK_NOPOPUP), + m_disableProgress(this, IDC_CHK_NOPROG), m_useZip(this, IDC_CHK_USEZIP), m_useCloudFile(this, IDC_CLOUDFILE), m_cloudFileService(this, IDC_CLOUDFILESEVICE) { CreateLink(m_period, g_plugin.period); CreateLink(m_numBackups, g_plugin.num_backups); CreateLink(m_disableProgress, g_plugin.disable_progress); - CreateLink(m_disablePopups, g_plugin.disable_popups); CreateLink(m_useZip, g_plugin.use_zip); CreateLink(m_filemask, g_plugin.file_mask); CreateLink(m_backupProfile, g_plugin.backup_profile); @@ -194,8 +191,6 @@ public: CreateToolTip(tszTooltipText, TranslateT("Variables")); } - m_disablePopups.Show(); - m_useCloudFile.Enable(ServiceExists(MS_CLOUDFILE_UPLOAD)); if (ServiceExists(MS_CLOUDFILE_ENUMSERVICES)) { m_cloudFileService.Enable(); diff --git a/plugins/Db_autobackups/src/resource.h b/plugins/Db_autobackups/src/resource.h index 27877575a0..7f267cb442 100644 --- a/plugins/Db_autobackups/src/resource.h +++ b/plugins/Db_autobackups/src/resource.h @@ -19,7 +19,6 @@ #define IDC_LNK_FOLDERS 1669 #define IDC_CHK_NOPROG 1670 #define IDC_BUT_NOW 1671 -#define IDC_CHK_NOPOPUP 1672 #define IDC_CHK_USEZIP 1673 #define IDC_CLOUDFILE 1674 #define IDC_BACKUPPROFILE 1675 diff --git a/plugins/Db_autobackups/src/stdafx.h b/plugins/Db_autobackups/src/stdafx.h index 94584b3e26..6441129c37 100644 --- a/plugins/Db_autobackups/src/stdafx.h +++ b/plugins/Db_autobackups/src/stdafx.h @@ -19,6 +19,7 @@ namespace fs = std::experimental::filesystem; #include #include #include +#include #include #include #include @@ -33,6 +34,7 @@ struct CMPlugin : public PLUGIN { CMPlugin(); + bool bTerminated; CMOption backup_types; CMOption period; CMOption period_type; diff --git a/plugins/Db_autobackups/src/version.h b/plugins/Db_autobackups/src/version.h index 1f2b15fa60..4f3f7f9111 100644 --- a/plugins/Db_autobackups/src/version.h +++ b/plugins/Db_autobackups/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 1 #define __RELEASE_NUM 0 -#define __BUILD_NUM 2 +#define __BUILD_NUM 3 #include -- cgit v1.2.3