#include "commonheaders.h" INT_PTR CALLBACK PopOptionsDlgProc(HWND hDlg, UINT wMsg, WPARAM wParam, LPARAM lParam) { char getTimeout[5]; HWND hec = GetDlgItem(hDlg, IDC_EC); HWND hdc = GetDlgItem(hDlg, IDC_DC); HWND hks = GetDlgItem(hDlg, IDC_KS); HWND hkr = GetDlgItem(hDlg, IDC_KR); HWND hss = GetDlgItem(hDlg, IDC_SS); HWND hsr = GetDlgItem(hDlg, IDC_SR); switch (wMsg) { case WM_INITDIALOG: TranslateDialogDefault(hDlg); RefreshPopupOptionsDlg(hec, hdc, hss, hsr, hks, hkr); DBVARIANT dbv; char *timeout; //set timeout value for Key if (db_get(0, MODULENAME, "timeoutKey", &dbv) == 0) timeout = dbv.pszVal; else timeout = "0"; SetDlgItemText(hDlg, IDC_TIMEKEY, timeout); db_free(&dbv); //set timeout value for SEC if (db_get(0, MODULENAME, "timeoutSec", &dbv) == 0) timeout = dbv.pszVal; else timeout = "0"; SetDlgItemText(hDlg, IDC_TIMESEC, timeout); db_free(&dbv); //set timeout value for SR if (db_get(0, MODULENAME, "timeoutSR", &dbv) == 0) timeout = dbv.pszVal; else timeout = "0"; SetDlgItemText(hDlg, IDC_TIMESR, timeout); db_free(&dbv); //key color SendDlgItemMessage(hDlg, IDC_BACKKEY, CPM_SETCOLOUR, 0, db_get_dw(0, MODULENAME, "colorKeyb", RGB(230, 230, 255))); SendDlgItemMessage(hDlg, IDC_TEXTKEY, CPM_SETCOLOUR, 0, db_get_dw(0, MODULENAME, "colorKeyt", RGB(0, 0, 0))); //Session color SendDlgItemMessage(hDlg, IDC_BACKSEC, CPM_SETCOLOUR, 0, db_get_dw(0, MODULENAME, "colorSecb", RGB(255, 255, 200))); SendDlgItemMessage(hDlg, IDC_TEXTSEC, CPM_SETCOLOUR, 0, db_get_dw(0, MODULENAME, "colorSect", RGB(0, 0, 0))); //SR color SendDlgItemMessage(hDlg, IDC_BACKSR, CPM_SETCOLOUR, 0, db_get_dw(0, MODULENAME, "colorSRb", RGB(200, 255, 200))); SendDlgItemMessage(hDlg, IDC_TEXTSR, CPM_SETCOLOUR, 0, db_get_dw(0, MODULENAME, "colorSRt", RGB(0, 0, 0))); break; case WM_COMMAND: if (HIWORD(wParam) == CPN_COLOURCHANGED) { //It's a colour picker change. LOWORD(wParam) is the control id. DWORD color = SendDlgItemMessage(hDlg, LOWORD(wParam), CPM_GETCOLOUR, 0, 0); switch (LOWORD(wParam)) { case IDC_BACKKEY: db_set_dw(0, MODULENAME, "colorKeyb", color); break; case IDC_TEXTKEY: db_set_dw(0, MODULENAME, "colorKeyt", color); break; case IDC_BACKSEC: db_set_dw(0, MODULENAME, "colorSecb", color); break; case IDC_TEXTSEC: db_set_dw(0, MODULENAME, "colorSect", color); break; case IDC_BACKSR: db_set_dw(0, MODULENAME, "colorSRb", color); break; case IDC_TEXTSR: db_set_dw(0, MODULENAME, "colorSRt", color); break; } return TRUE; } switch (LOWORD(wParam)) { case IDC_PREV: //preview popups... showPopup(LPGEN("Key Popup"), NULL, g_hPOP[POP_PU_PRC], 0); showPopup(LPGEN("Secure Popup"), NULL, g_hPOP[POP_PU_EST], 1); showPopup(LPGEN("Message Popup"), NULL, g_hPOP[POP_PU_MSR], 2); break; case IDC_EC: //set ec checkbox value db_set_b(0, MODULENAME, "ec", (BYTE)(SendMessage(hec, BM_GETCHECK, 0L, 0L) == BST_CHECKED)); break; case IDC_DC: //set dc checkbox value db_set_b(0, MODULENAME, "dc", (BYTE)(SendMessage(hdc, BM_GETCHECK, 0L, 0L) == BST_CHECKED)); break; case IDC_SS: //set ss checkbox value db_set_b(0, MODULENAME, "ss", (BYTE)(SendMessage(hss, BM_GETCHECK, 0L, 0L) == BST_CHECKED)); break; case IDC_SR: //set sr checkbox value db_set_b(0, MODULENAME, "sr", (BYTE)(SendMessage(hsr, BM_GETCHECK, 0L, 0L) == BST_CHECKED)); break; case IDC_KS: //set indicator checkbox value db_set_b(0, MODULENAME, "ks", (BYTE)(SendMessage(hks, BM_GETCHECK, 0L, 0L) == BST_CHECKED)); break; case IDC_KR: //set indicator checkbox value db_set_b(0, MODULENAME, "kr", (BYTE)(SendMessage(hkr, BM_GETCHECK, 0L, 0L) == BST_CHECKED)); break; case IDC_TIMEKEY: //set timeout value GetDlgItemText(hDlg, IDC_TIMEKEY, getTimeout, _countof(getTimeout)); mir_itoa(atoi(getTimeout), getTimeout, 10); db_set_s(0, MODULENAME, "timeoutKey", getTimeout); break; case IDC_TIMESEC: //set timeout value GetDlgItemText(hDlg, IDC_TIMESEC, getTimeout, _countof(getTimeout)); mir_itoa(atoi(getTimeout), getTimeout, 10); db_set_s(0, MODULENAME, "timeoutSec", getTimeout); break; case IDC_TIMESR: //set timeout value GetDlgItemText(hDlg, IDC_TIMESR, getTimeout, _countof(getTimeout)); mir_itoa(atoi(getTimeout), getTimeout, 10); db_set_s(0, MODULENAME, "timeoutSR", getTimeout); break; } RefreshPopupOptionsDlg(hec, hdc, hss, hsr, hks, hkr); break; default: return FALSE; } return TRUE; } void RefreshPopupOptionsDlg(HWND hec, HWND hdc, HWND hss, HWND hsr, HWND hks, HWND hkr) { // ec checkbox SendMessage(hec, BM_SETCHECK, db_get_b(0, MODULENAME, "ec", 1), 0L); // dc checkbox SendMessage(hdc, BM_SETCHECK, db_get_b(0, MODULENAME, "dc", 1), 0L); // ks checkbox SendMessage(hks, BM_SETCHECK, db_get_b(0, MODULENAME, "ks", 1), 0L); // kr checkbox SendMessage(hkr, BM_SETCHECK, db_get_b(0, MODULENAME, "kr", 1), 0L); //ss checkbox SendMessage(hss, BM_SETCHECK, db_get_b(0, MODULENAME, "ss", 0), 0L); //sr checkbox SendMessage(hsr, BM_SETCHECK, db_get_b(0, MODULENAME, "sr", 0), 0L); } int onRegisterPopOptions(WPARAM wParam, LPARAM) { if (bPopupExists) { OPTIONSDIALOGPAGE odp = {}; odp.pszTemplate = MAKEINTRESOURCE(IDD_POPUP); odp.szTitle.a = (char*)MODULENAME; odp.szGroup.a = LPGEN("Popups"); odp.pfnDlgProc = PopOptionsDlgProc; g_plugin.addOptions(wParam, &odp); } return 0; }