diff options
author | George Hazan <ghazan@miranda.im> | 2020-08-11 17:21:54 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2020-08-11 17:21:54 +0300 |
commit | ca545be6f06c10b137ae0586ecdf634b29c1ee04 (patch) | |
tree | dac25ac885b969d9e7999e061152d6d713f09b2d | |
parent | 1c873131aae12c8fa3e74fd1515c4377fc586f36 (diff) |
fixes #2517 (Add DbChecker menu item to Main menu → Database)
-rw-r--r-- | plugins/DbChecker/res/delete.ico | bin | 1150 -> 0 bytes | |||
-rw-r--r-- | plugins/DbChecker/res/profileg.ico | bin | 1150 -> 0 bytes | |||
-rw-r--r-- | plugins/DbChecker/res/resource.rc | 2 | ||||
-rw-r--r-- | plugins/DbChecker/src/main.cpp | 44 | ||||
-rw-r--r-- | plugins/DbChecker/src/resource.h | 2 | ||||
-rw-r--r-- | plugins/DbChecker/src/stdafx.h | 7 | ||||
-rw-r--r-- | plugins/DbChecker/src/version.h | 2 |
7 files changed, 46 insertions, 11 deletions
diff --git a/plugins/DbChecker/res/delete.ico b/plugins/DbChecker/res/delete.ico Binary files differdeleted file mode 100644 index 086b3574e7..0000000000 --- a/plugins/DbChecker/res/delete.ico +++ /dev/null diff --git a/plugins/DbChecker/res/profileg.ico b/plugins/DbChecker/res/profileg.ico Binary files differdeleted file mode 100644 index f912bb1111..0000000000 --- a/plugins/DbChecker/res/profileg.ico +++ /dev/null diff --git a/plugins/DbChecker/res/resource.rc b/plugins/DbChecker/res/resource.rc index caabe3a9d0..23c21db6f4 100644 --- a/plugins/DbChecker/res/resource.rc +++ b/plugins/DbChecker/res/resource.rc @@ -111,8 +111,6 @@ END // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_DBTOOL ICON "dbtool.ico" -IDI_PROFILEGREEN ICON "profileg.ico" -IDI_BAD ICON "delete.ico" #endif // Neutral resources ///////////////////////////////////////////////////////////////////////////// diff --git a/plugins/DbChecker/src/main.cpp b/plugins/DbChecker/src/main.cpp index eb59131e86..25214e05e9 100644 --- a/plugins/DbChecker/src/main.cpp +++ b/plugins/DbChecker/src/main.cpp @@ -57,14 +57,12 @@ static INT_PTR ServiceMode(WPARAM, LPARAM) { auto *opts = new DbToolOptions(); opts->db = db_get_current(); - db_setCurrent(nullptr); - wcsncpy_s(opts->filename, VARSW(L"%miranda_userdata%\\%miranda_profilename%.dat"), _TRUNCATE); - opts->dbChecker = opts->db->GetChecker(); if (opts->dbChecker == nullptr) { delete opts; return SERVICE_FAILED; } + wcsncpy_s(opts->filename, VARSW(L"%miranda_userdata%\\%miranda_profilename%.dat"), _TRUNCATE); DialogBoxParamW(g_plugin.getInst(), MAKEINTRESOURCE(IDD_WIZARD), nullptr, WizardDlgProc, LPARAM(opts)); return SERVICE_FAILED; @@ -74,12 +72,50 @@ static INT_PTR CheckProfile(WPARAM wParam, LPARAM lParam) { auto *opts = new DbToolOptions(); opts->bAutoExit = lParam == 2; - wcsncpy(opts->filename, (wchar_t*)wParam, _countof(opts->filename)); + + if (wParam) { + wcsncpy(opts->filename, (wchar_t *)wParam, _countof(opts->filename)); + opts->bOwnsDb = true; + } + else { + opts->db = db_get_current(); + opts->dbChecker = opts->db->GetChecker(); + if (opts->dbChecker == nullptr) { + delete opts; + return 2; + } + + wcsncpy_s(opts->filename, VARSW(L"%miranda_userdata%\\%miranda_profilename%.dat"), _TRUNCATE); + } + return DialogBoxParamW(g_plugin.getInst(), MAKEINTRESOURCE(IDD_WIZARD), nullptr, WizardDlgProc, LPARAM(opts)); } +static int OnModulesLoaded(WPARAM, LPARAM) +{ + CMenuItem mi(&g_plugin); + mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Database"), 500100000); + + // Main menu items + SET_UID(mi, 0x371f9e52, 0x39f5, 0x4fee, 0x84, 0xbb, 0xfe, 0x9c, 0xf, 0xd6, 0x85, 0x79); // {371F9E52-39F5-4FEE-84BB-FE9C0FD68579} + mi.name.a = LPGEN("Check database"); + mi.pszService = MS_DB_CHECKPROFILE; + mi.hIcolibItem = g_plugin.getIconHandle(IDI_DBTOOL); + mi.position = 500000003; + Menu_AddMainMenuItem(&mi); + return 0; +} + +static IconItem iconList[] = { + { LPGEN("Check database"), "DbChecker", IDI_DBTOOL }, +}; + int CMPlugin::Load(void) { + g_plugin.registerIcon("DbChecker", iconList); + + HookEvent(ME_SYSTEM_MODULESLOADED, OnModulesLoaded); + CreateServiceFunction(MS_DB_CHECKPROFILE, CheckProfile); hService = CreateServiceFunction(MS_SERVICEMODE_LAUNCH, ServiceMode); return 0; diff --git a/plugins/DbChecker/src/resource.h b/plugins/DbChecker/src/resource.h index 82fcbd96a3..1695ebd6dd 100644 --- a/plugins/DbChecker/src/resource.h +++ b/plugins/DbChecker/src/resource.h @@ -7,11 +7,9 @@ #define IDE_WATERMARK 102 #define IDI_DBTOOL 102 #define IDE_HDRLOGO 103 -#define IDI_PROFILEGREEN 104 #define IDD_WELCOME 106 #define IDD_OPENERROR 108 #define IDD_PROGRESS 111 -#define IDI_BAD 113 #define IDC_WATERMARK 1000 #define IDC_TITLE 1001 #define IDC_HDRLOGO 1002 diff --git a/plugins/DbChecker/src/stdafx.h b/plugins/DbChecker/src/stdafx.h index a6d280a373..e912983a10 100644 --- a/plugins/DbChecker/src/stdafx.h +++ b/plugins/DbChecker/src/stdafx.h @@ -28,8 +28,10 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include <time.h> #include <newpluginapi.h> +#include <m_clist.h> #include <m_database.h> #include <m_db_int.h> +#include <m_genmenu.h> #include <m_langpack.h> #include <win2k.h> @@ -50,7 +52,8 @@ struct DbToolOptions : public MZeroedObject ~DbToolOptions() { - delete db; + if (bOwnsDb) + delete db; CloseHandle(hEventAbort); CloseHandle(hEventRun); } @@ -59,7 +62,7 @@ struct DbToolOptions : public MZeroedObject MIDatabaseChecker *dbChecker; DWORD error; HANDLE hEventRun, hEventAbort; - bool bFinished, bAutoExit; + bool bFinished, bAutoExit, bOwnsDb; wchar_t filename[MAX_PATH]; }; diff --git a/plugins/DbChecker/src/version.h b/plugins/DbChecker/src/version.h index f1d4945707..ef6d141d15 100644 --- a/plugins/DbChecker/src/version.h +++ b/plugins/DbChecker/src/version.h @@ -1,6 +1,6 @@ #define __MAJOR_VERSION 0 #define __MINOR_VERSION 95 -#define __RELEASE_NUM 12 +#define __RELEASE_NUM 13 #define __BUILD_NUM 1 #include <stdver.h> |