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

general.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 doxygen 1.7.6.1

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