... And the last things I forgot....
[reactos.git] / reactos / dll / cpl / access / sound.c
1 /* $Id: sound.c 29112 2007-09-19 21:31:49Z ekohl $
2 *
3 * PROJECT: ReactOS Accessibility Control Panel
4 * LICENSE: GPL - See COPYING in the top level directory
5 * FILE: dll/cpl/access/sound.c
6 * PURPOSE: Sound-related acessibility settings
7 * COPYRIGHT: Copyright 2004 Johannes Anderwald (j_anderw@sbox.tugraz.at)
8 * Copyright 2007 Eric Kohl
9 */
10
11 #include <windows.h>
12 #include <commctrl.h>
13 #include <prsht.h>
14 #include <stdlib.h>
15 #include "resource.h"
16 #include "access.h"
17
18
19 static VOID
20 OnInitDialog(HWND hwndDlg, PGLOBAL_DATA pGlobalData)
21 {
22 TCHAR szBuffer[256];
23 UINT i;
24
25 /* Add strings to the combo-box */
26 for (i = 0; i < 4; i++)
27 {
28 LoadString(hApplet, IDS_SENTRY_NONE + i, szBuffer, 256);
29 SendDlgItemMessage(hwndDlg, IDC_SENTRY_COMBO, CB_ADDSTRING, 0, (LPARAM)szBuffer);
30 }
31
32 /* Select a combo-box item */
33 SendDlgItemMessage(hwndDlg, IDC_SENTRY_COMBO, CB_SETCURSEL, pGlobalData->ssSoundSentry.iWindowsEffect, 0);
34
35 /* Initialize SoundSentry settings */
36 if (!(pGlobalData->ssSoundSentry.dwFlags & SSF_AVAILABLE))
37 {
38 EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_BOX), FALSE);
39 EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), FALSE);
40 EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_COMBO), FALSE);
41 }
42 else
43 {
44 if (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)
45 {
46 CheckDlgButton(hwndDlg, IDC_SENTRY_BOX, BST_CHECKED);
47 }
48 else
49 {
50 EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), FALSE);
51 EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_COMBO), FALSE);
52 }
53 }
54
55 /* Initialize ShowSounds settings */
56 if (pGlobalData->bShowSounds)
57 CheckDlgButton(hwndDlg, IDC_SSHOW_BOX, BST_CHECKED);
58 }
59
60
61 /* Property page dialog callback */
62 INT_PTR CALLBACK
63 SoundPageProc(HWND hwndDlg,
64 UINT uMsg,
65 WPARAM wParam,
66 LPARAM lParam)
67 {
68 PGLOBAL_DATA pGlobalData;
69
70 pGlobalData = (PGLOBAL_DATA)GetWindowLongPtr(hwndDlg, DWLP_USER);
71
72 switch (uMsg)
73 {
74 case WM_INITDIALOG:
75 pGlobalData = (PGLOBAL_DATA)((LPPROPSHEETPAGE)lParam)->lParam;
76
77 SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)pGlobalData);
78
79 OnInitDialog(hwndDlg, pGlobalData);
80 break;
81
82 case WM_COMMAND:
83 switch (LOWORD(wParam))
84 {
85 case IDC_SENTRY_BOX:
86 pGlobalData->ssSoundSentry.dwFlags ^= SSF_SOUNDSENTRYON;
87 EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_TEXT), (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE);
88 EnableWindow(GetDlgItem(hwndDlg, IDC_SENTRY_COMBO), (pGlobalData->ssSoundSentry.dwFlags & SSF_SOUNDSENTRYON)?TRUE:FALSE);
89 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
90 break;
91
92 case IDC_SENTRY_COMBO:
93 if (HIWORD(wParam) == CBN_SELENDOK)
94 {
95 pGlobalData->ssSoundSentry.iWindowsEffect =
96 (DWORD)SendMessage((HWND)lParam, CB_GETCURSEL, 0, 0);
97 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
98 }
99 break;
100
101 case IDC_SSHOW_BOX:
102 pGlobalData->bShowSounds = !pGlobalData->bShowSounds;
103 PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
104 break;
105
106 default:
107 break;
108 }
109 break;
110
111 case WM_NOTIFY:
112 switch (((LPNMHDR)lParam)->code)
113 {
114 case PSN_APPLY:
115 SystemParametersInfo(SPI_SETSOUNDSENTRY,
116 sizeof(SOUNDSENTRY),
117 &pGlobalData->ssSoundSentry,
118 SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
119 SystemParametersInfo(SPI_SETSHOWSOUNDS,
120 pGlobalData->bShowSounds,
121 0,
122 SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
123 return TRUE;
124
125 default:
126 break;
127 }
128 break;
129 }
130
131 return FALSE;
132 }