ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

keysettings.c
Go to the documentation of this file.
00001 /*
00002  *
00003  * PROJECT:         input.dll
00004  * FILE:            dll/win32/input/keysettings.c
00005  * PURPOSE:         input.dll
00006  * PROGRAMMER:      Dmitry Chapyshev (dmitry@reactos.org)
00007  *                  Colin Finck
00008  * UPDATE HISTORY:
00009  *      06-09-2007  Created
00010  */
00011 
00012 #include "input.h"
00013 
00014 static HWND hKeySettingsWnd;
00015 
00016 static VOID
00017 AddListColumn(HWND hDlg)
00018 {
00019     LV_COLUMN column;
00020     HWND hList = GetDlgItem(hDlg, IDC_KEY_LISTVIEW);
00021 
00022     ZeroMemory(&column, sizeof(LV_COLUMN));
00023     column.mask         = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH | LVCF_SUBITEM;
00024 
00025     column.fmt          = LVCFMT_LEFT;
00026     column.iSubItem     = 0;
00027     column.pszText      = _T("");
00028     column.cx           = 210;
00029     (VOID) ListView_InsertColumn(hList, 0, &column);
00030 
00031     column.fmt          = LVCFMT_RIGHT;
00032     column.cx           = 145;
00033     column.iSubItem     = 1;
00034     column.pszText      = _T("");
00035     (VOID) ListView_InsertColumn(hList, 1, &column);
00036 }
00037 
00038 static DWORD
00039 GetAttributes()
00040 {
00041     DWORD dwValue, dwType, dwSize;
00042     HKEY hKey;
00043 
00044     if (RegOpenKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout"), 0, KEY_QUERY_VALUE, &hKey) != ERROR_SUCCESS)
00045         return 0x0;
00046 
00047     dwType = REG_DWORD;
00048     dwSize = sizeof(DWORD);
00049 
00050     if (RegQueryValueEx(hKey, _T("Attributes"), NULL, &dwType, (LPBYTE)&dwValue, &dwSize) != ERROR_SUCCESS)
00051     {
00052         RegCloseKey(hKey);
00053         return 0x0;
00054     }
00055 
00056     RegCloseKey(hKey);
00057     return dwValue;
00058 }
00059 
00060 static VOID
00061 SaveKeySettings(HWND hDlg)
00062 {
00063     HKEY hKey;
00064     DWORD dwValue;
00065 
00066     if (SendDlgItemMessage(hDlg, IDC_PRESS_CL_KEY_RB, BM_GETCHECK, 0, 0) == BST_CHECKED)
00067         dwValue = 0x0;
00068     else
00069         dwValue = 0x10000;
00070 
00071     if (RegCreateKeyEx(HKEY_CURRENT_USER, _T("Keyboard Layout"), 0, NULL,
00072                        REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS,
00073                        NULL, &hKey, NULL) == ERROR_SUCCESS)
00074     {
00075         RegSetValueEx(hKey, _T("Attributes"), 0, REG_DWORD, (LPBYTE)&dwValue, sizeof(DWORD));
00076 
00077         RegCloseKey(hKey);
00078     }
00079 }
00080 
00081 static VOID
00082 InitKeySettingsDlg(HWND hDlg)
00083 {
00084     TCHAR szHotkey[1 + 1], szLangHotkey[1 + 1], szLayoutHotkey[1 + 1],
00085           szTitle[MAX_PATH], szText[MAX_PATH];
00086     LV_ITEM item = {0};
00087     HWND hHotkeyList = GetDlgItem(hDlg, IDC_KEY_LISTVIEW);
00088     INT i;
00089 
00090     if (GetAttributes() != 0x0)
00091         SendDlgItemMessage(hDlg, IDC_PRESS_SHIFT_KEY_RB, BM_SETCHECK, 1, 1);
00092     else
00093         SendDlgItemMessage(hDlg, IDC_PRESS_CL_KEY_RB, BM_SETCHECK, 1, 1);
00094 
00095     if (!GetHotkeys(szHotkey, szLangHotkey, szLayoutHotkey))
00096         return;
00097 
00098     if (!LoadString(hApplet, IDS_SWITCH_BET_INLANG, szTitle, sizeof(szTitle) / sizeof(TCHAR)))
00099         return;
00100 
00101     if (_tcscmp(szLangHotkey, _T("2")) == 0)
00102         LoadString(hApplet, IDS_CTRL_SHIFT, szText, sizeof(szText) / sizeof(TCHAR));
00103     else if (_tcscmp(szLangHotkey, _T("1")) == 0)
00104         LoadString(hApplet, IDS_LEFT_ALT_SHIFT, szText, sizeof(szText) / sizeof(TCHAR));
00105     else
00106         LoadString(hApplet, IDS_NONE, szText, sizeof(szText) / sizeof(TCHAR));
00107 
00108     item.mask = LVIF_TEXT | LVIF_PARAM | LVIF_STATE;
00109     item.pszText = szTitle;
00110     item.iItem   = 0;
00111     i = ListView_InsertItem(hHotkeyList, &item);
00112 
00113     ListView_SetItemText(hHotkeyList, i, 1, szText);
00114 
00115     (VOID) ListView_SetHotItem(hHotkeyList, i);
00116     ListView_SetItemState(hHotkeyList, i, LVIS_SELECTED, LVIS_OVERLAYMASK);
00117 }
00118 
00119 VOID
00120 UpdateKeySettingsList()
00121 {
00122     (VOID) ListView_DeleteAllItems(GetDlgItem(hKeySettingsWnd, IDC_KEY_LISTVIEW));
00123     InitKeySettingsDlg(hKeySettingsWnd);
00124 }
00125 
00126 INT_PTR CALLBACK
00127 KeySettingsDlgProc(HWND hDlg,
00128                    UINT message,
00129                    WPARAM wParam,
00130                    LPARAM lParam)
00131 {
00132     UNREFERENCED_PARAMETER(lParam);
00133 
00134     switch (message)
00135     {
00136         case WM_INITDIALOG:
00137             hKeySettingsWnd = hDlg;
00138             AddListColumn(hDlg);
00139             (VOID) ListView_SetExtendedListViewStyle(GetDlgItem(hDlg, IDC_KEY_LISTVIEW),
00140                                                      LVS_EX_FULLROWSELECT);
00141             InitKeySettingsDlg(hDlg);
00142             break;
00143 
00144         case WM_COMMAND:
00145             switch (LOWORD(wParam))
00146             {
00147                 case IDC_CHANGE_KEY_SEQ_BTN:
00148                     DialogBox(hApplet,
00149                               MAKEINTRESOURCE(IDD_CHANGE_KEY_SEQ),
00150                               hDlg,
00151                               ChangeKeySeqDlgProc);
00152                     break;
00153 
00154                 case IDOK:
00155                     SaveKeySettings(hDlg);
00156                     EndDialog(hDlg, LOWORD(wParam));
00157                     break;
00158 
00159                 case IDCANCEL:
00160                     EndDialog(hDlg, LOWORD(wParam));
00161                     break;
00162             }
00163             break;
00164     }
00165 
00166     return FALSE;
00167 }
00168 
00169 /* EOF */

Generated on Sat May 26 2012 04:19:44 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.