From 7748903e5c28d9e30a3970dfaaf464f163da2a1d Mon Sep 17 00:00:00 2001 From: George Hazan Date: Fri, 8 Jan 2021 20:13:39 +0300 Subject: Password change dialog also became common --- plugins/Dbx_mdbx/src/dbcrypt.cpp | 15 ---- plugins/Dbx_mdbx/src/dbintf.h | 6 +- plugins/Dbx_mdbx/src/resource.h | 8 -- plugins/Dbx_mdbx/src/ui.cpp | 170 ++------------------------------------- plugins/Dbx_mdbx/src/ui.h | 1 - 5 files changed, 7 insertions(+), 193 deletions(-) (limited to 'plugins/Dbx_mdbx/src') diff --git a/plugins/Dbx_mdbx/src/dbcrypt.cpp b/plugins/Dbx_mdbx/src/dbcrypt.cpp index 3ee4ce9fc6..9f41b534e5 100644 --- a/plugins/Dbx_mdbx/src/dbcrypt.cpp +++ b/plugins/Dbx_mdbx/src/dbcrypt.cpp @@ -94,21 +94,6 @@ STDMETHODIMP_(BOOL) CDbxMDBX::StoreProvider(CRYPTO_PROVIDER *pProv) ///////////////////////////////////////////////////////////////////////////////////////// -void CDbxMDBX::SetPassword(const wchar_t *ptszPassword) -{ - if (ptszPassword == nullptr || *ptszPassword == 0) { - m_bUsesPassword = false; - m_crypto->setPassword(nullptr); - } - else { - m_bUsesPassword = true; - m_crypto->setPassword(pass_ptrA(mir_utf8encodeW(ptszPassword))); - } - UpdateMenuItem(); -} - -///////////////////////////////////////////////////////////////////////////////////////// - int CDbxMDBX::EnableEncryption(bool bEncrypted) { if (m_bEncrypted == bEncrypted) diff --git a/plugins/Dbx_mdbx/src/dbintf.h b/plugins/Dbx_mdbx/src/dbintf.h index e4d542ae07..502b126ff4 100644 --- a/plugins/Dbx_mdbx/src/dbintf.h +++ b/plugins/Dbx_mdbx/src/dbintf.h @@ -165,7 +165,6 @@ class CDbxMDBX : public MDatabaseCommon, public MIDatabaseChecker, public MZeroe bool EditEvent(MCONTACT contactID, MEVENT hDbEvent, const DBEVENTINFO *dbe, bool bNew); int PrepareCheck(void); void TouchFile(void); - void UpdateMenuItem(void); //////////////////////////////////////////////////////////////////////////// // database stuff @@ -186,7 +185,7 @@ class CDbxMDBX : public MDatabaseCommon, public MIDatabaseChecker, public MZeroe // settings MDBX_dbi m_dbSettings; - HANDLE hService[2], hHook; + HANDLE hService[1], hHook; void FillSettings(void); @@ -235,14 +234,11 @@ public: int EnableEncryption(bool bEnable); int Load(); int Map(); - void SetPassword(const wchar_t *ptszPassword); int CheckEvents1(void); int CheckEvents2(void); int CheckEvents3(void); - __forceinline LPSTR GetMenuTitle() const { return m_bUsesPassword ? (char*)LPGEN("Change/remove password") : (char*)LPGEN("Set password"); } - public: STDMETHODIMP_(BOOL) IsRelational(void) override { return TRUE; } STDMETHODIMP_(void) SetCacheSafetyMode(BOOL) override; diff --git a/plugins/Dbx_mdbx/src/resource.h b/plugins/Dbx_mdbx/src/resource.h index c705e3ad15..035c210f70 100644 --- a/plugins/Dbx_mdbx/src/resource.h +++ b/plugins/Dbx_mdbx/src/resource.h @@ -3,17 +3,9 @@ // Используется d:\Others\SVN\MirandaNG\trunk\plugins\Dbx_mdb\res\dbx_mdbx.rc // #define IDREMOVE 3 -#define IDI_LOGO 101 -#define IDD_NEWPASS 103 -#define IDD_CHANGEPASS 104 #define IDD_OPTIONS 105 #define IDI_COMPACT 107 #define IDC_HEADERBAR 1001 -#define IDC_LANG 1002 -#define IDC_USERPASS 1003 -#define IDC_USERPASS1 1004 -#define IDC_USERPASS2 1005 -#define IDC_OLDPASS 1006 #define IDC_STANDARD 1007 #define IDC_TOTAL 1008 diff --git a/plugins/Dbx_mdbx/src/ui.cpp b/plugins/Dbx_mdbx/src/ui.cpp index f538d99c51..e32df8d296 100644 --- a/plugins/Dbx_mdbx/src/ui.cpp +++ b/plugins/Dbx_mdbx/src/ui.cpp @@ -23,137 +23,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h" -static HGENMENU hSetPwdMenu; - -static UINT oldLangID; -void LanguageChanged(HWND hwndDlg) -{ - UINT_PTR LangID = (UINT_PTR)GetKeyboardLayout(0); - char Lang[3] = { 0 }; - if (LangID != oldLangID) { - oldLangID = LangID; - GetLocaleInfoA(MAKELCID((LangID & 0xffffffff), SORT_DEFAULT), LOCALE_SABBREVLANGNAME, Lang, 2); - Lang[0] = toupper(Lang[0]); - Lang[1] = tolower(Lang[1]); - SetDlgItemTextA(hwndDlg, IDC_LANG, Lang); - } -} - -///////////////////////////////////////////////////////////////////////////////////////// - -static bool CheckOldPassword(HWND hwndDlg, CDbxMDBX *db) -{ - if (db->usesPassword()) { - wchar_t buf[100]; - GetDlgItemText(hwndDlg, IDC_OLDPASS, buf, _countof(buf)); - pass_ptrA oldPass(mir_utf8encodeW(buf)); - if (!db->getCrypt()->checkPassword(oldPass)) { - SetDlgItemText(hwndDlg, IDC_HEADERBAR, TranslateT("Wrong old password entered!")); - return false; - } - } - return true; -} - -struct DlgChangePassParam -{ - CDbxMDBX *db; - wchar_t newPass[100]; - unsigned short wrongPass; -}; - -static INT_PTR CALLBACK sttChangePassword(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) -{ - DlgChangePassParam *param = (DlgChangePassParam*)GetWindowLongPtr(hwndDlg, GWLP_USERDATA); - wchar_t buf[100]; - - switch (uMsg) { - case WM_INITDIALOG: - TranslateDialogDefault(hwndDlg); - SendDlgItemMessage(hwndDlg, IDC_HEADERBAR, WM_SETICON, ICON_SMALL, (LPARAM)g_plugin.getIcon(IDI_LOGO, true)); - - param = (DlgChangePassParam*)lParam; - SetWindowLongPtr(hwndDlg, GWLP_USERDATA, lParam); - - oldLangID = 0; - SetTimer(hwndDlg, 1, 200, nullptr); - LanguageChanged(hwndDlg); - return TRUE; - - case WM_CTLCOLORSTATIC: - if ((HWND)lParam == GetDlgItem(hwndDlg, IDC_LANG)) { - SetTextColor((HDC)wParam, GetSysColor(COLOR_HIGHLIGHTTEXT)); - SetBkMode((HDC)wParam, TRANSPARENT); - return (INT_PTR)GetSysColorBrush(COLOR_HIGHLIGHT); - } - return FALSE; - - case WM_COMMAND: - switch (LOWORD(wParam)) { - case IDCANCEL: - EndDialog(hwndDlg, IDCANCEL); - break; - - case IDREMOVE: - if (!CheckOldPassword(hwndDlg, param->db)) { - LBL_Error: - SendDlgItemMessage(hwndDlg, IDC_HEADERBAR, WM_NCPAINT, 0, 0); - SetDlgItemTextA(hwndDlg, IDC_USERPASS1, ""); - SetDlgItemTextA(hwndDlg, IDC_USERPASS2, ""); - } - else { - // param->db->WriteSignature(dbSignatureU); - param->db->SetPassword(nullptr); - param->db->StoreCryptoKey(); - EndDialog(hwndDlg, IDREMOVE); - } - break; - - case IDOK: - wchar_t buf2[100]; - GetDlgItemText(hwndDlg, IDC_USERPASS1, buf2, _countof(buf2)); - if (wcslen(buf2) < 3) { - SetDlgItemText(hwndDlg, IDC_HEADERBAR, TranslateT("Password is too short!")); - goto LBL_Error; - } - - GetDlgItemText(hwndDlg, IDC_USERPASS2, buf, _countof(buf)); - if (wcscmp(buf2, buf)) { - SetDlgItemText(hwndDlg, IDC_HEADERBAR, TranslateT("Passwords do not match!")); - goto LBL_Error; - } - - if (!CheckOldPassword(hwndDlg, param->db)) - goto LBL_Error; - - // param->db->WriteSignature(dbSignatureE); - param->db->SetPassword(buf2); - param->db->StoreCryptoKey(); - SecureZeroMemory(buf2, sizeof(buf2)); - EndDialog(hwndDlg, IDOK); - } - break; - - case WM_TIMER: - LanguageChanged(hwndDlg); - return FALSE; - - case WM_DESTROY: - KillTimer(hwndDlg, 1); - Window_FreeIcon_IcoLib(GetDlgItem(hwndDlg, IDC_HEADERBAR)); - } - - return FALSE; -} - -static INT_PTR ChangePassword(void* obj, WPARAM, LPARAM) -{ - CDbxMDBX *db = (CDbxMDBX*)obj; - DlgChangePassParam param = { db }; - DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(db->usesPassword() ? IDD_CHANGEPASS : IDD_NEWPASS), nullptr, sttChangePassword, (LPARAM)¶m); - return 0; -} - ///////////////////////////////////////////////////////////////////////////////////////// static INT_PTR CompactMe(void* obj, WPARAM, LPARAM) @@ -172,14 +41,12 @@ class COptionsDialog : public CDlgBase { CCtrlCheck m_chkStandart; CCtrlCheck m_chkTotal; - CCtrlButton m_btnChangePass; CDbxMDBX *m_db; bool OnInitDialog() override { m_chkStandart.SetState(!m_db->isEncrypted()); m_chkTotal.SetState(m_db->isEncrypted()); - m_btnChangePass.SetTextA(Translate(m_db->GetMenuTitle())); return true; } @@ -193,20 +60,13 @@ class COptionsDialog : public CDlgBase return true; } - void ChangePass(CCtrlButton*) - { - CallService(MS_DB_CHANGEPASSWORD, 0, 0); - } - public: COptionsDialog(CDbxMDBX *db) : CDlgBase(g_plugin, IDD_OPTIONS), m_chkStandart(this, IDC_STANDARD), m_chkTotal(this, IDC_TOTAL), - m_btnChangePass(this, IDC_USERPASS), m_db(db) { - m_btnChangePass.OnClick = Callback(this, &COptionsDialog::ChangePass); } }; @@ -225,42 +85,25 @@ static int OnOptionsInit(PVOID obj, WPARAM wParam, LPARAM) static IconItem iconList[] = { - { LPGEN("Logo"), "logo", IDI_LOGO }, { LPGEN("Compact"), "compact", IDI_COMPACT } }; -void CDbxMDBX::UpdateMenuItem() -{ - Menu_ModifyItem(hSetPwdMenu, _A2T(GetMenuTitle()), Skin_GetIconHandle(SKINICON_OTHER_KEYS)); -} - static int OnModulesLoaded(PVOID obj, WPARAM, LPARAM) { - CDbxMDBX *db = (CDbxMDBX*)obj; - g_plugin.registerIcon(LPGEN("Database"), iconList, "mdbx"); - HookEventObj(ME_OPT_INITIALISE, OnOptionsInit, db); - - CMenuItem mi(&g_plugin); + HookEventObj(ME_OPT_INITIALISE, OnOptionsInit, obj); // main menu item - mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Database"), 500000000, iconList[0].hIcolib); - Menu_ConfigureItem(mi.root, MCI_OPT_UID, "F7C5567C-D1EE-484B-B4F6-24677A5AAAEF"); - - SET_UID(mi, 0x50321866, 0xba1, 0x46dd, 0xb3, 0xa6, 0xc3, 0xcc, 0x55, 0xf2, 0x42, 0x9e); - mi.position = 1000000001; - mi.hIcolibItem = Skin_GetIconHandle(SKINICON_OTHER_KEYS); - mi.name.a = db->GetMenuTitle(); - mi.pszService = MS_DB_CHANGEPASSWORD; - hSetPwdMenu = Menu_AddMainMenuItem(&mi); + CMenuItem mi(&g_plugin); + mi.root = g_plugin.addRootMenu(MO_MAIN, LPGENW("Database"), 500000000, 0); SET_UID(mi, 0x98c0caf3, 0xBfe5, 0x4e31, 0xac, 0xf0, 0xab, 0x95, 0xb2, 0x9b, 0x9f, 0x73); mi.position++; - mi.hIcolibItem = iconList[1].hIcolib; + mi.hIcolibItem = iconList[0].hIcolib; mi.name.a = LPGEN("Compact"); mi.pszService = MS_DB_COMPACT; - hSetPwdMenu = Menu_AddMainMenuItem(&mi); + Menu_AddMainMenuItem(&mi); return 0; } @@ -268,8 +111,7 @@ static int OnModulesLoaded(PVOID obj, WPARAM, LPARAM) void CDbxMDBX::InitDialogs() { - hService[0] = CreateServiceFunctionObj(MS_DB_CHANGEPASSWORD, ChangePassword, this); - hService[1] = CreateServiceFunctionObj(MS_DB_COMPACT, CompactMe, this); + hService[0] = CreateServiceFunctionObj(MS_DB_COMPACT, CompactMe, this); hHook = HookEventObj(ME_SYSTEM_MODULESLOADED, OnModulesLoaded, this); } diff --git a/plugins/Dbx_mdbx/src/ui.h b/plugins/Dbx_mdbx/src/ui.h index 832146ea33..e1c4fe5f4a 100644 --- a/plugins/Dbx_mdbx/src/ui.h +++ b/plugins/Dbx_mdbx/src/ui.h @@ -1,4 +1,3 @@ #pragma once -#define MS_DB_CHANGEPASSWORD "DB/UI/ChangePassword" #define MS_DB_COMPACT "DB/UI/Compact" -- cgit v1.2.3