Minor changes for ATAPI Srb Functions
[reactos.git] / dll / cpl / desk / effappdlg.c
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Display Control Panel
4 * FILE: dll/cpl/desk/effappdlg.c
5 * PURPOSE: Effects appearance dialog
6 *
7 * PROGRAMMER: Jan Roeloffzen (jroeloffzen[at]hotmail[dot]com)
8 *
9 */
10
11 #include "desk.h"
12
13 /* Update all the controls with the current values for the selected screen element */
14 static VOID
15 UpdateControls(HWND hwndDlg, GLOBALS *g)
16 {
17 WPARAM state;
18 state = SendDlgItemMessage(hwndDlg, IDC_EFFAPPEARANCE_ANIMATION, BM_GETCHECK, 0, 0);
19 g->SchemeAdv.Effects.bMenuAnimation = (state == BST_CHECKED) ? TRUE : FALSE;
20 EnableWindow(GetDlgItem(hwndDlg, IDC_EFFAPPEARANCE_ANIMATIONTYPE), g->SchemeAdv.Effects.bMenuAnimation);
21
22 // A boolean as an index for a 2-value list:
23 SendDlgItemMessage(hwndDlg, IDC_EFFAPPEARANCE_ANIMATIONTYPE, CB_SETCURSEL, (WPARAM)g->SchemeAdv.Effects.bMenuFade, 0);
24
25 state = SendDlgItemMessage(hwndDlg, IDC_EFFAPPEARANCE_KEYBOARDCUES, BM_GETCHECK, 0, 0);
26 g->SchemeAdv.Effects.bKeyboardCues = (state == BST_CHECKED) ? TRUE : FALSE;
27 state = SendDlgItemMessage(hwndDlg, IDC_EFFAPPEARANCE_DRAGFULLWINDOWS, BM_GETCHECK, 0, 0);
28 g->SchemeAdv.Effects.bDragFullWindows = (state == BST_CHECKED) ? TRUE : FALSE;
29 g->bSchemeChanged = TRUE;
30 }
31
32
33 static VOID
34 SaveCurrentValues(HWND hwndDlg, GLOBALS *g)
35 {
36 }
37
38 static VOID
39 AddToCombo(HWND hwndDlg, INT From, INT To, INT Combo)
40 {
41 INT iElement, iListIndex, i=0;
42 TCHAR tstrText[80];
43
44 for (iElement = From; iElement<=To; iElement++)
45 {
46 LoadString(hApplet, iElement, (LPTSTR)tstrText, 80);
47 iListIndex = SendDlgItemMessage(hwndDlg, Combo, CB_ADDSTRING, 0, (LPARAM)tstrText);
48 SendDlgItemMessage(hwndDlg, Combo, CB_SETITEMDATA, (WPARAM)iListIndex, (LPARAM)i++ );
49 }
50 }
51
52 /* Initialize the effects appearance dialog */
53 static VOID
54 EffAppearanceDlg_Init(HWND hwndDlg, GLOBALS *g)
55 {
56 WPARAM state;
57
58 /* Copy the current theme values */
59 g->SchemeAdv = g->Scheme;
60
61 AddToCombo(hwndDlg, IDS_SLIDEEFFECT, IDS_FADEEFFECT, IDC_EFFAPPEARANCE_ANIMATIONTYPE);
62
63 state = g->SchemeAdv.Effects.bMenuAnimation ? BST_CHECKED : BST_UNCHECKED;
64 SendDlgItemMessage(hwndDlg, IDC_EFFAPPEARANCE_ANIMATION, BM_SETCHECK, state, 0);
65
66 state = g->SchemeAdv.Effects.bKeyboardCues ? BST_CHECKED : BST_UNCHECKED;
67 SendDlgItemMessage(hwndDlg, IDC_EFFAPPEARANCE_KEYBOARDCUES, BM_SETCHECK, state, 0);
68
69 state = g->SchemeAdv.Effects.bDragFullWindows ? BST_CHECKED : BST_UNCHECKED;
70 SendDlgItemMessage(hwndDlg, IDC_EFFAPPEARANCE_DRAGFULLWINDOWS, BM_SETCHECK, state, 0);
71
72 /* Update the controls */
73 UpdateControls(hwndDlg, g);
74 }
75
76
77 static VOID
78 EffAppearanceDlg_CleanUp(HWND hwndDlg, GLOBALS* g)
79 {
80 }
81
82 INT_PTR CALLBACK
83 EffAppearanceDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
84 {
85 GLOBALS* g;
86
87 g = (GLOBALS*)GetWindowLongPtr(hwndDlg, DWLP_USER);
88
89 switch (uMsg)
90 {
91 case WM_INITDIALOG:
92 g = (GLOBALS*)lParam;
93 SetWindowLongPtr(hwndDlg, DWLP_USER, (LONG_PTR)g);
94 EffAppearanceDlg_Init(hwndDlg, g);
95 break;
96
97 case WM_DESTROY:
98 EffAppearanceDlg_CleanUp(hwndDlg, g);
99 break;
100
101 case WM_COMMAND:
102 switch(LOWORD(wParam))
103 {
104 case IDOK:
105 SaveCurrentValues(hwndDlg, g);
106 EndDialog(hwndDlg, IDOK);
107 break;
108
109 case IDCANCEL:
110 g->SchemeAdv = g->Scheme;
111 EndDialog(hwndDlg, IDCANCEL);
112 break;
113
114 case IDC_EFFAPPEARANCE_ANIMATION:
115 case IDC_EFFAPPEARANCE_KEYBOARDCUES:
116 case IDC_EFFAPPEARANCE_DRAGFULLWINDOWS:
117 if (HIWORD(wParam) == BN_CLICKED)
118 {
119 UpdateControls(hwndDlg, g);
120 }
121 break;
122
123 case IDC_EFFAPPEARANCE_ANIMATIONTYPE:
124 if (HIWORD(wParam) == CBN_SELCHANGE)
125 {
126 SaveCurrentValues(hwndDlg, g);
127 g->SchemeAdv.Effects.bMenuFade = SendDlgItemMessage(hwndDlg, IDC_EFFAPPEARANCE_ANIMATIONTYPE, CB_GETCURSEL, 0, 0);
128 UpdateControls(hwndDlg, g);
129 }
130 break;
131
132 default:
133 return FALSE;
134 }
135 break;
136
137 default:
138 return FALSE;
139 }
140
141 return TRUE;
142 }