• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /* -*- Mode: C; tab-width: 4 -*-
2  *
3  * Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17 
18 #include "FourthPage.h"
19 #include "resource.h"
20 
21 #include "ConfigPropertySheet.h"
22 #include "SharedSecret.h"
23 
24 #include <WinServices.h>
25 
26 #define MAX_KEY_LENGTH 255
27 
28 
IMPLEMENT_DYNCREATE(CFourthPage,CPropertyPage)29 IMPLEMENT_DYNCREATE(CFourthPage, CPropertyPage)
30 
31 
32 //---------------------------------------------------------------------------------------------------------------------------
33 //	CFourthPage::CFourthPage
34 //---------------------------------------------------------------------------------------------------------------------------
35 
36 CFourthPage::CFourthPage()
37 :
38 	CPropertyPage(CFourthPage::IDD)
39 {
40 	//{{AFX_DATA_INIT(CFourthPage)
41 	//}}AFX_DATA_INIT
42 }
43 
44 
45 //---------------------------------------------------------------------------------------------------------------------------
46 //	CFourthPage::~CFourthPage
47 //---------------------------------------------------------------------------------------------------------------------------
48 
~CFourthPage()49 CFourthPage::~CFourthPage()
50 {
51 }
52 
53 
54 //---------------------------------------------------------------------------------------------------------------------------
55 //	CFourthPage::DoDataExchange
56 //---------------------------------------------------------------------------------------------------------------------------
57 
DoDataExchange(CDataExchange * pDX)58 void CFourthPage::DoDataExchange(CDataExchange* pDX)
59 {
60 	CPropertyPage::DoDataExchange(pDX);
61 	//{{AFX_DATA_MAP(CFourthPage)
62 	//}}AFX_DATA_MAP
63 	DDX_Control(pDX, IDC_POWER_MANAGEMENT, m_checkBox);
64 }
65 
BEGIN_MESSAGE_MAP(CFourthPage,CPropertyPage)66 BEGIN_MESSAGE_MAP(CFourthPage, CPropertyPage)
67 	//{{AFX_MSG_MAP(CFourthPage)
68 	//}}AFX_MSG_MAP
69 
70 	ON_BN_CLICKED(IDC_POWER_MANAGEMENT, &CFourthPage::OnBnClickedPowerManagement)
71 
72 END_MESSAGE_MAP()
73 
74 
75 //---------------------------------------------------------------------------------------------------------------------------
76 //	CFourthPage::SetModified
77 //---------------------------------------------------------------------------------------------------------------------------
78 
79 void CFourthPage::SetModified( BOOL bChanged )
80 {
81 	m_modified = bChanged;
82 
83 	CPropertyPage::SetModified( bChanged );
84 }
85 
86 
87 //---------------------------------------------------------------------------------------------------------------------------
88 //	CFourthPage::OnSetActive
89 //---------------------------------------------------------------------------------------------------------------------------
90 
91 BOOL
OnSetActive()92 CFourthPage::OnSetActive()
93 {
94 	CConfigPropertySheet	*	psheet;
95 	HKEY						key = NULL;
96 	DWORD						dwSize;
97 	DWORD						enabled;
98 	DWORD						err;
99 	BOOL						b = CPropertyPage::OnSetActive();
100 
101 	psheet = reinterpret_cast<CConfigPropertySheet*>(GetParent());
102 	require_quiet( psheet, exit );
103 
104 	m_checkBox.SetCheck( 0 );
105 
106 	// Now populate the browse domain box
107 
108 	err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Power Management", 0,
109 		                  NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
110 	require_noerr( err, exit );
111 
112 	dwSize = sizeof( DWORD );
113 	err = RegQueryValueEx( key, L"Enabled", NULL, NULL, (LPBYTE) &enabled, &dwSize );
114 	require_noerr( err, exit );
115 
116 	m_checkBox.SetCheck( enabled );
117 
118 exit:
119 
120 	if ( key )
121 	{
122 		RegCloseKey( key );
123 	}
124 
125 	return b;
126 }
127 
128 
129 //---------------------------------------------------------------------------------------------------------------------------
130 //	CFourthPage::OnOK
131 //---------------------------------------------------------------------------------------------------------------------------
132 
133 void
OnOK()134 CFourthPage::OnOK()
135 {
136 	if ( m_modified )
137 	{
138 		Commit();
139 	}
140 }
141 
142 
143 
144 //---------------------------------------------------------------------------------------------------------------------------
145 //	CFourthPage::Commit
146 //---------------------------------------------------------------------------------------------------------------------------
147 
148 void
Commit()149 CFourthPage::Commit()
150 {
151 	HKEY		key		= NULL;
152 	DWORD		enabled;
153 	DWORD		err;
154 
155 	err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Power Management", 0,
156 		                  NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
157 	require_noerr( err, exit );
158 
159 	enabled = m_checkBox.GetCheck();
160 	err = RegSetValueEx( key, L"Enabled", NULL, REG_DWORD, (LPBYTE) &enabled, sizeof( enabled ) );
161 	require_noerr( err, exit );
162 
163 exit:
164 
165 	if ( key )
166 	{
167 		RegCloseKey( key );
168 	}
169 }
170 
171 
172 //---------------------------------------------------------------------------------------------------------------------------
173 //	CFourthPage::OnBnClickedRemoveBrowseDomain
174 //---------------------------------------------------------------------------------------------------------------------------
175 
176 
177 
OnBnClickedPowerManagement()178 void CFourthPage::OnBnClickedPowerManagement()
179 
180 {
181 
182 	char buf[ 256 ];
183 
184 
185 
186 	sprintf( buf, "check box: %d", m_checkBox.GetCheck() );
187 
188 	OutputDebugStringA( buf );
189 
190 	// TODO: Add your control notification handler code here
191 
192 
193 
194 	SetModified( TRUE );
195 
196 }
197 
198