[KSPROXY]
[reactos.git] / reactos / dll / cpl / sysdm / advanced.c
1 /*
2 * PROJECT: ReactOS System Control Panel Applet
3 * LICENSE: GPL - See COPYING in the top level directory
4 * FILE: dll/cpl/sysdm/advanced.c
5 * PURPOSE: Memory, start-up and profiles settings
6 * COPYRIGHT: Copyright Thomas Weidenmueller <w3seek@reactos.org>
7 Copyright 2006 - 2009 Ged Murphy <gedmurphy@reactos.org>
8 *
9 */
10
11 #include "precomp.h"
12
13 static TCHAR BugLink[] = _T("http://www.reactos.org/bugzilla");
14 static TCHAR ReportAsWorkstationKey[] = _T("SYSTEM\\CurrentControlSet\\Control\\ReactOS\\Settings\\Version");
15
16
17 static VOID
18 OnOK(HWND hwndDlg)
19 {
20 HKEY hKey;
21 DWORD ReportAsWorkstation;
22
23 ReportAsWorkstation = (SendDlgItemMessageW(hwndDlg,
24 IDC_REPORTASWORKSTATION,
25 BM_GETCHECK,
26 0,
27 0) == BST_CHECKED);
28
29 if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,
30 ReportAsWorkstationKey,
31 0,
32 NULL,
33 0,
34 KEY_WRITE,
35 NULL,
36 &hKey,
37 NULL) == ERROR_SUCCESS)
38 {
39 RegSetValueEx(hKey,
40 _T("ReportAsWorkstation"),
41 0,
42 REG_DWORD,
43 (LPBYTE)&ReportAsWorkstation,
44 sizeof(DWORD));
45
46 RegCloseKey(hKey);
47 }
48 }
49
50 static VOID
51 OnInitSysSettingsDialog(HWND hwndDlg)
52 {
53 HKEY hKey;
54 DWORD dwVal;
55 DWORD dwType = REG_DWORD;
56 DWORD cbData = sizeof(DWORD);
57
58 if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
59 ReportAsWorkstationKey,
60 0,
61 KEY_READ,
62 &hKey) == ERROR_SUCCESS)
63 {
64 if (RegQueryValueEx(hKey,
65 _T("ReportAsWorkstation"),
66 0,
67 &dwType,
68 (LPBYTE)&dwVal,
69 &cbData) == ERROR_SUCCESS)
70 {
71 if (dwVal == TRUE)
72 {
73 // set the check box
74 SendDlgItemMessageW(hwndDlg,
75 IDC_REPORTASWORKSTATION,
76 BM_SETCHECK,
77 BST_CHECKED,
78 0);
79 }
80 }
81
82 RegCloseKey(hKey);
83 }
84 }
85
86 INT_PTR CALLBACK
87 SysSettingsDlgProc(HWND hwndDlg,
88 UINT uMsg,
89 WPARAM wParam,
90 LPARAM lParam)
91 {
92 UNREFERENCED_PARAMETER(lParam);
93
94 switch (uMsg)
95 {
96 case WM_INITDIALOG:
97 OnInitSysSettingsDialog(hwndDlg);
98 break;
99
100 case WM_COMMAND:
101 switch (LOWORD(wParam))
102 {
103 case IDOK:
104 OnOK(hwndDlg);
105 EndDialog(hwndDlg, 0);
106 return TRUE;
107 }
108 break;
109 }
110
111 return FALSE;
112 }
113
114
115 /* Property page dialog callback */
116 INT_PTR CALLBACK
117 AdvancedPageProc(HWND hwndDlg,
118 UINT uMsg,
119 WPARAM wParam,
120 LPARAM lParam)
121 {
122 UNREFERENCED_PARAMETER(lParam);
123
124 switch (uMsg)
125 {
126 case WM_INITDIALOG:
127 break;
128
129 case WM_COMMAND:
130 {
131 switch (LOWORD(wParam))
132 {
133 case IDC_PERFOR:
134 DialogBox(hApplet,
135 MAKEINTRESOURCE(IDD_VIRTMEM),
136 hwndDlg,
137 (DLGPROC)VirtMemDlgProc);
138 break;
139
140 case IDC_USERPROFILE:
141 DialogBox(hApplet,
142 MAKEINTRESOURCE(IDD_USERPROFILE),
143 hwndDlg,
144 (DLGPROC)UserProfileDlgProc);
145 break;
146
147 case IDC_STAREC:
148 DialogBox(hApplet,
149 MAKEINTRESOURCE(IDD_STARTUPRECOVERY),
150 hwndDlg,
151 (DLGPROC)StartRecDlgProc);
152 break;
153
154 case IDC_SYSSETTINGS:
155 DialogBox(hApplet,
156 MAKEINTRESOURCE(IDD_SYSSETTINGS),
157 hwndDlg,
158 (DLGPROC)SysSettingsDlgProc);
159 break;
160
161 case IDC_ENVVAR:
162 DialogBox(hApplet,
163 MAKEINTRESOURCE(IDD_ENVIRONMENT_VARIABLES),
164 hwndDlg,
165 (DLGPROC)EnvironmentDlgProc);
166 break;
167
168 case IDC_ERRORREPORT:
169 ShellExecute(NULL,
170 _T("open"),
171 BugLink,
172 NULL,
173 NULL,
174 SW_SHOWNORMAL);
175 break;
176 }
177 }
178
179 break;
180 }
181
182 return FALSE;
183 }