From 7b7b4be685e910736265f453724253130564e152 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Tue, 19 Jan 2021 16:15:58 +0300 Subject: fixes #2703 (compact from profile manager leads to menu item duplication) --- src/mir_app/src/MDatabaseCommonCrypt.cpp | 22 ++++++---------------- src/mir_app/src/database.cpp | 10 +++++++--- src/mir_app/src/encrypt.h | 2 ++ 3 files changed, 15 insertions(+), 19 deletions(-) diff --git a/src/mir_app/src/MDatabaseCommonCrypt.cpp b/src/mir_app/src/MDatabaseCommonCrypt.cpp index 29b804c6a6..ba9964b863 100644 --- a/src/mir_app/src/MDatabaseCommonCrypt.cpp +++ b/src/mir_app/src/MDatabaseCommonCrypt.cpp @@ -25,8 +25,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "database.h" #include "encrypt.h" -#define MS_DB_CHANGEPASSWORD "DB/UI/ChangePassword" - ///////////////////////////////////////////////////////////////////////////////////////// // Provider selection dialog @@ -315,25 +313,20 @@ static int OnOptionsInit(PVOID obj, WPARAM wParam, LPARAM) ///////////////////////////////////////////////////////////////////////////////////////// -static int OnModulesLoaded(PVOID obj, WPARAM, LPARAM) +void InitCryptMenuItem(CMenuItem &mi) { - MDatabaseCommon *db = (MDatabaseCommon *)obj; - - HookEventObj(ME_OPT_INITIALISE, OnOptionsInit, obj); + auto *pDb = db_get_current(); - // main menu item - CMenuItem mi(&g_plugin); - mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Database"), 500000000, g_plugin.getIconHandle(IDI_DATABASE)); - Menu_ConfigureItem(mi.root, MCI_OPT_UID, "F7C5567C-D1EE-484B-B4F6-24677A5AAAEF"); + HookEventObj(ME_OPT_INITIALISE, OnOptionsInit, pDb); SET_UID(mi, 0x50321866, 0xba1, 0x46dd, 0xb3, 0xa6, 0xc3, 0xcc, 0x55, 0xf2, 0x42, 0x9e); mi.flags = CMIF_UNICODE; mi.position = 1000000001; mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_KEYS); - mi.name.w = GetMenuTitle(db->usesPassword()); - mi.pszService = MS_DB_CHANGEPASSWORD; + mi.name.w = GetMenuTitle(pDb->usesPassword()); + mi.pszService = "DB/UI/ChangePassword"; hSetPwdMenu = Menu_AddMainMenuItem(&mi); - return 0; + CreateServiceFunctionObj(mi.pszService, ChangePassword, pDb); } ///////////////////////////////////////////////////////////////////////////////////////// @@ -455,9 +448,6 @@ int MDatabaseCommon::InitCrypt() StoreCryptoKey(); } - CreateServiceFunctionObj(MS_DB_CHANGEPASSWORD, ChangePassword, this); - HookEventObj(ME_SYSTEM_MODULESLOADED, OnModulesLoaded, this); - m_bEncrypted = ReadEncryption(); return 0; } diff --git a/src/mir_app/src/database.cpp b/src/mir_app/src/database.cpp index d3ee8296e6..8e90ab01b9 100644 --- a/src/mir_app/src/database.cpp +++ b/src/mir_app/src/database.cpp @@ -23,6 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include "stdafx.h" +#include "encrypt.h" #include "profilemanager.h" bool g_bDbCreated; @@ -460,10 +461,11 @@ static INT_PTR CompactMe(void* obj, WPARAM, LPARAM) static int OnModulesLoaded(WPARAM, LPARAM) { auto *pDb = db_get_current(); - if (pDb->GetDriver()->capabilities & MDB_CAPS_COMPACT) { - CMenuItem mi(&g_plugin); - mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Database"), 500000000, 0); + CMenuItem mi(&g_plugin); + mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Database"), 500000000, g_plugin.getIconHandle(IDI_DATABASE)); + + if (pDb->GetDriver()->capabilities & MDB_CAPS_COMPACT) { SET_UID(mi, 0x98c0caf3, 0xBfe5, 0x4e31, 0xac, 0xf0, 0xab, 0x95, 0xb2, 0x9b, 0x9f, 0x73); mi.position++; mi.hIcolibItem = g_plugin.getIconHandle(IDI_DATABASE); @@ -473,6 +475,8 @@ static int OnModulesLoaded(WPARAM, LPARAM) CreateServiceFunctionObj(mi.pszService, CompactMe, pDb); } + + InitCryptMenuItem(mi); return 0; } diff --git a/src/mir_app/src/encrypt.h b/src/mir_app/src/encrypt.h index d05c9277a4..d340135f8b 100644 --- a/src/mir_app/src/encrypt.h +++ b/src/mir_app/src/encrypt.h @@ -43,3 +43,5 @@ struct MCryptoProvider : public CRYPTO_PROVIDER }; extern OBJLIST arCryptoProviders; + +void InitCryptMenuItem(CMenuItem &mi); -- cgit v1.2.3