diff options
author | George Hazan <ghazan@miranda.im> | 2021-01-08 20:13:39 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2021-01-08 20:13:39 +0300 |
commit | 7748903e5c28d9e30a3970dfaaf464f163da2a1d (patch) | |
tree | 01a47834ed6ad19fa8029d8b46387e2ec8ca14c3 /plugins/Db3x_mmap/src | |
parent | dd3d028511f6d94b9b6017a1a26399da3465f3c2 (diff) |
Password change dialog also became common
Diffstat (limited to 'plugins/Db3x_mmap/src')
-rw-r--r-- | plugins/Db3x_mmap/src/dbcrypt.cpp | 21 | ||||
-rw-r--r-- | plugins/Db3x_mmap/src/dbintf.h | 4 | ||||
-rw-r--r-- | plugins/Db3x_mmap/src/resource.h | 9 | ||||
-rw-r--r-- | plugins/Db3x_mmap/src/ui.cpp | 174 |
4 files changed, 7 insertions, 201 deletions
diff --git a/plugins/Db3x_mmap/src/dbcrypt.cpp b/plugins/Db3x_mmap/src/dbcrypt.cpp index 42a0cc57db..2cb8fd7c9d 100644 --- a/plugins/Db3x_mmap/src/dbcrypt.cpp +++ b/plugins/Db3x_mmap/src/dbcrypt.cpp @@ -125,27 +125,14 @@ STDMETHODIMP_(BOOL) CDb3Mmap::StoreProvider(CRYPTO_PROVIDER *pProvider) return TRUE;
}
-void CDb3Mmap::SetPassword(const wchar_t *ptszPassword)
-{
- if (ptszPassword == nullptr || *ptszPassword == 0) {
- m_bUsesPassword = false;
- m_crypto->setPassword(nullptr);
- }
- else {
- m_bUsesPassword = true;
- m_crypto->setPassword(T2Utf(ptszPassword));
- }
- UpdateMenuItem();
-}
-
/////////////////////////////////////////////////////////////////////////////////////////
void CDb3Mmap::ToggleEncryption()
{
- HANDLE hSave1 = g_hevSettingChanged; g_hevSettingChanged = nullptr;
- HANDLE hSave2 = g_hevEventAdded; g_hevEventAdded = nullptr;
- HANDLE hSave3 = g_hevEventDeleted; g_hevEventDeleted = nullptr;
- HANDLE hSave4 = g_hevEventFiltered; g_hevEventFiltered = nullptr;
+ HANDLE hSave1 = g_hevSettingChanged; g_hevSettingChanged = nullptr;
+ HANDLE hSave2 = g_hevEventAdded; g_hevEventAdded = nullptr;
+ HANDLE hSave3 = g_hevEventDeleted; g_hevEventDeleted = nullptr;
+ HANDLE hSave4 = g_hevEventFiltered; g_hevEventFiltered = nullptr;
mir_cslock lck(m_csDbAccess);
ToggleSettingsEncryption(0);
diff --git a/plugins/Db3x_mmap/src/dbintf.h b/plugins/Db3x_mmap/src/dbintf.h index 81aca25423..d1206c9483 100644 --- a/plugins/Db3x_mmap/src/dbintf.h +++ b/plugins/Db3x_mmap/src/dbintf.h @@ -193,10 +193,6 @@ struct CDb3Mmap : public MDatabaseCommon, public MZeroedObject int CheckDbHeaders(bool bInteractive);
void ToggleEncryption(void);
- void SetPassword(const wchar_t *ptszPassword);
- void UpdateMenuItem(void);
-
- __forceinline LPTSTR GetMenuTitle() const { return m_bUsesPassword ? LPGENW("Change/remove password") : LPGENW("Set password"); }
void DatabaseCorruption(wchar_t *text);
void WriteSignature(DBSignature&);
diff --git a/plugins/Db3x_mmap/src/resource.h b/plugins/Db3x_mmap/src/resource.h index 0f3113cc29..e9f022d2f3 100644 --- a/plugins/Db3x_mmap/src/resource.h +++ b/plugins/Db3x_mmap/src/resource.h @@ -4,20 +4,11 @@ //
#define IDREMOVE 3
#define IDI_LOGO 101
-#define IDD_NEWPASS 103
-#define IDD_CHANGEPASS 104
#define IDD_OPTIONS 105
#define IDD_SELECT_CRYPTOPROVIDER 106
#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
-#define IDC_SELECTCRYPT_COMBO 1010
-#define IDC_CRYPTOPROVIDER_DESCR 1011
// Next default values for new objects
//
diff --git a/plugins/Db3x_mmap/src/ui.cpp b/plugins/Db3x_mmap/src/ui.cpp index 10c428b9fd..ced14b5168 100644 --- a/plugins/Db3x_mmap/src/ui.cpp +++ b/plugins/Db3x_mmap/src/ui.cpp @@ -23,143 +23,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "stdafx.h"
-#define MS_DB_CHANGEPASSWORD "DB/UI/ChangePassword"
-
-static IconItem iconList[] =
-{
- { LPGEN("Logo"), "logo", IDI_LOGO }
-};
-
-static HGENMENU hSetPwdMenu;
-
-static ULONG_PTR oldLangID;
-void LanguageChanged(HWND hwndDlg)
-{
- ULONG_PTR LangID = (ULONG_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, CDb3Mmap *db)
-{
- if (db->usesPassword()) {
- wchar_t buf[100];
- GetDlgItemText(hwndDlg, IDC_OLDPASS, buf, _countof(buf));
- if (!db->getCrypt()->checkPassword(T2Utf(buf))) {
- SetDlgItemText(hwndDlg, IDC_HEADERBAR, TranslateT("Wrong old password entered!"));
- return false;
- }
- }
- return true;
-}
-
-struct DlgChangePassParam
-{
- CDb3Mmap *db;
- wchar_t newPass[100];
- int 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)IcoLib_GetIconByHandle(iconList[0].hIcolib, 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 (mir_wstrlen(buf2) < 3) {
- SetDlgItemText(hwndDlg, IDC_HEADERBAR, TranslateT("Password is too short!"));
- goto LBL_Error;
- }
-
- GetDlgItemText(hwndDlg, IDC_USERPASS2, buf, _countof(buf));
- if (mir_wstrcmp(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(hwndDlg);
- }
-
- return FALSE;
-}
-
-static INT_PTR ChangePassword(void* obj, WPARAM, LPARAM)
-{
- CDb3Mmap *db = (CDb3Mmap*)obj;
- DlgChangePassParam param = { db };
- DialogBoxParam(g_plugin.getInst(), MAKEINTRESOURCE(db->usesPassword() ? IDD_CHANGEPASS : IDD_NEWPASS), nullptr, sttChangePassword, (LPARAM)¶m);
- return 0;
-}
-
/////////////////////////////////////////////////////////////////////////////////////////
INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam)
@@ -176,12 +39,8 @@ INT_PTR CALLBACK DlgProcOptions(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lP return TRUE;
case WM_COMMAND:
- if (HIWORD(wParam) == BN_CLICKED && (HWND)lParam == GetFocus()) {
- if (LOWORD(wParam) == IDC_USERPASS)
- CallService(MS_DB_CHANGEPASSWORD, 0, 0);
- else
- SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
- }
+ if (HIWORD(wParam) == BN_CLICKED && (HWND)lParam == GetFocus())
+ SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0);
break;
case WM_NOTIFY:
@@ -211,40 +70,13 @@ static int OnOptionsInit(PVOID obj, WPARAM wParam, LPARAM) return 0;
}
-/////////////////////////////////////////////////////////////////////////////////////////
-
-void CDb3Mmap::UpdateMenuItem()
-{
- Menu_ModifyItem(hSetPwdMenu, GetMenuTitle(), Skin_GetIconHandle(SKINICON_OTHER_KEYS));
-}
-
static int OnModulesLoaded(PVOID obj, WPARAM, LPARAM)
{
- CDb3Mmap *db = (CDb3Mmap*)obj;
-
- g_plugin.registerIcon(LPGEN("Database"), iconList, "mmap");
-
- HookEventObj(ME_OPT_INITIALISE, OnOptionsInit, db);
-
- CMenuItem mi(&g_plugin);
-
- // 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.flags = CMIF_UNICODE;
- mi.hIcolibItem = iconList[0].hIcolib;
- mi.name.w = db->GetMenuTitle();
- mi.pszService = MS_DB_CHANGEPASSWORD;
- hSetPwdMenu = Menu_AddMainMenuItem(&mi);
+ HookEventObj(ME_OPT_INITIALISE, OnOptionsInit, obj);
return 0;
}
-/////////////////////////////////////////////////////////////////////////////////////////
-
void CDb3Mmap::InitDialogs()
{
- hService = CreateServiceFunctionObj(MS_DB_CHANGEPASSWORD, ChangePassword, this);
hHook = HookEventObj(ME_SYSTEM_MODULESLOADED, OnModulesLoaded, this);
}
|