summaryrefslogtreecommitdiff
path: root/plugins/ChangeKeyboardLayout/src/options.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/ChangeKeyboardLayout/src/options.cpp')
-rw-r--r--plugins/ChangeKeyboardLayout/src/options.cpp500
1 files changed, 500 insertions, 0 deletions
diff --git a/plugins/ChangeKeyboardLayout/src/options.cpp b/plugins/ChangeKeyboardLayout/src/options.cpp
new file mode 100644
index 0000000000..39c678a9f3
--- /dev/null
+++ b/plugins/ChangeKeyboardLayout/src/options.cpp
@@ -0,0 +1,500 @@
+#include "options.h"
+
+
+INT_PTR CALLBACK DlgMainProcOptions(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
+{
+ static BOOL MainDialogLock = FALSE;
+ LPTSTR ptszGenLay, ptszMemLay, ptszFormLay, ptszShortNameLay;
+ LPSTR pszNameLay;
+ BYTE i;
+
+ switch (uiMessage)
+ {
+ case WM_INITDIALOG:
+ {
+ MainDialogLock = TRUE;
+ TranslateDialogDefault(hWnd);
+
+ //Горячие клавиши
+ // Запрещаем вводить в контролы все, кроме обычных кнопок
+ SendDlgItemMessage(hWnd, IDC_HOTKEY_LAYOUT, HKM_SETRULES, 0xFF, 0);
+ SendDlgItemMessage(hWnd, IDC_HOTKEY_LAYOUT2, HKM_SETRULES, 0xFF, 0);
+ SendDlgItemMessage(hWnd, IDC_HOTKEY_CASE, HKM_SETRULES, 0xFF, 0);
+
+ //Отображаем управляющие клавиши
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_SHIFT, BM_SETCHECK, (moOptions.dwHotkey_Layout&0x00000100), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_CTRL, BM_SETCHECK, (moOptions.dwHotkey_Layout&0x00000200), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_ALT, BM_SETCHECK, (moOptions.dwHotkey_Layout&0x00000400), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_WIN, BM_SETCHECK, (moOptions.dwHotkey_Layout&0x00000800), 0);
+
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT2_SHIFT, BM_SETCHECK, (moOptions.dwHotkey_Layout2&0x00000100), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT2_CTRL, BM_SETCHECK, (moOptions.dwHotkey_Layout2&0x00000200), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT2_ALT, BM_SETCHECK, (moOptions.dwHotkey_Layout2&0x00000400), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT2_WIN, BM_SETCHECK, (moOptions.dwHotkey_Layout2&0x00000800), 0);
+
+ SendDlgItemMessage(hWnd, IDC_CHECK_CASE_SHIFT, BM_SETCHECK, (moOptions.dwHotkey_Case&0x00000100), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_CASE_CTRL, BM_SETCHECK, (moOptions.dwHotkey_Case&0x00000200), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_CASE_ALT, BM_SETCHECK, (moOptions.dwHotkey_Case&0x00000400), 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_CASE_WIN, BM_SETCHECK, (moOptions.dwHotkey_Case&0x00000800), 0);
+
+ //Показываем символ из хоткея
+ SendDlgItemMessage(hWnd, IDC_HOTKEY_LAYOUT, HKM_SETHOTKEY, moOptions.dwHotkey_Layout&0x000000FF, 0);
+ SendDlgItemMessage(hWnd, IDC_HOTKEY_LAYOUT2, HKM_SETHOTKEY, moOptions.dwHotkey_Layout2&0x000000FF, 0);
+ SendDlgItemMessage(hWnd, IDC_HOTKEY_CASE, HKM_SETHOTKEY, moOptions.dwHotkey_Case&0x000000FF, 0);
+
+ //Остальные опции
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_MODE, BM_SETCHECK, moOptions.CurrentWordLayout, 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_MODE2, BM_SETCHECK, moOptions.CurrentWordLayout2, 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_CASE_MODE, BM_SETCHECK, moOptions.CurrentWordCase, 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_TWOWAY, BM_SETCHECK, moOptions.TwoWay, 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_SYSTEMLAYOUT, BM_SETCHECK, moOptions.ChangeSystemLayout, 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_CLIPBOARD, BM_SETCHECK, moOptions.CopyToClipboard, 0);
+ SendDlgItemMessage(hWnd, IDC_CHECK_POPUP, BM_SETCHECK, moOptions.ShowPopup, 0);
+
+ //Смена состояния CapsLock
+ switch(moOptions.bCaseOperations)
+ {
+ case 1:
+ SendDlgItemMessage(hWnd, IDC_RADIO_OFFCAPS, BM_SETCHECK, 1, 0);
+ break;
+ case 2:
+ SendDlgItemMessage(hWnd, IDC_RADIO_IGNORECAPS, BM_SETCHECK, 1, 0);
+ break;
+ default:
+ SendDlgItemMessage(hWnd, IDC_RADIO_INVERTCAPS, BM_SETCHECK, 1, 0);
+ break;
+ }
+
+ // Отображаем пример конфиг.строки
+ ptszMemLay = ptszLayStrings[0];
+ SendDlgItemMessage(hWnd, IDC_EDIT_EXAMPLE, WM_SETTEXT, 0, (LPARAM)ptszMemLay);
+ ptszShortNameLay = GetShortNameOfLayout(hklLayouts[0]);
+ SendDlgItemMessage(hWnd, IDC_STATIC_EXAMPLE, WM_SETTEXT, 0, (LPARAM)ptszShortNameLay);
+ mir_free(ptszShortNameLay);
+
+ // Заполняем комбобокс с текущими раскладками
+ for(i = 0; i < bLayNum; i++)
+ {
+ ptszShortNameLay = GetShortNameOfLayout(hklLayouts[i]);
+ SendDlgItemMessage(hWnd, IDC_COMBO_LANG, CB_ADDSTRING, 0, (LPARAM)ptszShortNameLay);
+ mir_free(ptszShortNameLay);
+ }
+ //Отображаем первую раскладку в списке
+ SendDlgItemMessage(hWnd, IDC_COMBO_LANG, CB_SETCURSEL, 0, 0);
+ ptszMemLay = ptszLayStrings[0];
+ SendDlgItemMessage(hWnd, IDC_EDIT_SET, WM_SETTEXT, 0, (LPARAM)ptszMemLay);
+
+ if (bLayNum != 2) EnableWindow(GetDlgItem(hWnd, IDC_CHECK_TWOWAY), FALSE);
+ MainDialogLock = FALSE;
+ return TRUE;
+ }
+ case WM_COMMAND:
+ {
+ switch (LOWORD(wParam))
+ {
+ case IDC_HOTKEY_LAYOUT:
+ case IDC_HOTKEY_LAYOUT2:
+ case IDC_HOTKEY_CASE:
+
+ {
+ if ((HIWORD(wParam) == EN_CHANGE))
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ break;
+ }
+ case IDC_CHECK_DETECT:
+ case IDC_CHECK_LAYOUT_MODE:
+ case IDC_CHECK_LAYOUT_MODE2:
+ case IDC_CHECK_CASE_MODE:
+ case IDC_CHECK_TWOWAY:
+ case IDC_CHECK_SYSTEMLAYOUT:
+ case IDC_CHECK_POPUP:
+ case IDC_CHECK_CLIPBOARD:
+ case IDC_CHECK_LAYOUT_SHIFT:
+ case IDC_CHECK_LAYOUT_ALT:
+ case IDC_CHECK_LAYOUT_CTRL:
+ case IDC_CHECK_LAYOUT_WIN:
+ case IDC_CHECK_LAYOUT2_SHIFT:
+ case IDC_CHECK_LAYOUT2_ALT:
+ case IDC_CHECK_LAYOUT2_CTRL:
+ case IDC_CHECK_LAYOUT2_WIN:
+ case IDC_CHECK_CASE_SHIFT:
+ case IDC_CHECK_CASE_ALT:
+ case IDC_CHECK_CASE_CTRL:
+ case IDC_CHECK_CASE_WIN:
+ case IDC_RADIO_IGNORECAPS:
+ case IDC_RADIO_INVERTCAPS:
+ case IDC_RADIO_OFFCAPS:
+
+ {
+ if ((HIWORD(wParam) == BN_CLICKED))
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ break;
+ }
+ case IDC_COMBO_LANG:
+ {
+ if ((HIWORD(wParam) == CBN_SELCHANGE))
+ {
+ MainDialogLock = TRUE;
+ ptszMemLay = ptszLayStrings[SendDlgItemMessage(hWnd, IDC_COMBO_LANG, CB_GETCURSEL, 0, 0)];
+ SendDlgItemMessage(hWnd, IDC_EDIT_SET, WM_SETTEXT, 0, (LPARAM)ptszMemLay);
+ MainDialogLock = FALSE;
+ }
+ break;
+ }
+ case IDC_EDIT_SET:
+ {
+ if ((HIWORD(wParam) == EN_CHANGE) && (!MainDialogLock))
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ break;
+ }
+
+ case IDC_BUTTON_DEFAULT:
+ {
+ if ((HIWORD(wParam) == BN_CLICKED ))
+ {
+ ptszGenLay = GenerateLayoutString(hklLayouts[SendDlgItemMessage(hWnd, IDC_COMBO_LANG, CB_GETCURSEL, 0, 0)]);
+ SendDlgItemMessage(hWnd, IDC_EDIT_SET, WM_SETTEXT, 0, (LPARAM)ptszGenLay);
+ mir_free(ptszGenLay);
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ }
+ break;
+ }
+
+ }
+ break;
+ }
+ case WM_NOTIFY:
+ {
+ switch(((LPNMHDR)lParam)->idFrom)
+ {
+ case 0:
+ {
+ switch (((LPNMHDR)lParam)->code)
+ {
+ case PSN_APPLY:
+ {
+ // Прочитаем хоткеи
+ moOptions.dwHotkey_Layout = SendDlgItemMessage(hWnd, IDC_HOTKEY_LAYOUT, HKM_GETHOTKEY, 0, 0);
+ moOptions.dwHotkey_Layout2 = SendDlgItemMessage(hWnd, IDC_HOTKEY_LAYOUT2, HKM_GETHOTKEY, 0, 0);
+ moOptions.dwHotkey_Case = SendDlgItemMessage(hWnd, IDC_HOTKEY_CASE, HKM_GETHOTKEY, 0, 0);
+
+ //Допишем к символам управляющие клавиши
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_SHIFT, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Layout |= 0x00000100;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_CTRL, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Layout |= 0x00000200;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_ALT, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Layout |= 0x00000400;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_WIN, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Layout |= 0x00000800;
+
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT2_SHIFT, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Layout2 |= 0x00000100;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT2_CTRL, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Layout2 |= 0x00000200;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT2_ALT, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Layout2 |= 0x00000400;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT2_WIN, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Layout2 |= 0x00000800;
+
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_CASE_SHIFT, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Case |= 0x00000100;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_CASE_CTRL, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Case |= 0x00000200;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_CASE_ALT, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Case |= 0x00000400;
+ if (SendDlgItemMessage(hWnd, IDC_CHECK_CASE_WIN, BM_GETCHECK, 0, 0))
+ moOptions.dwHotkey_Case |= 0x00000800;
+
+
+ //Прочие опции
+ moOptions.CurrentWordLayout = SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_MODE, BM_GETCHECK, 0, 0);
+ moOptions.CurrentWordLayout2 = SendDlgItemMessage(hWnd, IDC_CHECK_LAYOUT_MODE2, BM_GETCHECK, 0, 0);
+ moOptions.CurrentWordCase = SendDlgItemMessage(hWnd, IDC_CHECK_CASE_MODE, BM_GETCHECK, 0, 0);
+ moOptions.TwoWay = SendDlgItemMessage(hWnd, IDC_CHECK_TWOWAY, BM_GETCHECK, 0, 0);
+ moOptions.ChangeSystemLayout = SendDlgItemMessage(hWnd, IDC_CHECK_SYSTEMLAYOUT, BM_GETCHECK, 0, 0);
+ moOptions.CopyToClipboard = SendDlgItemMessage(hWnd, IDC_CHECK_CLIPBOARD, BM_GETCHECK, 0, 0);
+ moOptions.ShowPopup = SendDlgItemMessage(hWnd, IDC_CHECK_POPUP, BM_GETCHECK, 0, 0);
+
+ // CapsLock
+ if (SendDlgItemMessage(hWnd, IDC_RADIO_OFFCAPS, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ moOptions.bCaseOperations = 1;
+ else if (SendDlgItemMessage(hWnd, IDC_RADIO_IGNORECAPS, BM_GETCHECK, 0, 0) == BST_CHECKED)
+ moOptions.bCaseOperations = 2;
+ else moOptions.bCaseOperations = 0;
+
+ WriteMainOptions();
+
+ ptszFormLay = (LPTSTR)mir_alloc(MaxTextSize*sizeof(TCHAR));
+ SendDlgItemMessage(hWnd, IDC_EDIT_SET, WM_GETTEXT, (WPARAM) MaxTextSize, (LPARAM)ptszFormLay);
+ i = SendDlgItemMessage(hWnd, IDC_COMBO_LANG, CB_GETCURSEL, 0, 0);
+ ptszMemLay = ptszLayStrings[i];
+ if(_tcscmp(ptszMemLay, ptszFormLay) != 0)
+ {
+ _tcscpy(ptszMemLay, ptszFormLay);
+ ptszGenLay = GenerateLayoutString(hklLayouts[i]);
+ pszNameLay = GetNameOfLayout(hklLayouts[i]);
+
+ if(_tcscmp(ptszMemLay, ptszGenLay) != 0)
+ DBWriteContactSettingTString(NULL, ModuleName, pszNameLay, ptszMemLay);
+ else
+ DBDeleteContactSetting(NULL, ModuleName, pszNameLay);
+
+ mir_free(pszNameLay);
+ mir_free(ptszGenLay);
+ }
+ mir_free(ptszFormLay);
+
+ ptszMemLay = ptszLayStrings[0];
+ SendDlgItemMessage(hWnd, IDC_EDIT_EXAMPLE, WM_SETTEXT, 0, (LPARAM)ptszMemLay);
+
+ UnhookWindowsHookEx(kbHook_All);
+ kbHook_All = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)Keyboard_Hook, NULL, GetCurrentThreadId());
+
+ break;
+ }
+ }
+ break;
+ }
+ }
+ break;
+ }
+
+ case WM_DESTROY:
+ {
+ break;
+ }
+
+ }
+ return FALSE;
+}
+
+
+INT_PTR CALLBACK DlgPopupsProcOptions(HWND hWnd, UINT uiMessage, WPARAM wParam, LPARAM lParam)
+{
+ POPUPDATAT_V2 pdtData;
+ static BOOL PopupDialogLock = FALSE;
+ LPTSTR ptszPopupPreviewText;
+ DWORD dwTimeOut;
+
+ switch (uiMessage)
+ {
+ case WM_INITDIALOG:
+ {
+ PopupDialogLock = TRUE;
+ TranslateDialogDefault(hWnd);
+ poOptionsTemp = poOptions;
+
+ //Цвета
+ SendDlgItemMessage(hWnd, IDC_CUSTOM_BACK, CPM_SETCOLOUR, 0, poOptionsTemp.crBackColour);
+ SendDlgItemMessage(hWnd, IDC_CUSTOM_TEXT, CPM_SETCOLOUR, 0, poOptionsTemp.crTextColour);
+ CheckDlgButton(hWnd, IDC_RADIO_COLOURS_POPUP, poOptionsTemp.bColourType == PPC_POPUP);
+ CheckDlgButton(hWnd, IDC_RADIO_COLOURS_WINDOWS, poOptionsTemp.bColourType == PPC_WINDOWS);
+ CheckDlgButton(hWnd, IDC_RADIO_COLOURS_CUSTOM, poOptionsTemp.bColourType == PPC_CUSTOM);
+ EnableWindow(GetDlgItem(hWnd, IDC_CUSTOM_BACK), poOptionsTemp.bColourType == PPC_CUSTOM);
+ EnableWindow(GetDlgItem(hWnd, IDC_CUSTOM_TEXT), poOptionsTemp.bColourType == PPC_CUSTOM);
+
+ // Таймаут
+ CheckDlgButton(hWnd, IDC_RADIO_TIMEOUT_POPUP, poOptionsTemp.bTimeoutType == PPT_POPUP);
+ CheckDlgButton(hWnd, IDC_RADIO_TIMEOUT_PERMANENT, poOptionsTemp.bTimeoutType == PPT_PERMANENT);
+ CheckDlgButton(hWnd, IDC_RADIO_TIMEOUT_CUSTOM, poOptionsTemp.bTimeoutType == PPT_CUSTOM);
+ SetDlgItemInt(hWnd, IDC_EDIT_TIMEOUT, poOptionsTemp.bTimeout, FALSE);
+ EnableWindow(GetDlgItem(hWnd, IDC_EDIT_TIMEOUT), poOptionsTemp.bTimeoutType == PPT_CUSTOM);
+
+ // Клик левой
+ CheckDlgButton(hWnd, IDC_RADIO_LEFT_CLIPBOARD, poOptionsTemp.bLeftClick == 0);
+ CheckDlgButton(hWnd, IDC_RADIO_LEFT_DISMISS, poOptionsTemp.bLeftClick == 1);
+ // Клик правой
+ CheckDlgButton(hWnd, IDC_RADIO_RIGHT_CLIPBOARD, poOptionsTemp.bRightClick == 0);
+ CheckDlgButton(hWnd, IDC_RADIO_RIGHT_DISMISS, poOptionsTemp.bRightClick == 1);
+ PopupDialogLock = FALSE;
+ return TRUE;
+ }
+
+ case WM_COMMAND:
+ {
+ switch (LOWORD(wParam))
+ {
+ case IDC_RADIO_COLOURS_POPUP:
+ case IDC_RADIO_COLOURS_WINDOWS:
+ case IDC_RADIO_COLOURS_CUSTOM:
+ {
+ if ((HIWORD(wParam) == BN_CLICKED))
+ {
+ if (IsDlgButtonChecked(hWnd, IDC_RADIO_COLOURS_POPUP))
+ poOptionsTemp.bColourType = PPC_POPUP;
+ else if (IsDlgButtonChecked(hWnd, IDC_RADIO_COLOURS_WINDOWS))
+ poOptionsTemp.bColourType = PPC_WINDOWS;
+ else if (IsDlgButtonChecked(hWnd, IDC_RADIO_COLOURS_CUSTOM))
+ poOptionsTemp.bColourType = PPC_CUSTOM;
+
+ EnableWindow(GetDlgItem(hWnd, IDC_CUSTOM_BACK), poOptionsTemp.bColourType == PPC_CUSTOM);
+ EnableWindow(GetDlgItem(hWnd, IDC_CUSTOM_TEXT), poOptionsTemp.bColourType == PPC_CUSTOM);
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ }
+ }
+
+
+ case IDC_RADIO_TIMEOUT_POPUP:
+ case IDC_RADIO_TIMEOUT_PERMANENT:
+ case IDC_RADIO_TIMEOUT_CUSTOM:
+ {
+ if ((HIWORD(wParam) == BN_CLICKED))
+ {
+ if (IsDlgButtonChecked(hWnd, IDC_RADIO_TIMEOUT_POPUP))
+ poOptionsTemp.bTimeoutType = PPT_POPUP;
+ else if (IsDlgButtonChecked(hWnd, IDC_RADIO_TIMEOUT_PERMANENT))
+ poOptionsTemp.bTimeoutType = PPT_PERMANENT;
+ if (IsDlgButtonChecked(hWnd, IDC_RADIO_TIMEOUT_CUSTOM))
+ poOptionsTemp.bTimeoutType = PPT_CUSTOM;
+
+ EnableWindow(GetDlgItem(hWnd, IDC_EDIT_TIMEOUT), poOptionsTemp.bTimeoutType == PPT_CUSTOM);
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ }
+ break;
+ }
+
+ case IDC_RADIO_LEFT_CLIPBOARD:
+ case IDC_RADIO_LEFT_DISMISS:
+ {
+ if ((HIWORD(wParam) == BN_CLICKED))
+ {
+ if (IsDlgButtonChecked(hWnd, IDC_RADIO_LEFT_CLIPBOARD))
+ poOptionsTemp.bLeftClick = 0;
+ else if (IsDlgButtonChecked(hWnd, IDC_RADIO_LEFT_DISMISS))
+ poOptionsTemp.bLeftClick = 1;
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ }
+ break;
+ }
+
+ case IDC_RADIO_RIGHT_CLIPBOARD:
+ case IDC_RADIO_RIGHT_DISMISS:
+ {
+ if ((HIWORD(wParam) == BN_CLICKED))
+ {
+ if (IsDlgButtonChecked(hWnd, IDC_RADIO_RIGHT_CLIPBOARD))
+ poOptionsTemp.bRightClick = 0;
+ else if (IsDlgButtonChecked(hWnd, IDC_RADIO_RIGHT_DISMISS))
+ poOptionsTemp.bRightClick = 1;
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ }
+ break;
+ }
+
+ case IDC_CUSTOM_BACK:
+ case IDC_CUSTOM_TEXT:
+ {
+ if (HIWORD(wParam) == CBN_SELCHANGE)
+ {
+ poOptionsTemp.crBackColour = SendDlgItemMessage(hWnd, IDC_CUSTOM_BACK, CPM_GETCOLOUR, 0, 0);
+ poOptionsTemp.crTextColour = SendDlgItemMessage(hWnd, IDC_CUSTOM_TEXT, CPM_GETCOLOUR, 0, 0);
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ }
+ break;
+ }
+ case IDC_EDIT_TIMEOUT:
+ {
+ if (HIWORD(wParam) == EN_CHANGE)
+ {
+ dwTimeOut = GetDlgItemInt(hWnd, IDC_EDIT_TIMEOUT, NULL, FALSE);
+ if (dwTimeOut>255)
+ poOptionsTemp.bTimeout = 255;
+ else
+ poOptionsTemp.bTimeout = dwTimeOut;
+
+ if (!PopupDialogLock)
+ SendMessage(GetParent(hWnd), PSM_CHANGED, 0, 0);
+ }
+ break;
+ }
+
+ case IDC_BUTTON_PREVIEW:
+ {
+ if ((HIWORD(wParam) == BN_CLICKED ))
+ {
+ ptszPopupPreviewText = (LPTSTR)mir_alloc(MaxTextSize*sizeof(TCHAR));
+
+ pdtData.cbSize = sizeof(POPUPDATAT_V2);
+ ZeroMemory(&pdtData, sizeof(pdtData));
+ _tcsncpy(pdtData.lptzContactName, TranslateT(ModuleName), MAX_CONTACTNAME);
+ _tcsncpy(pdtData.lptzText, _T("Ghbdtn? rfr ltkf&"), MAX_SECONDLINE);
+
+ switch(poOptionsTemp.bColourType)
+ {
+ case PPC_POPUP:
+ pdtData.colorBack = pdtData.colorText = 0;
+ break;
+ case PPC_WINDOWS:
+ pdtData.colorBack = GetSysColor(COLOR_BTNFACE);
+ pdtData.colorText = GetSysColor(COLOR_WINDOWTEXT);
+ break;
+ case PPC_CUSTOM:
+ pdtData.colorBack = poOptionsTemp.crBackColour;
+ pdtData.colorText = poOptionsTemp.crTextColour;
+ break;
+ default:
+ break;
+ }
+ switch(poOptionsTemp.bTimeoutType)
+ {
+ case PPT_POPUP:
+ pdtData.iSeconds = 0;
+ break;
+ case PPT_PERMANENT:
+ pdtData.iSeconds = -1;
+ break;
+ case PPC_CUSTOM:
+ pdtData.iSeconds = poOptionsTemp.bTimeout;
+ break;
+ }
+ _tcscpy(ptszPopupPreviewText, pdtData.lptzText);
+ pdtData.PluginData = ptszPopupPreviewText;
+ pdtData.lchIcon = hPopupIcon;
+ poOptions.paActions[0].lchIcon = hCopyIcon;
+ pdtData.lpActions = poOptions.paActions;
+ pdtData.actionCount = 1;
+ pdtData.PluginWindowProc = (WNDPROC)CKLPopupDlgProc;
+
+ if (CallService(MS_POPUP_ADDPOPUPT, (WPARAM) &pdtData, APF_NEWDATA)<0)
+ mir_free(ptszPopupPreviewText);
+ }
+ break;
+ }
+
+ default:
+ break;
+ }
+ break;
+}
+
+ case WM_NOTIFY:
+ {
+ switch(((LPNMHDR)lParam)->idFrom)
+ {
+ case 0:
+ {
+ switch (((LPNMHDR)lParam)->code)
+ {
+ case PSN_APPLY:
+ {
+ poOptions = poOptionsTemp;
+ WritePopupOptions();
+ break;
+ }
+ }
+ break;
+ }
+ }
+ break;
+ }
+
+ case WM_DESTROY:
+ {
+ break;
+ }
+
+ }
+ return FALSE;
+}
+