xref: /aosp_15_r20/external/mdnsresponder/mDNSWindows/ControlPanel/ServicesPage.cpp (revision 48a54d368dc4fa860885eef7b70b6c53499e7c25)
1*48a54d36SAndroid Build Coastguard Worker /* -*- Mode: C; tab-width: 4 -*-
2*48a54d36SAndroid Build Coastguard Worker  *
3*48a54d36SAndroid Build Coastguard Worker  * Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
4*48a54d36SAndroid Build Coastguard Worker  *
5*48a54d36SAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
6*48a54d36SAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
7*48a54d36SAndroid Build Coastguard Worker  * You may obtain a copy of the License at
8*48a54d36SAndroid Build Coastguard Worker  *
9*48a54d36SAndroid Build Coastguard Worker  *     http://www.apache.org/licenses/LICENSE-2.0
10*48a54d36SAndroid Build Coastguard Worker  *
11*48a54d36SAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
12*48a54d36SAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
13*48a54d36SAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*48a54d36SAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
15*48a54d36SAndroid Build Coastguard Worker  * limitations under the License.
16*48a54d36SAndroid Build Coastguard Worker  */
17*48a54d36SAndroid Build Coastguard Worker 
18*48a54d36SAndroid Build Coastguard Worker #include "ServicesPage.h"
19*48a54d36SAndroid Build Coastguard Worker #include "resource.h"
20*48a54d36SAndroid Build Coastguard Worker 
21*48a54d36SAndroid Build Coastguard Worker #include "ControlPanelExe.h"
22*48a54d36SAndroid Build Coastguard Worker #include "ConfigPropertySheet.h"
23*48a54d36SAndroid Build Coastguard Worker 
24*48a54d36SAndroid Build Coastguard Worker #include <WinServices.h>
25*48a54d36SAndroid Build Coastguard Worker 
26*48a54d36SAndroid Build Coastguard Worker #define MAX_KEY_LENGTH 255
27*48a54d36SAndroid Build Coastguard Worker 
28*48a54d36SAndroid Build Coastguard Worker 
IMPLEMENT_DYNCREATE(CServicesPage,CPropertyPage)29*48a54d36SAndroid Build Coastguard Worker IMPLEMENT_DYNCREATE(CServicesPage, CPropertyPage)
30*48a54d36SAndroid Build Coastguard Worker 
31*48a54d36SAndroid Build Coastguard Worker 
32*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
33*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::CServicesPage
34*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
35*48a54d36SAndroid Build Coastguard Worker 
36*48a54d36SAndroid Build Coastguard Worker CServicesPage::CServicesPage()
37*48a54d36SAndroid Build Coastguard Worker :
38*48a54d36SAndroid Build Coastguard Worker 	CPropertyPage(CServicesPage::IDD)
39*48a54d36SAndroid Build Coastguard Worker {
40*48a54d36SAndroid Build Coastguard Worker 	//{{AFX_DATA_INIT(CServicesPage)
41*48a54d36SAndroid Build Coastguard Worker 	//}}AFX_DATA_INIT
42*48a54d36SAndroid Build Coastguard Worker }
43*48a54d36SAndroid Build Coastguard Worker 
44*48a54d36SAndroid Build Coastguard Worker 
45*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
46*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::~CServicesPage
47*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
48*48a54d36SAndroid Build Coastguard Worker 
~CServicesPage()49*48a54d36SAndroid Build Coastguard Worker CServicesPage::~CServicesPage()
50*48a54d36SAndroid Build Coastguard Worker {
51*48a54d36SAndroid Build Coastguard Worker }
52*48a54d36SAndroid Build Coastguard Worker 
53*48a54d36SAndroid Build Coastguard Worker 
54*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
55*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::DoDataExchange
56*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
57*48a54d36SAndroid Build Coastguard Worker 
DoDataExchange(CDataExchange * pDX)58*48a54d36SAndroid Build Coastguard Worker void CServicesPage::DoDataExchange(CDataExchange* pDX)
59*48a54d36SAndroid Build Coastguard Worker {
60*48a54d36SAndroid Build Coastguard Worker 	CPropertyPage::DoDataExchange(pDX);
61*48a54d36SAndroid Build Coastguard Worker 	//{{AFX_DATA_MAP(CServicesPage)
62*48a54d36SAndroid Build Coastguard Worker 	//}}AFX_DATA_MAP
63*48a54d36SAndroid Build Coastguard Worker 	DDX_Control(pDX, IDC_ADVERTISE_SMB, m_SMBCheckBox);
64*48a54d36SAndroid Build Coastguard Worker 	DDX_Control(pDX, IDC_POWER_MANAGEMENT, m_powerManagementCheckBox);
65*48a54d36SAndroid Build Coastguard Worker }
66*48a54d36SAndroid Build Coastguard Worker 
BEGIN_MESSAGE_MAP(CServicesPage,CPropertyPage)67*48a54d36SAndroid Build Coastguard Worker BEGIN_MESSAGE_MAP(CServicesPage, CPropertyPage)
68*48a54d36SAndroid Build Coastguard Worker 	//{{AFX_MSG_MAP(CServicesPage)
69*48a54d36SAndroid Build Coastguard Worker 	//}}AFX_MSG_MAP
70*48a54d36SAndroid Build Coastguard Worker 
71*48a54d36SAndroid Build Coastguard Worker 	ON_BN_CLICKED(IDC_ADVERTISE_SMB, &CServicesPage::OnBnClickedAdvertiseSMB)
72*48a54d36SAndroid Build Coastguard Worker 	ON_BN_CLICKED(IDC_POWER_MANAGEMENT, &CServicesPage::OnBnClickedPowerManagement)
73*48a54d36SAndroid Build Coastguard Worker 
74*48a54d36SAndroid Build Coastguard Worker END_MESSAGE_MAP()
75*48a54d36SAndroid Build Coastguard Worker 
76*48a54d36SAndroid Build Coastguard Worker 
77*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
78*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::SetModified
79*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
80*48a54d36SAndroid Build Coastguard Worker 
81*48a54d36SAndroid Build Coastguard Worker void CServicesPage::SetModified( BOOL bChanged )
82*48a54d36SAndroid Build Coastguard Worker {
83*48a54d36SAndroid Build Coastguard Worker 	m_modified = bChanged;
84*48a54d36SAndroid Build Coastguard Worker 
85*48a54d36SAndroid Build Coastguard Worker 	CPropertyPage::SetModified( bChanged );
86*48a54d36SAndroid Build Coastguard Worker }
87*48a54d36SAndroid Build Coastguard Worker 
88*48a54d36SAndroid Build Coastguard Worker 
89*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
90*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::OnSetActive
91*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
92*48a54d36SAndroid Build Coastguard Worker 
93*48a54d36SAndroid Build Coastguard Worker BOOL
OnSetActive()94*48a54d36SAndroid Build Coastguard Worker CServicesPage::OnSetActive()
95*48a54d36SAndroid Build Coastguard Worker {
96*48a54d36SAndroid Build Coastguard Worker 	CConfigPropertySheet	*	psheet;
97*48a54d36SAndroid Build Coastguard Worker 	HKEY						key = NULL;
98*48a54d36SAndroid Build Coastguard Worker 	DWORD						dwSize;
99*48a54d36SAndroid Build Coastguard Worker 	DWORD						enabled;
100*48a54d36SAndroid Build Coastguard Worker 	DWORD						err;
101*48a54d36SAndroid Build Coastguard Worker 	BOOL						b = CPropertyPage::OnSetActive();
102*48a54d36SAndroid Build Coastguard Worker 
103*48a54d36SAndroid Build Coastguard Worker 	psheet = reinterpret_cast<CConfigPropertySheet*>(GetParent());
104*48a54d36SAndroid Build Coastguard Worker 	require_quiet( psheet, exit );
105*48a54d36SAndroid Build Coastguard Worker 
106*48a54d36SAndroid Build Coastguard Worker 	m_SMBCheckBox.SetCheck( 0 );
107*48a54d36SAndroid Build Coastguard Worker 
108*48a54d36SAndroid Build Coastguard Worker 	// Now populate the browse domain box
109*48a54d36SAndroid Build Coastguard Worker 
110*48a54d36SAndroid Build Coastguard Worker 	err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Services\\SMB", 0,
111*48a54d36SAndroid Build Coastguard Worker 		                  NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
112*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
113*48a54d36SAndroid Build Coastguard Worker 
114*48a54d36SAndroid Build Coastguard Worker 	dwSize = sizeof( DWORD );
115*48a54d36SAndroid Build Coastguard Worker 	err = RegQueryValueEx( key, L"Advertise", NULL, NULL, (LPBYTE) &enabled, &dwSize );
116*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
117*48a54d36SAndroid Build Coastguard Worker 
118*48a54d36SAndroid Build Coastguard Worker 	m_SMBCheckBox.SetCheck( enabled );
119*48a54d36SAndroid Build Coastguard Worker 
120*48a54d36SAndroid Build Coastguard Worker 	RegCloseKey( key );
121*48a54d36SAndroid Build Coastguard Worker 	key = NULL;
122*48a54d36SAndroid Build Coastguard Worker 
123*48a54d36SAndroid Build Coastguard Worker 	m_powerManagementCheckBox.SetCheck( 0 );
124*48a54d36SAndroid Build Coastguard Worker 
125*48a54d36SAndroid Build Coastguard Worker 	// Now populate the browse domain box
126*48a54d36SAndroid Build Coastguard Worker 
127*48a54d36SAndroid Build Coastguard Worker 	err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Power Management", 0,
128*48a54d36SAndroid Build Coastguard Worker 		                  NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
129*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
130*48a54d36SAndroid Build Coastguard Worker 
131*48a54d36SAndroid Build Coastguard Worker 	dwSize = sizeof( DWORD );
132*48a54d36SAndroid Build Coastguard Worker 	err = RegQueryValueEx( key, L"Enabled", NULL, NULL, (LPBYTE) &enabled, &dwSize );
133*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
134*48a54d36SAndroid Build Coastguard Worker 
135*48a54d36SAndroid Build Coastguard Worker 	m_powerManagementCheckBox.SetCheck( enabled );
136*48a54d36SAndroid Build Coastguard Worker 
137*48a54d36SAndroid Build Coastguard Worker exit:
138*48a54d36SAndroid Build Coastguard Worker 
139*48a54d36SAndroid Build Coastguard Worker 	if ( key )
140*48a54d36SAndroid Build Coastguard Worker 	{
141*48a54d36SAndroid Build Coastguard Worker 		RegCloseKey( key );
142*48a54d36SAndroid Build Coastguard Worker 	}
143*48a54d36SAndroid Build Coastguard Worker 
144*48a54d36SAndroid Build Coastguard Worker 	return b;
145*48a54d36SAndroid Build Coastguard Worker }
146*48a54d36SAndroid Build Coastguard Worker 
147*48a54d36SAndroid Build Coastguard Worker 
148*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
149*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::OnOK
150*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
151*48a54d36SAndroid Build Coastguard Worker 
152*48a54d36SAndroid Build Coastguard Worker void
OnOK()153*48a54d36SAndroid Build Coastguard Worker CServicesPage::OnOK()
154*48a54d36SAndroid Build Coastguard Worker {
155*48a54d36SAndroid Build Coastguard Worker 	if ( m_modified )
156*48a54d36SAndroid Build Coastguard Worker 	{
157*48a54d36SAndroid Build Coastguard Worker 		Commit();
158*48a54d36SAndroid Build Coastguard Worker 	}
159*48a54d36SAndroid Build Coastguard Worker }
160*48a54d36SAndroid Build Coastguard Worker 
161*48a54d36SAndroid Build Coastguard Worker 
162*48a54d36SAndroid Build Coastguard Worker 
163*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
164*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::Commit
165*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
166*48a54d36SAndroid Build Coastguard Worker 
167*48a54d36SAndroid Build Coastguard Worker void
Commit()168*48a54d36SAndroid Build Coastguard Worker CServicesPage::Commit()
169*48a54d36SAndroid Build Coastguard Worker {
170*48a54d36SAndroid Build Coastguard Worker 	HKEY		key		= NULL;
171*48a54d36SAndroid Build Coastguard Worker 	DWORD		enabled;
172*48a54d36SAndroid Build Coastguard Worker 	DWORD		err;
173*48a54d36SAndroid Build Coastguard Worker 
174*48a54d36SAndroid Build Coastguard Worker 	err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Services\\SMB", 0,
175*48a54d36SAndroid Build Coastguard Worker 	                   	NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
176*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
177*48a54d36SAndroid Build Coastguard Worker 
178*48a54d36SAndroid Build Coastguard Worker 	enabled = m_SMBCheckBox.GetCheck();
179*48a54d36SAndroid Build Coastguard Worker 	err = RegSetValueEx( key, L"Advertise", NULL, REG_DWORD, (LPBYTE) &enabled, sizeof( enabled ) );
180*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
181*48a54d36SAndroid Build Coastguard Worker 
182*48a54d36SAndroid Build Coastguard Worker 	RegCloseKey( key );
183*48a54d36SAndroid Build Coastguard Worker 	key = NULL;
184*48a54d36SAndroid Build Coastguard Worker 
185*48a54d36SAndroid Build Coastguard Worker 	err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Power Management", 0,
186*48a54d36SAndroid Build Coastguard Worker 		                  NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
187*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
188*48a54d36SAndroid Build Coastguard Worker 
189*48a54d36SAndroid Build Coastguard Worker 	enabled = m_powerManagementCheckBox.GetCheck();
190*48a54d36SAndroid Build Coastguard Worker 	err = RegSetValueEx( key, L"Enabled", NULL, REG_DWORD, (LPBYTE) &enabled, sizeof( enabled ) );
191*48a54d36SAndroid Build Coastguard Worker 	require_noerr( err, exit );
192*48a54d36SAndroid Build Coastguard Worker 
193*48a54d36SAndroid Build Coastguard Worker exit:
194*48a54d36SAndroid Build Coastguard Worker 
195*48a54d36SAndroid Build Coastguard Worker 	if ( key )
196*48a54d36SAndroid Build Coastguard Worker 	{
197*48a54d36SAndroid Build Coastguard Worker 		RegCloseKey( key );
198*48a54d36SAndroid Build Coastguard Worker 	}
199*48a54d36SAndroid Build Coastguard Worker }
200*48a54d36SAndroid Build Coastguard Worker 
201*48a54d36SAndroid Build Coastguard Worker 
202*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
203*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::OnBnClickedAdvertiseSMB
204*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
205*48a54d36SAndroid Build Coastguard Worker 
OnBnClickedAdvertiseSMB()206*48a54d36SAndroid Build Coastguard Worker void CServicesPage::OnBnClickedAdvertiseSMB()
207*48a54d36SAndroid Build Coastguard Worker {
208*48a54d36SAndroid Build Coastguard Worker 	SetModified( TRUE );
209*48a54d36SAndroid Build Coastguard Worker }
210*48a54d36SAndroid Build Coastguard Worker 
211*48a54d36SAndroid Build Coastguard Worker 
212*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
213*48a54d36SAndroid Build Coastguard Worker //	CServicesPage::OnBnClickedPowerManagement
214*48a54d36SAndroid Build Coastguard Worker //---------------------------------------------------------------------------------------------------------------------------
215*48a54d36SAndroid Build Coastguard Worker 
OnBnClickedPowerManagement()216*48a54d36SAndroid Build Coastguard Worker void CServicesPage::OnBnClickedPowerManagement()
217*48a54d36SAndroid Build Coastguard Worker {
218*48a54d36SAndroid Build Coastguard Worker 	SetModified( TRUE );
219*48a54d36SAndroid Build Coastguard Worker 
220*48a54d36SAndroid Build Coastguard Worker 	if ( m_powerManagementCheckBox.GetCheck() )
221*48a54d36SAndroid Build Coastguard Worker 	{
222*48a54d36SAndroid Build Coastguard Worker 		CPowerManagementWarning dlg( GetParent() );
223*48a54d36SAndroid Build Coastguard Worker 
224*48a54d36SAndroid Build Coastguard Worker 		dlg.DoModal();
225*48a54d36SAndroid Build Coastguard Worker 	}
226*48a54d36SAndroid Build Coastguard Worker }
227*48a54d36SAndroid Build Coastguard Worker 
228*48a54d36SAndroid Build Coastguard Worker 
229*48a54d36SAndroid Build Coastguard Worker // CPowerManagementWarning dialog
230*48a54d36SAndroid Build Coastguard Worker 
IMPLEMENT_DYNAMIC(CPowerManagementWarning,CDialog)231*48a54d36SAndroid Build Coastguard Worker IMPLEMENT_DYNAMIC(CPowerManagementWarning, CDialog)
232*48a54d36SAndroid Build Coastguard Worker CPowerManagementWarning::CPowerManagementWarning(CWnd* pParent /*=NULL*/)
233*48a54d36SAndroid Build Coastguard Worker 	: CDialog(CPowerManagementWarning::IDD, pParent)
234*48a54d36SAndroid Build Coastguard Worker {
235*48a54d36SAndroid Build Coastguard Worker }
236*48a54d36SAndroid Build Coastguard Worker 
~CPowerManagementWarning()237*48a54d36SAndroid Build Coastguard Worker CPowerManagementWarning::~CPowerManagementWarning()
238*48a54d36SAndroid Build Coastguard Worker {
239*48a54d36SAndroid Build Coastguard Worker }
240*48a54d36SAndroid Build Coastguard Worker 
DoDataExchange(CDataExchange * pDX)241*48a54d36SAndroid Build Coastguard Worker void CPowerManagementWarning::DoDataExchange(CDataExchange* pDX)
242*48a54d36SAndroid Build Coastguard Worker {
243*48a54d36SAndroid Build Coastguard Worker 	CDialog::DoDataExchange(pDX);
244*48a54d36SAndroid Build Coastguard Worker 	DDX_Control(pDX, IDC_ENERGY_SAVER, m_energySaverIcon);
245*48a54d36SAndroid Build Coastguard Worker }
246*48a54d36SAndroid Build Coastguard Worker 
247*48a54d36SAndroid Build Coastguard Worker 
248*48a54d36SAndroid Build Coastguard Worker BOOL
OnInitDialog()249*48a54d36SAndroid Build Coastguard Worker CPowerManagementWarning::OnInitDialog()
250*48a54d36SAndroid Build Coastguard Worker {
251*48a54d36SAndroid Build Coastguard Worker 	BOOL b = CDialog::OnInitDialog();
252*48a54d36SAndroid Build Coastguard Worker 
253*48a54d36SAndroid Build Coastguard Worker 	const HICON hIcon = ( HICON ) ::LoadImage( GetNonLocalizedResources(), MAKEINTRESOURCE( IDI_ENERGY_SAVER ), IMAGE_ICON, 0, 0, 0);
254*48a54d36SAndroid Build Coastguard Worker 
255*48a54d36SAndroid Build Coastguard Worker 	if ( hIcon )
256*48a54d36SAndroid Build Coastguard Worker 	{
257*48a54d36SAndroid Build Coastguard Worker 		m_energySaverIcon.SetIcon( hIcon );
258*48a54d36SAndroid Build Coastguard Worker 	}
259*48a54d36SAndroid Build Coastguard Worker 
260*48a54d36SAndroid Build Coastguard Worker 	return b;
261*48a54d36SAndroid Build Coastguard Worker }
262*48a54d36SAndroid Build Coastguard Worker 
263*48a54d36SAndroid Build Coastguard Worker 
264*48a54d36SAndroid Build Coastguard Worker void
OnOK()265*48a54d36SAndroid Build Coastguard Worker CPowerManagementWarning::OnOK()
266*48a54d36SAndroid Build Coastguard Worker {
267*48a54d36SAndroid Build Coastguard Worker 	CDialog::OnOK();
268*48a54d36SAndroid Build Coastguard Worker }
269*48a54d36SAndroid Build Coastguard Worker 
270*48a54d36SAndroid Build Coastguard Worker 
271*48a54d36SAndroid Build Coastguard Worker BEGIN_MESSAGE_MAP(CPowerManagementWarning, CDialog)
272*48a54d36SAndroid Build Coastguard Worker END_MESSAGE_MAP()
273*48a54d36SAndroid Build Coastguard Worker 
274