From b01805cbb22c14e9a3cd83f5c49c97e6ecb80074 Mon Sep 17 00:00:00 2001 From: sje Date: Mon, 13 Nov 2006 14:48:02 +0000 Subject: git-svn-id: https://server.scottellis.com.au/svn/mim_plugs@45 4f64403b-2f21-0410-a795-97e2b3489a10 --- last_contact/options.cpp | 82 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 last_contact/options.cpp (limited to 'last_contact/options.cpp') diff --git a/last_contact/options.cpp b/last_contact/options.cpp new file mode 100644 index 0000000..940019b --- /dev/null +++ b/last_contact/options.cpp @@ -0,0 +1,82 @@ +#include "common.h" +#include "options.h" + +Options options; + +static BOOL CALLBACK DlgProcOpts(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam) { + + switch ( msg ) { + case WM_INITDIALOG: { + TranslateDialogDefault( hwndDlg ); + WORD mod = 0; + if(options.mod_alt) mod |= HOTKEYF_ALT; + if(options.mod_shift) mod |= HOTKEYF_SHIFT; + if(options.mod_ctrl) mod |= HOTKEYF_CONTROL; + + SendDlgItemMessage(hwndDlg, IDC_HOTKEY, HKM_SETHOTKEY, (mod << 8) + options.vk, 0); + + CheckDlgButton(hwndDlg, IDC_CHK_HIDE, options.hide_if_visible ? TRUE : FALSE); + CheckDlgButton(hwndDlg, IDC_CHK_ONTOP, options.make_topmost ? TRUE : FALSE); + + return TRUE; + } + case WM_COMMAND: + if(HIWORD(wParam) == BN_CLICKED) { + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + if ( HIWORD( wParam ) == EN_CHANGE && ( HWND )lParam == GetFocus()) { + SendMessage(GetParent(hwndDlg), PSM_CHANGED, 0, 0); + } + return TRUE; + case WM_NOTIFY: + if (((LPNMHDR)lParam)->code == (unsigned)PSN_APPLY ) { + WORD hkcode = (WORD)SendDlgItemMessage(hwndDlg, IDC_HOTKEY, HKM_GETHOTKEY, 0, 0); + options.vk = LOBYTE(hkcode); + options.mod_alt = (HIBYTE(hkcode) & HOTKEYF_ALT) != 0; + options.mod_shift = (HIBYTE(hkcode) & HOTKEYF_SHIFT) != 0; + options.mod_ctrl = (HIBYTE(hkcode) & HOTKEYF_CONTROL) != 0; + + DBWriteContactSettingByte(0, MODULE, "VK", (BYTE)options.vk); + DBWriteContactSettingByte(0, MODULE, "MOD_ALT", options.mod_alt ? 1 : 0); + DBWriteContactSettingByte(0, MODULE, "MOD_SHIFT", options.mod_shift ? 1 : 0); + DBWriteContactSettingByte(0, MODULE, "MOD_CTRL", options.mod_ctrl ? 1 : 0); + + options.hide_if_visible = IsDlgButtonChecked(hwndDlg, IDC_CHK_HIDE) ? true : false; + DBWriteContactSettingByte(0, MODULE, "HideIfVisible", options.hide_if_visible ? 1 : 0); + options.make_topmost = IsDlgButtonChecked(hwndDlg, IDC_CHK_ONTOP) ? true : false; + DBWriteContactSettingByte(0, MODULE, "MakeTopmost", options.make_topmost ? 1 : 0); + } + return TRUE; + } + + return FALSE; +} + + +int OptInit(WPARAM wParam,LPARAM lParam) +{ + OPTIONSDIALOGPAGE odp = { 0 }; + odp.cbSize = sizeof(odp); + odp.position = -790000000; + odp.hInstance = hInst; + odp.pszTemplate = MAKEINTRESOURCE(IDD_OPT1); + odp.pszTitle = Translate("Last Contact"); + odp.pszGroup = Translate("Events"); + odp.flags = ODPF_BOLDGROUPS; + odp.nIDBottomSimpleControl = 0; + odp.pfnDlgProc = DlgProcOpts; + CallService( MS_OPT_ADDPAGE, wParam,( LPARAM )&odp ); + + return 0; +} + +void InitOptions() { + options.vk = DBGetContactSettingByte(0, MODULE, "VK", (BYTE)'M'); + options.mod_alt = (DBGetContactSettingByte(0, MODULE, "MOD_ALT", 1) == 1); + options.mod_shift = (DBGetContactSettingByte(0, MODULE, "MOD_SHIFT", 0) == 1); + options.mod_ctrl = (DBGetContactSettingByte(0, MODULE, "MOD_CTRL", 0) == 1); + + options.hide_if_visible = (DBGetContactSettingByte(0, MODULE, "HideIfVisible", 1) == 1); + options.make_topmost = (DBGetContactSettingByte(0, MODULE, "MakeTopmost", 0) == 1); + HookEvent(ME_OPT_INITIALISE, OptInit); +} -- cgit v1.2.3