- Implement "Advanced Key Settings" and "Change Key Sequence" dialogs

svn path=/trunk/; revision=33567
This commit is contained in:
Dmitry Chapyshev 2008-05-18 09:06:48 +00:00
parent 5b23dbf12b
commit e3a477e256
3 changed files with 103 additions and 4 deletions

View file

@ -20,7 +20,7 @@ GetHotkeys(LPTSTR szHotkey, LPTSTR szLangHotkey, LPTSTR szLayoutHotkey)
if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Toggle"),
0, KEY_QUERY_VALUE, &hKey) == ERROR_SUCCESS)
{
dwSize = sizeof(szHotkey);
dwSize = (1 + 1) * sizeof(TCHAR);
if (RegQueryValueEx(hKey, _T("Hotkey"), NULL, NULL,
(LPBYTE)szHotkey, &dwSize) != ERROR_SUCCESS)
{
@ -28,7 +28,7 @@ GetHotkeys(LPTSTR szHotkey, LPTSTR szLangHotkey, LPTSTR szLayoutHotkey)
return FALSE;
}
dwSize = sizeof(szLangHotkey);
dwSize = (1 + 1) * sizeof(TCHAR);
if (RegQueryValueEx(hKey, _T("Language Hotkey"), NULL, NULL,
(LPBYTE)szLangHotkey, &dwSize) != ERROR_SUCCESS)
{
@ -36,7 +36,7 @@ GetHotkeys(LPTSTR szHotkey, LPTSTR szLangHotkey, LPTSTR szLayoutHotkey)
return FALSE;
}
dwSize = sizeof(szLayoutHotkey);
dwSize = (1 + 1) * sizeof(TCHAR);
if (RegQueryValueEx(hKey, _T("Layout Hotkey"), NULL, NULL,
(LPBYTE)szLayoutHotkey, &dwSize) != ERROR_SUCCESS)
{
@ -51,6 +51,66 @@ GetHotkeys(LPTSTR szHotkey, LPTSTR szLangHotkey, LPTSTR szLayoutHotkey)
return TRUE;
}
static VOID
SaveKeySeq(HWND hDlg)
{
TCHAR szLang[1 + 1], szLayout[1 + 1];
HKEY hKey;
if (SendDlgItemMessage(hDlg, IDC_SWITCH_INPUT_LANG_CB, BM_GETCHECK, 0, 0) == BST_CHECKED)
{
if (SendDlgItemMessage(hDlg, IDC_CTRL_LANG, BM_GETCHECK, 0, 0) == BST_CHECKED)
_tcscpy(szLang, _T("2"));
else
_tcscpy(szLang, _T("1"));
}
else
{
_tcscpy(szLang, _T("3"));
}
if (SendDlgItemMessage(hDlg, IDC_SWITCH_KBLAYOUTS_CB, BM_GETCHECK, 0, 0) == BST_CHECKED)
{
if (SendDlgItemMessage(hDlg, IDC_CTRL_LAYOUT, BM_GETCHECK, 0, 0) == BST_CHECKED)
_tcscpy(szLayout, _T("2"));
else
_tcscpy(szLayout, _T("1"));
}
else
{
_tcscpy(szLayout, _T("3"));
}
if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout\\Toggle"), 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
NULL, &hKey, NULL) == ERROR_SUCCESS)
{
if (RegSetValueEx(hKey, _T("Hotkey"), 0, REG_SZ, (LPBYTE)szLang,
(DWORD)((1 + 1) * sizeof(TCHAR))) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return;
}
if (RegSetValueEx(hKey, _T("Language Hotkey"), 0, REG_SZ, (LPBYTE)szLang,
(DWORD)((1 + 1) * sizeof(TCHAR))) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return;
}
if (RegSetValueEx(hKey, _T("Layout Hotkey"), 0, REG_SZ, (LPBYTE)szLayout,
(DWORD)((1 + 1) * sizeof(TCHAR))) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
return;
}
RegCloseKey(hKey);
UpdateKeySettingsList();
}
}
static VOID
InitChangeKeySeqDlg(HWND hDlg)
{
@ -174,6 +234,8 @@ ChangeKeySeqDlgProc(HWND hDlg,
break;
case IDOK:
SaveKeySeq(hDlg);
EndDialog(hDlg, LOWORD(wParam));
break;
case IDCANCEL:

View file

@ -47,6 +47,8 @@ IsLayoutExists(LPTSTR szLayoutID, LPTSTR szLangID);
/* keysettings.c */
INT_PTR CALLBACK
KeySettingsDlgProc(HWND hDlg,UINT message,WPARAM wParam,LPARAM lParam);
VOID
UpdateKeySettingsList();
/* add.c */
INT_PTR CALLBACK

View file

@ -12,6 +12,8 @@
#include "resource.h"
#include "input.h"
static HWND hKeySettingsWnd;
static VOID
AddListColumn(HWND hDlg)
{
@ -56,6 +58,27 @@ GetAttributes()
return dwValue;
}
static VOID
SaveKeySettings(HWND hDlg)
{
HKEY hKey;
DWORD dwValue;
if (SendDlgItemMessage(hDlg, IDC_PRESS_CL_KEY_RB, BM_GETCHECK, 0, 0) == BST_CHECKED)
dwValue = 0x0;
else
dwValue = 0x10000;
if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout"), 0, NULL,
REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
NULL, &hKey, NULL) == ERROR_SUCCESS)
{
RegSetValueEx(hKey, _T("Attributes"), 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));
RegCloseKey(hKey);
}
}
static VOID
InitKeySettingsDlg(HWND hDlg)
{
@ -78,8 +101,10 @@ InitKeySettingsDlg(HWND hDlg)
if (_tcscmp(szLangHotkey, _T("2")) == 0)
LoadString(hApplet, IDS_CTRL_SHIFT, szText, sizeof(szText) / sizeof(TCHAR));
else
else if (_tcscmp(szLangHotkey, _T("1")) == 0)
LoadString(hApplet, IDS_LEFT_ALT_SHIFT, szText, sizeof(szText) / sizeof(TCHAR));
else
LoadString(hApplet, IDS_NONE, szText, sizeof(szText) / sizeof(TCHAR));
item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
item.pszText = szTitle;
@ -92,6 +117,13 @@ InitKeySettingsDlg(HWND hDlg)
ListView_SetItemState(hHotkeyList, i, LVIS_SELECTED, LVIS_OVERLAYMASK);
}
VOID
UpdateKeySettingsList()
{
(VOID) ListView_DeleteAllItems(GetDlgItem(hKeySettingsWnd, IDC_KEY_LISTVIEW));
InitKeySettingsDlg(hKeySettingsWnd);
}
INT_PTR CALLBACK
KeySettingsDlgProc(HWND hDlg,
UINT message,
@ -103,6 +135,7 @@ KeySettingsDlgProc(HWND hDlg,
switch (message)
{
case WM_INITDIALOG:
hKeySettingsWnd = hDlg;
AddListColumn(hDlg);
(VOID) ListView_SetExtendedListViewStyle(GetDlgItem(hDlg, IDC_KEY_LISTVIEW),
LVS_EX_FULLROWSELECT);
@ -120,6 +153,8 @@ KeySettingsDlgProc(HWND hDlg,
break;
case IDOK:
SaveKeySettings(hDlg);
EndDialog(hDlg, LOWORD(wParam));
break;
case IDCANCEL: