From 39679a3cc145c5253bbbd99b9a013f3fe991532b Mon Sep 17 00:00:00 2001 From: George Hazan Date: Thu, 5 Dec 2013 22:07:14 +0000 Subject: resetting menu item name upon password change git-svn-id: http://svn.miranda-ng.org/main/trunk@7061 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/Db3x_mmap/src/dbcrypt.cpp | 1 + plugins/Db3x_mmap/src/dbintf.h | 3 +++ plugins/Db3x_mmap/src/ui.cpp | 36 +++++++++++++++++++++++------------- 3 files changed, 27 insertions(+), 13 deletions(-) (limited to 'plugins/Db3x_mmap/src') diff --git a/plugins/Db3x_mmap/src/dbcrypt.cpp b/plugins/Db3x_mmap/src/dbcrypt.cpp index 4193316d17..7b384cedfe 100644 --- a/plugins/Db3x_mmap/src/dbcrypt.cpp +++ b/plugins/Db3x_mmap/src/dbcrypt.cpp @@ -207,4 +207,5 @@ void CDb3Mmap::SetPassword(LPCTSTR ptszPassword) m_bUsesPassword = true; m_crypto->setPassword(ptrA(mir_utf8encodeT(ptszPassword))); } + UpdateMenuItem(); } diff --git a/plugins/Db3x_mmap/src/dbintf.h b/plugins/Db3x_mmap/src/dbintf.h index 1d5fae78a6..c512b27ecb 100644 --- a/plugins/Db3x_mmap/src/dbintf.h +++ b/plugins/Db3x_mmap/src/dbintf.h @@ -301,6 +301,9 @@ struct CDb3Mmap : public CDb3Base void StoreKey(void); void SetPassword(const TCHAR *ptszPassword); + void UpdateMenuItem(void); + + __forceinline LPSTR GetMenuTitle() const { return m_bUsesPassword ? LPGEN("Change/remove password") : LPGEN("Set password"); } protected: virtual DWORD GetSettingsGroupOfsByModuleNameOfs(DBContact *dbc,DWORD ofsContact,DWORD ofsModuleName); diff --git a/plugins/Db3x_mmap/src/ui.cpp b/plugins/Db3x_mmap/src/ui.cpp index fa22d1008b..0c74569dcd 100644 --- a/plugins/Db3x_mmap/src/ui.cpp +++ b/plugins/Db3x_mmap/src/ui.cpp @@ -192,20 +192,22 @@ LBL_Error: SetDlgItemTextA(hwndDlg, IDC_USERPASS2, ""); } else { - param->newPass[0] = 0; - EndDialog(hwndDlg, IDOK); + param->db->SetPassword(NULL); + param->db->StoreKey(); + EndDialog(hwndDlg, IDREMOVE); } break; case IDOK: - GetDlgItemText(hwndDlg, IDC_USERPASS1, param->newPass, SIZEOF(param->newPass)); - if (_tcslen(param->newPass) < 3) { + TCHAR buf2[100]; + GetDlgItemText(hwndDlg, IDC_USERPASS1, buf2, SIZEOF(buf2)); + if (_tcslen(buf2) < 3) { SetDlgItemText(hwndDlg, IDC_HEADERBAR, TranslateT("Password is too short!")); goto LBL_Error; } GetDlgItemText(hwndDlg, IDC_USERPASS2, buf, SIZEOF(buf)); - if (_tcscmp(param->newPass, buf)) { + if (_tcscmp(buf2, buf)) { SetWindowText(GetDlgItem(hwndDlg, IDC_HEADERBAR), TranslateT("Passwords do not match!")); goto LBL_Error; } @@ -213,6 +215,9 @@ LBL_Error: if (!CheckOldPassword(hwndDlg, param->db)) goto LBL_Error; + param->db->SetPassword(buf2); + param->db->StoreKey(); + SecureZeroMemory(buf2, sizeof(buf2)); EndDialog(hwndDlg, IDOK); } break; @@ -233,16 +238,21 @@ static INT_PTR ChangePassword(void* obj, LPARAM, LPARAM) { CDb3Mmap *db = (CDb3Mmap*)obj; DlgChangePassParam param = { db }; - if (IDOK == DialogBoxParam(g_hInst, MAKEINTRESOURCE(db->usesPassword() ? IDD_CHANGEPASS : IDD_NEWPASS), 0, sttChangePassword, (LPARAM)¶m)) { - db->SetPassword(param.newPass); - db->StoreKey(); - } - + DialogBoxParam(g_hInst, MAKEINTRESOURCE(db->usesPassword() ? IDD_CHANGEPASS : IDD_NEWPASS), 0, sttChangePassword, (LPARAM)¶m); return 0; } ///////////////////////////////////////////////////////////////////////////////////////// +void CDb3Mmap::UpdateMenuItem() +{ + CLISTMENUITEM mi = { sizeof(mi) }; + mi.flags = CMIM_NAME; + mi.icolibItem = iconList[1].hIcolib; + mi.pszName = GetMenuTitle(); + Menu_ModifyItem(hSetPwdMenu, &mi); +} + static int OnModulesLoaded(PVOID obj, WPARAM, LPARAM) { CDb3Mmap *db = (CDb3Mmap*)obj; @@ -251,10 +261,10 @@ static int OnModulesLoaded(PVOID obj, WPARAM, LPARAM) // main menu item CLISTMENUITEM mi = { sizeof(mi) }; - mi.flags = CMIM_ALL | CMIF_TCHAR; + mi.flags = CMIM_ALL; mi.icolibItem = iconList[1].hIcolib; - mi.ptszName = (db->isEncrypted()) ? LPGENT("Change password") : LPGENT("Set password"); - mi.ptszPopupName = LPGENT("Database"); + mi.pszName = db->GetMenuTitle(); + mi.pszPopupName = LPGEN("Database"); mi.pszService = MS_DB_CHANGEPASSWORD; mi.position = 500000000; hSetPwdMenu = Menu_AddMainMenuItem(&mi); -- cgit v1.2.3