From 1bb9a86b26d3a9964844d42fa25690ce0a028258 Mon Sep 17 00:00:00 2001 From: Dmitry Kuzkin Date: Thu, 18 Jun 2015 12:36:07 +0000 Subject: true unicode build (ansi build is possible but useless) new search/replace dialog edit improvements (type check) resident settings support (fully resident modules are still invisible) remove obsolete things code cleanup git-svn-id: http://svn.miranda-ng.org/main/trunk@14243 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c --- plugins/DbEditorPP/src/addeditsettingsdlg.cpp | 439 -------------------------- 1 file changed, 439 deletions(-) delete mode 100644 plugins/DbEditorPP/src/addeditsettingsdlg.cpp (limited to 'plugins/DbEditorPP/src/addeditsettingsdlg.cpp') diff --git a/plugins/DbEditorPP/src/addeditsettingsdlg.cpp b/plugins/DbEditorPP/src/addeditsettingsdlg.cpp deleted file mode 100644 index 52c14c0f32..0000000000 --- a/plugins/DbEditorPP/src/addeditsettingsdlg.cpp +++ /dev/null @@ -1,439 +0,0 @@ -#include "headers.h" - -static BOOL Convert(MCONTACT hContact, char* module, char* setting, int value, int toType) // 0 = byte, 1 = word, 2 = dword, 3 = string -{ - int Result = 1; - char temp[64]; - - switch (toType) { - case 0: - if (value > 0xFF) - Result = 0; - else - db_set_b(hContact, module, setting, (BYTE)value); - break; - case 1: - if (value > 0xFFFF) - Result = 0; - else - db_set_w(hContact, module, setting, (WORD)value); - break; - case 2: - db_set_dw(hContact, module, setting, (DWORD)value); - break; - case 3: - db_unset(hContact, module, setting); - db_set_s(hContact, module, setting, itoa(value, temp, 10)); - break; - } - return Result; -} - - -BOOL convertSetting(MCONTACT hContact, char* module, char* setting, int toType) // 0 = byte, 1 = word, 2 = dword, 3 = string, 4 = unicode -{ - DBVARIANT dbv = { 0 }; - BOOL Result = 0; - - if (!GetSetting(hContact, module, setting, &dbv)) { - switch (dbv.type) { - case DBVT_BYTE: - Result = Convert(hContact, module, setting, dbv.bVal, toType); - break; - - case DBVT_WORD: - Result = Convert(hContact, module, setting, dbv.wVal, toType); - break; - - case DBVT_DWORD: - Result = Convert(hContact, module, setting, dbv.dVal, toType); - break; - - case DBVT_ASCIIZ: - if (toType == 4) // convert to UNICODE - { - int len = (int)mir_strlen(dbv.pszVal) + 1; - WCHAR *wc = (WCHAR*)_alloca(len*sizeof(WCHAR)); - MultiByteToWideChar(CP_ACP, 0, dbv.pszVal, -1, wc, len); - Result = !db_set_ws(hContact, module, setting, wc); - } - else if (mir_strlen(dbv.pszVal) < 11 && toType != 3) { - int val = atoi(dbv.pszVal); - if (val == 0 && dbv.pszVal[0] != '0') - break; - - Result = Convert(hContact, module, setting, val, toType); - } - break; - - case DBVT_UTF8: - if (toType == 3) { // convert to ANSI - int len = (int)mir_strlen(dbv.pszVal) + 1; - char *sz = (char*)_alloca(len * 3); - WCHAR *wc = (WCHAR*)_alloca(len*sizeof(WCHAR)); - MultiByteToWideChar(CP_UTF8, 0, dbv.pszVal, -1, wc, len); - WideCharToMultiByte(CP_ACP, 0, wc, -1, sz, len, NULL, NULL); - Result = !db_set_s(hContact, module, setting, sz); - } - break; - } - - if (!Result) - msg(Translate("Cannot Convert!"), modFullname); - - db_free(&dbv); - } - - return Result; -} - - -int saveAsType(HWND hwnd) -{ - if (IsDlgButtonChecked(hwnd, CHK_BYTE)) - return 0; - else if (IsDlgButtonChecked(hwnd, CHK_WORD)) - return 1; - else if (IsDlgButtonChecked(hwnd, CHK_DWORD)) - return 2; - else if (IsDlgButtonChecked(hwnd, CHK_STRING)) - return 3; - return 3; -} - - -INT_PTR CALLBACK EditSettingDlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) -{ - switch (msg) - { - case WM_INITDIALOG: - { - char tmp[32]; - SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)lParam); - switch (((struct DBsetting*)lParam)->dbv.type) - { - case DBVT_BYTE: - ShowWindow(GetDlgItem(hwnd, IDC_STRING), SW_HIDE); - if (!((struct DBsetting*)lParam)->setting[0]) - { - SetWindowText(hwnd, Translate("New BYTE value")); - } - else - { - SetWindowText(hwnd, Translate("Edit BYTE value")); - SetDlgItemText(hwnd, IDC_SETTINGNAME, ((struct DBsetting*)lParam)->setting); - SetDlgItemText(hwnd, IDC_SETTINGVALUE, itoa(((struct DBsetting*)lParam)->dbv.bVal, tmp, 10)); - } - CheckRadioButton(hwnd, CHK_HEX, CHK_DECIMAL, CHK_DECIMAL); - CheckRadioButton(hwnd, CHK_BYTE, CHK_STRING, CHK_BYTE); - break; - case DBVT_WORD: - ShowWindow(GetDlgItem(hwnd, IDC_STRING), SW_HIDE); - if (!((struct DBsetting*)lParam)->setting[0]) - { - SetWindowText(hwnd, Translate("New WORD value")); - } - else - { - SetWindowText(hwnd, Translate("Edit WORD value")); - SetDlgItemText(hwnd, IDC_SETTINGNAME, ((struct DBsetting*)lParam)->setting); - SetDlgItemText(hwnd, IDC_SETTINGVALUE, itoa(((struct DBsetting*)lParam)->dbv.wVal, tmp, 10)); - } - CheckRadioButton(hwnd, CHK_HEX, CHK_DECIMAL, CHK_DECIMAL); - CheckRadioButton(hwnd, CHK_BYTE, CHK_STRING, CHK_WORD); - break; - case DBVT_DWORD: - ShowWindow(GetDlgItem(hwnd, IDC_STRING), SW_HIDE); - if (!((struct DBsetting*)lParam)->setting[0]) - { - SetWindowText(hwnd, Translate("New DWORD value")); - } - else - { - char text[32]; - SetWindowText(hwnd, Translate("Edit DWORD value")); - SetDlgItemText(hwnd, IDC_SETTINGNAME, ((struct DBsetting*)lParam)->setting); - mir_snprintf(text, SIZEOF(text), "%X", ((struct DBsetting*)lParam)->dbv.dVal); - SetDlgItemText(hwnd, IDC_SETTINGVALUE, text); - } - CheckRadioButton(hwnd, CHK_HEX, CHK_DECIMAL, CHK_HEX); - CheckRadioButton(hwnd, CHK_BYTE, CHK_STRING, CHK_DWORD); - break; - case DBVT_ASCIIZ: - ShowWindow(GetDlgItem(hwnd, IDC_STRING), SW_SHOW); - ShowWindow(GetDlgItem(hwnd, IDC_SETTINGVALUE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_HEX), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_DECIMAL), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, GRP_BASE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, GRP_TYPE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_BYTE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_WORD), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_DWORD), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_STRING), SW_HIDE); - if (!((struct DBsetting*)lParam)->setting[0]) - { - SetWindowText(hwnd, Translate("New STRING value")); - } - else - { - SetWindowText(hwnd, Translate("Edit STRING value")); - SetDlgItemText(hwnd, IDC_SETTINGNAME, ((struct DBsetting*)lParam)->setting); - SetDlgItemText(hwnd, IDC_STRING, ((struct DBsetting*)lParam)->dbv.pszVal); - } - break; - case DBVT_UTF8: - ShowWindow(GetDlgItem(hwnd, IDC_STRING), SW_SHOW); - ShowWindow(GetDlgItem(hwnd, IDC_SETTINGVALUE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_HEX), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_DECIMAL), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, GRP_BASE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, GRP_TYPE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_BYTE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_WORD), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_DWORD), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_STRING), SW_HIDE); - if (!((struct DBsetting*)lParam)->setting[0]) - { - SetWindowText(hwnd, Translate("New UNICODE value")); - } - else - { - char *tmp = (((struct DBsetting*)lParam)->dbv.pszVal); - int length = (int)mir_strlen(tmp) + 1; - WCHAR *wc = (WCHAR*)_alloca(length*sizeof(WCHAR)); - MultiByteToWideChar(CP_UTF8, 0, tmp, -1, wc, length); - SetDlgItemTextW(hwnd, IDC_STRING, wc); - - SetWindowText(hwnd, Translate("Edit UNICODE value")); - SetDlgItemText(hwnd, IDC_SETTINGNAME, ((struct DBsetting*)lParam)->setting); - } - break; - case DBVT_BLOB: - { - ShowWindow(GetDlgItem(hwnd, IDC_STRING), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, IDC_SETTINGVALUE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, IDC_BLOB), SW_SHOW); - - if (!((struct DBsetting*)lParam)->setting[0]) - { - SetWindowText(hwnd, Translate("New BLOB value")); - } - else - { - int j; - char tmp[16]; - int len = ((struct DBsetting*)lParam)->dbv.cpbVal; - char *data = (char*)_alloca(3 * (len + 1) + 10); - BYTE *p = ((struct DBsetting*)lParam)->dbv.pbVal; - - if (!data) return TRUE; - data[0] = '\0'; - - for (j = 0; j < len; j++) - { - mir_snprintf(tmp, "%02X ", (BYTE)p[j]); - mir_strcat(data, tmp); - } - - SetWindowText(hwnd, Translate("Edit BLOB value")); - SetDlgItemText(hwnd, IDC_SETTINGNAME, ((struct DBsetting*)lParam)->setting); - SetDlgItemText(hwnd, IDC_BLOB, data); - } - ShowWindow(GetDlgItem(hwnd, CHK_HEX), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_DECIMAL), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, GRP_BASE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, GRP_TYPE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_BYTE), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_WORD), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_DWORD), SW_HIDE); - ShowWindow(GetDlgItem(hwnd, CHK_STRING), SW_HIDE); - } - break; - default: return TRUE; - } - TranslateDialogDefault(hwnd); - } - return TRUE; - case WM_COMMAND: - switch (LOWORD(wParam)) - { - case CHK_BYTE: - case CHK_WORD: - case CHK_DWORD: - EnableWindow(GetDlgItem(hwnd, CHK_HEX), 1); - EnableWindow(GetDlgItem(hwnd, CHK_DECIMAL), 1); - CheckRadioButton(hwnd, CHK_BYTE, CHK_STRING, LOWORD(wParam)); - break; - case CHK_STRING: - EnableWindow(GetDlgItem(hwnd, CHK_HEX), 0); - EnableWindow(GetDlgItem(hwnd, CHK_DECIMAL), 0); - CheckRadioButton(hwnd, CHK_BYTE, CHK_STRING, LOWORD(wParam)); - break; - - case CHK_HEX: - case CHK_DECIMAL: - CheckRadioButton(hwnd, CHK_HEX, CHK_DECIMAL, LOWORD(wParam)); - { - char *setting, temp[32]; - int settingLength, tmp; - settingLength = GetWindowTextLength(GetDlgItem(hwnd, IDC_SETTINGVALUE)); - if (settingLength) - { - setting = (char*)_alloca(settingLength + 1); - if (setting) - { - // havta convert it with mir_snprintf() - GetDlgItemText(hwnd, IDC_SETTINGVALUE, setting, settingLength + 1); - if (LOWORD(wParam) == CHK_DECIMAL && IsDlgButtonChecked(hwnd, CHK_DECIMAL)) - { - sscanf(setting, "%X", &tmp); - mir_snprintf(temp, SIZEOF(temp), "%ld", tmp); - } - else - { - sscanf(setting, "%d", &tmp); - mir_snprintf(temp, SIZEOF(temp), "%X", tmp); - } - SetDlgItemText(hwnd, IDC_SETTINGVALUE, temp); - } - } - } - break; - case IDOK: - { - struct DBsetting *dbsetting = (struct DBsetting*)GetWindowLongPtr(hwnd, GWLP_USERDATA); - char *setting, *value; - int settingLength, valueLength, valueID = IDC_SETTINGVALUE; - settingLength = GetWindowTextLength(GetDlgItem(hwnd, IDC_SETTINGNAME)); - - if (IsWindowVisible(GetDlgItem(hwnd, IDC_STRING))) - valueID = IDC_STRING; - else - if (IsWindowVisible(GetDlgItem(hwnd, IDC_SETTINGVALUE))) - valueID = IDC_SETTINGVALUE; - else - if (IsWindowVisible(GetDlgItem(hwnd, IDC_BLOB))) - valueID = IDC_BLOB; - else - break; - - valueLength = GetWindowTextLength(GetDlgItem(hwnd, valueID)); - - if (dbsetting->dbv.type == DBVT_UTF8) - valueLength *= sizeof(WCHAR); - - if (settingLength) - { - int settingValue; - setting = (char*)_alloca(settingLength + 1); - - if (valueLength) - value = (char*)_alloca(valueLength + 2); - else - value = (char*)_alloca(2); - - if (!setting || !value) - { - msg(Translate("Couldn't allocate enough memory!"), modFullname); - DestroyWindow(hwnd); - break; - } - - GetDlgItemText(hwnd, IDC_SETTINGNAME, setting, settingLength + 1); - - if (valueLength) - { - if (dbsetting->dbv.type == DBVT_UTF8) - GetDlgItemTextW(hwnd, valueID, (LPWSTR)value, (valueLength + 2)); - else - GetDlgItemText(hwnd, valueID, value, valueLength + 1); - } - else - if (IsWindowVisible(GetDlgItem(hwnd, IDC_STRING)) || (saveAsType(hwnd) == 3)) - memcpy(value, "\0\0", 2); - else - mir_strcpy(value, "0"); - - // delete the old setting - if (mir_strcmp(setting, dbsetting->setting) && dbsetting->setting && (dbsetting->setting)[0] != 0) - db_unset(dbsetting->hContact, dbsetting->module, dbsetting->setting); - - // delete the setting if we are saving as a different type - switch (dbsetting->dbv.type) - { - case DBVT_BYTE: - if (saveAsType(hwnd) != 0) db_unset(dbsetting->hContact, dbsetting->module, setting); - break; - case DBVT_WORD: - if (saveAsType(hwnd) != 1) db_unset(dbsetting->hContact, dbsetting->module, setting); - break; - case DBVT_DWORD: - if (saveAsType(hwnd) != 2) db_unset(dbsetting->hContact, dbsetting->module, setting); - break; - //case DBVT_ASCIIZ: - //db_set_s(dbsetting->hContact, dbsetting->module, setting, value); - //break; - } - // write the setting - switch (saveAsType(hwnd)) - { - case 0: - if (IsDlgButtonChecked(hwnd, CHK_HEX)) sscanf(value, "%x", &settingValue); - else sscanf(value, "%d", &settingValue); - db_set_b(dbsetting->hContact, dbsetting->module, setting, (BYTE)settingValue); - break; - case 1: - if (IsDlgButtonChecked(hwnd, CHK_HEX)) sscanf(value, "%x", &settingValue); - else sscanf(value, "%d", &settingValue); - db_set_w(dbsetting->hContact, dbsetting->module, setting, (WORD)settingValue); - break; - case 2: - if (IsDlgButtonChecked(hwnd, CHK_HEX)) sscanf(value, "%x", &settingValue); - else sscanf(value, "%d", &settingValue); - db_set_dw(dbsetting->hContact, dbsetting->module, setting, (DWORD)settingValue); - break; - case 3: - if (dbsetting->dbv.type == DBVT_UTF8) - db_set_ws(dbsetting->hContact, dbsetting->module, setting, (WCHAR*)value); - else if (dbsetting->dbv.type == DBVT_BLOB) - WriteBlobFromString(dbsetting->hContact, dbsetting->module, setting, value, valueLength); - else if (dbsetting->dbv.type == DBVT_ASCIIZ) - db_set_s(dbsetting->hContact, dbsetting->module, setting, value); - break; - } - - } - } // fall through - case IDCANCEL: - { - struct DBsetting *dbsetting = (struct DBsetting*)GetWindowLongPtr(hwnd, GWLP_USERDATA); - mir_free(dbsetting->module); - mir_free(dbsetting->setting); - mir_free(dbsetting); - DestroyWindow(hwnd); - } - break; - } - break; - } - return 0; -} - -void editSetting(MCONTACT hContact, char* module, char* setting) -{ - DBVARIANT dbv = { 0 }; // freed in the dialog - if (!GetSetting(hContact, module, setting, &dbv)) - { - struct DBsetting *dbsetting = (struct DBsetting *)mir_alloc(sizeof(struct DBsetting)); // gets free()ed in the window proc - - dbsetting->dbv = dbv; // freed in the dialog - dbsetting->hContact = hContact; - dbsetting->module = mir_tstrdup(module); - dbsetting->setting = mir_tstrdup(setting); - - if (dbv.type == DBVT_UTF8) - CreateDialogParamW(hInst, MAKEINTRESOURCEW(IDD_EDIT_SETTING), hwnd2mainWindow, EditSettingDlgProc, (LPARAM)dbsetting); - else - CreateDialogParam(hInst, MAKEINTRESOURCE(IDD_EDIT_SETTING), hwnd2mainWindow, EditSettingDlgProc, (LPARAM)dbsetting); - } -} \ No newline at end of file -- cgit v1.2.3