summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2020-08-11 17:21:54 +0300
committerGeorge Hazan <ghazan@miranda.im>2020-08-11 17:21:54 +0300
commitca545be6f06c10b137ae0586ecdf634b29c1ee04 (patch)
treedac25ac885b969d9e7999e061152d6d713f09b2d
parent1c873131aae12c8fa3e74fd1515c4377fc586f36 (diff)
fixes #2517 (Add DbChecker menu item to Main menu → Database)
-rw-r--r--plugins/DbChecker/res/delete.icobin1150 -> 0 bytes
-rw-r--r--plugins/DbChecker/res/profileg.icobin1150 -> 0 bytes
-rw-r--r--plugins/DbChecker/res/resource.rc2
-rw-r--r--plugins/DbChecker/src/main.cpp44
-rw-r--r--plugins/DbChecker/src/resource.h2
-rw-r--r--plugins/DbChecker/src/stdafx.h7
-rw-r--r--plugins/DbChecker/src/version.h2
7 files changed, 46 insertions, 11 deletions
diff --git a/plugins/DbChecker/res/delete.ico b/plugins/DbChecker/res/delete.ico
deleted file mode 100644
index 086b3574e7..0000000000
--- a/plugins/DbChecker/res/delete.ico
+++ /dev/null
Binary files differ
diff --git a/plugins/DbChecker/res/profileg.ico b/plugins/DbChecker/res/profileg.ico
deleted file mode 100644
index f912bb1111..0000000000
--- a/plugins/DbChecker/res/profileg.ico
+++ /dev/null
Binary files differ
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>