xref: /reactos/dll/cpl/sysdm/advanced.c (revision 84344399)
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://jira.reactos.org/");
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 != FALSE)
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                 case IDCANCEL:
109                     EndDialog(hwndDlg, 0);
110                     return TRUE;
111             }
112             break;
113     }
114 
115     return FALSE;
116 }
117 
118 
119 /* Property page dialog callback */
120 INT_PTR CALLBACK
121 AdvancedPageProc(HWND hwndDlg,
122                  UINT uMsg,
123                  WPARAM wParam,
124                  LPARAM lParam)
125 {
126     UNREFERENCED_PARAMETER(lParam);
127 
128     switch (uMsg)
129     {
130         case WM_INITDIALOG:
131             break;
132 
133         case WM_COMMAND:
134         {
135             switch (LOWORD(wParam))
136             {
137                 case IDC_PERFOR:
138                     DialogBox(hApplet,
139                               MAKEINTRESOURCE(IDD_VIRTMEM),
140                               hwndDlg,
141                               VirtMemDlgProc);
142                     break;
143 
144                 case IDC_USERPROFILE:
145                     DialogBox(hApplet,
146                               MAKEINTRESOURCE(IDD_USERPROFILE),
147                               hwndDlg,
148                               UserProfileDlgProc);
149                     break;
150 
151                 case IDC_STAREC:
152                     DialogBox(hApplet,
153                               MAKEINTRESOURCE(IDD_STARTUPRECOVERY),
154                               hwndDlg,
155                               StartRecDlgProc);
156                     break;
157 
158                 case IDC_SYSSETTINGS:
159                     DialogBox(hApplet,
160                               MAKEINTRESOURCE(IDD_SYSSETTINGS),
161                               hwndDlg,
162                               SysSettingsDlgProc);
163                     break;
164 
165                 case IDC_ENVVAR:
166                     DialogBox(hApplet,
167                               MAKEINTRESOURCE(IDD_ENVIRONMENT_VARIABLES),
168                               hwndDlg,
169                               EnvironmentDlgProc);
170                     break;
171 
172                 case IDC_ERRORREPORT:
173                     ShellExecute(NULL,
174                                  _T("open"),
175                                  BugLink,
176                                  NULL,
177                                  NULL,
178                                  SW_SHOWNORMAL);
179                     break;
180             }
181         }
182 
183         break;
184     }
185 
186     return FALSE;
187 }
188