Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygengeneral.c
Go to the documentation of this file.
00001 /* $Id: general.c 29112 2007-09-19 21:31:49Z ekohl $ 00002 * 00003 * PROJECT: ReactOS Accessibility Control Panel 00004 * LICENSE: GPL - See COPYING in the top level directory 00005 * FILE: dll/cpl/access/general.c 00006 * PURPOSE: General accessibility settings 00007 * COPYRIGHT: Copyright 2004 Johannes Anderwald (j_anderw@sbox.tugraz.at) 00008 * Copyright 2007 Eric Kohl 00009 */ 00010 00011 #include "access.h" 00012 00013 00014 #define BAUDTICKS 6 00015 static UINT nBaudArray[BAUDTICKS] = {300, 1200, 2400, 4800, 9600, 19200}; 00016 00017 00018 INT_PTR CALLBACK 00019 SerialKeysDlgProc(HWND hwndDlg, 00020 UINT uMsg, 00021 WPARAM wParam, 00022 LPARAM lParam) 00023 { 00024 PGLOBAL_DATA pGlobalData; 00025 INT i, n; 00026 00027 pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER); 00028 00029 switch (uMsg) 00030 { 00031 case WM_INITDIALOG: 00032 pGlobalData = (PGLOBAL_DATA)lParam; 00033 SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData); 00034 00035 /* Add the COM-Ports 1 - 4 to the list */ 00036 for (i = 0; i < 4; i++) 00037 { 00038 TCHAR szBuffer[256]; 00039 00040 _stprintf(szBuffer, _T("COM%d"), i + 1); 00041 SendDlgItemMessage(hwndDlg, IDC_SERIAL_PORT_COMBO, CB_ADDSTRING, 0, (LPARAM)szBuffer); 00042 } 00043 00044 /* Determine the current port */ 00045 if (pGlobalData->serialKeys.lpszActivePort && pGlobalData->serialKeys.lpszActivePort[0]) 00046 { 00047 i = pGlobalData->serialKeys.lpszActivePort[3] - '1'; 00048 if (i < 0 || i > 3) 00049 i = 0; 00050 } 00051 else 00052 { 00053 /* Make COM1 the default port */ 00054 i = 0; 00055 _tcscpy(pGlobalData->serialKeys.lpszActivePort, _T("COM1")); 00056 } 00057 00058 /* Set the current port */ 00059 SendDlgItemMessage(hwndDlg, IDC_SERIAL_PORT_COMBO, CB_SETCURSEL, i, 0); 00060 00061 /* Determine the current baud rate */ 00062 n = 0; 00063 for (i = 0; i < BAUDTICKS; i++) 00064 { 00065 TCHAR szBuffer[256]; 00066 00067 _stprintf(szBuffer, _T("%d Baud"), nBaudArray[i]); 00068 SendDlgItemMessage(hwndDlg, IDC_SERIAL_BAUD_COMBO, CB_ADDSTRING, 0, (LPARAM)szBuffer); 00069 00070 if (pGlobalData->serialKeys.iBaudRate == nBaudArray[i]) 00071 n = i; 00072 } 00073 00074 /* Set the current baud rate */ 00075 SendDlgItemMessage(hwndDlg, IDC_SERIAL_BAUD_COMBO, CB_SETCURSEL, n, 0); 00076 break; 00077 00078 case WM_COMMAND: 00079 switch (LOWORD(wParam)) 00080 { 00081 case IDOK: 00082 i = SendDlgItemMessage(hwndDlg, IDC_SERIAL_PORT_COMBO, CB_GETCURSEL, 0, 0) + 1; 00083 _stprintf(pGlobalData->serialKeys.lpszActivePort, _T("COM%d"), i); 00084 00085 i = SendDlgItemMessage(hwndDlg, IDC_SERIAL_BAUD_COMBO, CB_GETCURSEL, 0, 0); 00086 pGlobalData->serialKeys.iBaudRate = nBaudArray[i]; 00087 00088 EndDialog(hwndDlg, TRUE); 00089 break; 00090 00091 case IDCANCEL: 00092 EndDialog(hwndDlg, FALSE); 00093 break; 00094 00095 default: 00096 break; 00097 } 00098 break; 00099 } 00100 00101 return FALSE; 00102 } 00103 00104 00105 static VOID 00106 FillResetComboBox(HWND hwnd) 00107 { 00108 TCHAR szBuffer[32]; 00109 TCHAR szMinutes[20]; 00110 INT i; 00111 00112 if (LoadString(hApplet, IDS_MINUTES, szMinutes, 20) == 0) 00113 lstrcpy(szMinutes, L"Minutes"); 00114 00115 for (i = 0; i < 6; i++) 00116 { 00117 _stprintf(szBuffer, _T("%u %s"), (i + 1) * 5, szMinutes); 00118 SendMessage(hwnd, 00119 CB_ADDSTRING, 00120 0, 00121 (LPARAM)szBuffer); 00122 } 00123 } 00124 00125 00126 static VOID 00127 WriteGlobalData(PGLOBAL_DATA pGlobalData) 00128 { 00129 DWORD dwDisposition; 00130 HKEY hKey; 00131 LONG lError; 00132 00133 SystemParametersInfo(SPI_SETACCESSTIMEOUT, 00134 sizeof(ACCESSTIMEOUT), 00135 &pGlobalData->accessTimeout, 00136 SPIF_UPDATEINIFILE | SPIF_SENDCHANGE /*0*/); 00137 00138 SystemParametersInfo(SPI_SETSERIALKEYS, 00139 sizeof(SERIALKEYS), 00140 &pGlobalData->serialKeys, 00141 SPIF_UPDATEINIFILE | SPIF_SENDCHANGE /*0*/); 00142 00143 lError = RegCreateKeyEx(HKEY_CURRENT_USER, 00144 _T("Control Panel\\Accessibility"), 00145 0, 00146 NULL, 00147 REG_OPTION_NON_VOLATILE, 00148 KEY_SET_VALUE, 00149 NULL, 00150 &hKey, 00151 &dwDisposition); 00152 if (lError != ERROR_SUCCESS) 00153 return; 00154 00155 RegSetValueEx(hKey, 00156 _T("Warning Sounds"), 00157 0, 00158 REG_DWORD, 00159 (LPBYTE)&pGlobalData->bWarningSounds, 00160 sizeof(BOOL)); 00161 00162 RegSetValueEx(hKey, 00163 _T("Sound On Activation"), 00164 0, 00165 REG_DWORD, 00166 (LPBYTE)&pGlobalData->bSoundOnActivation, 00167 sizeof(BOOL)); 00168 00169 RegCloseKey(hKey); 00170 } 00171 00172 00173 /* Property page dialog callback */ 00174 INT_PTR CALLBACK 00175 GeneralPageProc(HWND hwndDlg, 00176 UINT uMsg, 00177 WPARAM wParam, 00178 LPARAM lParam) 00179 { 00180 PGLOBAL_DATA pGlobalData; 00181 LPPSHNOTIFY lppsn; 00182 00183 pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER); 00184 00185 switch (uMsg) 00186 { 00187 case WM_INITDIALOG: 00188 pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam; 00189 if (pGlobalData == NULL) 00190 return FALSE; 00191 00192 SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData); 00193 00194 /* Set access timeout info */ 00195 CheckDlgButton(hwndDlg, 00196 IDC_RESET_BOX, 00197 pGlobalData->accessTimeout.dwFlags & ATF_TIMEOUTON ? BST_CHECKED : BST_UNCHECKED); 00198 FillResetComboBox(GetDlgItem(hwndDlg, IDC_RESET_COMBO)); 00199 SendDlgItemMessage(hwndDlg, IDC_RESET_COMBO, CB_SETCURSEL, 00200 (pGlobalData->accessTimeout.iTimeOutMSec / 300000) - 1, 0); 00201 EnableWindow(GetDlgItem(hwndDlg, IDC_RESET_COMBO), 00202 pGlobalData->accessTimeout.dwFlags & ATF_TIMEOUTON ? TRUE : FALSE); 00203 00204 CheckDlgButton(hwndDlg, 00205 IDC_NOTIFICATION_MESSAGE, 00206 pGlobalData->bWarningSounds ? BST_CHECKED : BST_UNCHECKED); 00207 00208 CheckDlgButton(hwndDlg, 00209 IDC_NOTIFICATION_SOUND, 00210 pGlobalData->bSoundOnActivation ? BST_CHECKED : BST_UNCHECKED); 00211 00212 /* Set serial keys info */ 00213 CheckDlgButton(hwndDlg, 00214 IDC_SERIAL_BOX, 00215 pGlobalData->serialKeys.dwFlags & SERKF_SERIALKEYSON ? BST_CHECKED : BST_UNCHECKED); 00216 EnableWindow(GetDlgItem(hwndDlg, IDC_SERIAL_BOX), 00217 pGlobalData->serialKeys.dwFlags & SERKF_AVAILABLE ? TRUE : FALSE); 00218 EnableWindow(GetDlgItem(hwndDlg, IDC_SERIAL_BUTTON), 00219 pGlobalData->serialKeys.dwFlags & SERKF_AVAILABLE ? TRUE : FALSE); 00220 00221 return TRUE; 00222 00223 case WM_COMMAND: 00224 switch (LOWORD(wParam)) 00225 { 00226 case IDC_RESET_BOX: 00227 pGlobalData->accessTimeout.dwFlags ^= ATF_TIMEOUTON; 00228 EnableWindow(GetDlgItem(hwndDlg, IDC_RESET_COMBO), 00229 pGlobalData->accessTimeout.dwFlags & ATF_TIMEOUTON ? TRUE : FALSE); 00230 PropSheet_Changed(GetParent(hwndDlg), hwndDlg); 00231 break; 00232 00233 case IDC_RESET_COMBO: 00234 if (HIWORD(wParam) == CBN_CLOSEUP) 00235 { 00236 INT nSel; 00237 nSel = SendDlgItemMessage(hwndDlg, IDC_RESET_COMBO, CB_GETCURSEL, 0, 0); 00238 pGlobalData->accessTimeout.iTimeOutMSec = (ULONG)((nSel + 1) * 300000); 00239 PropSheet_Changed(GetParent(hwndDlg), hwndDlg); 00240 } 00241 break; 00242 00243 case IDC_NOTIFICATION_MESSAGE: 00244 pGlobalData->bWarningSounds = !pGlobalData->bWarningSounds; 00245 PropSheet_Changed(GetParent(hwndDlg), hwndDlg); 00246 break; 00247 00248 case IDC_NOTIFICATION_SOUND: 00249 pGlobalData->bSoundOnActivation = !pGlobalData->bSoundOnActivation; 00250 PropSheet_Changed(GetParent(hwndDlg), hwndDlg); 00251 break; 00252 00253 case IDC_SERIAL_BOX: 00254 pGlobalData->serialKeys.dwFlags ^= SERKF_SERIALKEYSON; 00255 PropSheet_Changed(GetParent(hwndDlg), hwndDlg); 00256 break; 00257 00258 case IDC_SERIAL_BUTTON: 00259 if (DialogBoxParam(hApplet, 00260 MAKEINTRESOURCE(IDD_SERIALKEYSOPTIONS), 00261 hwndDlg, 00262 (DLGPROC)SerialKeysDlgProc, 00263 (LPARAM)pGlobalData)) 00264 PropSheet_Changed(GetParent(hwndDlg), hwndDlg); 00265 break; 00266 00267 case IDC_ADMIN_LOGON_BOX: 00268 break; 00269 00270 case IDC_ADMIN_USERS_BOX: 00271 break; 00272 00273 default: 00274 break; 00275 } 00276 break; 00277 00278 case WM_NOTIFY: 00279 lppsn = (LPPSHNOTIFY)lParam; 00280 if (lppsn->hdr.code == PSN_APPLY) 00281 { 00282 WriteGlobalData(pGlobalData); 00283 return TRUE; 00284 } 00285 break; 00286 } 00287 00288 return FALSE; 00289 } Generated on Fri May 25 2012 04:18:58 for ReactOS by
1.7.6.1
|