You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
274 lines
7.6 KiB
274 lines
7.6 KiB
/* -*- Mode: C; tab-width: 4 -*-
|
|
*
|
|
* Copyright (c) 2002-2004 Apple Computer, Inc. All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
#include "ServicesPage.h"
|
|
#include "resource.h"
|
|
|
|
#include "ControlPanelExe.h"
|
|
#include "ConfigPropertySheet.h"
|
|
|
|
#include <WinServices.h>
|
|
|
|
#define MAX_KEY_LENGTH 255
|
|
|
|
|
|
IMPLEMENT_DYNCREATE(CServicesPage, CPropertyPage)
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::CServicesPage
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
CServicesPage::CServicesPage()
|
|
:
|
|
CPropertyPage(CServicesPage::IDD)
|
|
{
|
|
//{{AFX_DATA_INIT(CServicesPage)
|
|
//}}AFX_DATA_INIT
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::~CServicesPage
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
CServicesPage::~CServicesPage()
|
|
{
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::DoDataExchange
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
void CServicesPage::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CPropertyPage::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CServicesPage)
|
|
//}}AFX_DATA_MAP
|
|
DDX_Control(pDX, IDC_ADVERTISE_SMB, m_SMBCheckBox);
|
|
DDX_Control(pDX, IDC_POWER_MANAGEMENT, m_powerManagementCheckBox);
|
|
}
|
|
|
|
BEGIN_MESSAGE_MAP(CServicesPage, CPropertyPage)
|
|
//{{AFX_MSG_MAP(CServicesPage)
|
|
//}}AFX_MSG_MAP
|
|
|
|
ON_BN_CLICKED(IDC_ADVERTISE_SMB, &CServicesPage::OnBnClickedAdvertiseSMB)
|
|
ON_BN_CLICKED(IDC_POWER_MANAGEMENT, &CServicesPage::OnBnClickedPowerManagement)
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::SetModified
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
void CServicesPage::SetModified( BOOL bChanged )
|
|
{
|
|
m_modified = bChanged;
|
|
|
|
CPropertyPage::SetModified( bChanged );
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::OnSetActive
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
BOOL
|
|
CServicesPage::OnSetActive()
|
|
{
|
|
CConfigPropertySheet * psheet;
|
|
HKEY key = NULL;
|
|
DWORD dwSize;
|
|
DWORD enabled;
|
|
DWORD err;
|
|
BOOL b = CPropertyPage::OnSetActive();
|
|
|
|
psheet = reinterpret_cast<CConfigPropertySheet*>(GetParent());
|
|
require_quiet( psheet, exit );
|
|
|
|
m_SMBCheckBox.SetCheck( 0 );
|
|
|
|
// Now populate the browse domain box
|
|
|
|
err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Services\\SMB", 0,
|
|
NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
|
|
require_noerr( err, exit );
|
|
|
|
dwSize = sizeof( DWORD );
|
|
err = RegQueryValueEx( key, L"Advertise", NULL, NULL, (LPBYTE) &enabled, &dwSize );
|
|
require_noerr( err, exit );
|
|
|
|
m_SMBCheckBox.SetCheck( enabled );
|
|
|
|
RegCloseKey( key );
|
|
key = NULL;
|
|
|
|
m_powerManagementCheckBox.SetCheck( 0 );
|
|
|
|
// Now populate the browse domain box
|
|
|
|
err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Power Management", 0,
|
|
NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
|
|
require_noerr( err, exit );
|
|
|
|
dwSize = sizeof( DWORD );
|
|
err = RegQueryValueEx( key, L"Enabled", NULL, NULL, (LPBYTE) &enabled, &dwSize );
|
|
require_noerr( err, exit );
|
|
|
|
m_powerManagementCheckBox.SetCheck( enabled );
|
|
|
|
exit:
|
|
|
|
if ( key )
|
|
{
|
|
RegCloseKey( key );
|
|
}
|
|
|
|
return b;
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::OnOK
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
void
|
|
CServicesPage::OnOK()
|
|
{
|
|
if ( m_modified )
|
|
{
|
|
Commit();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::Commit
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
void
|
|
CServicesPage::Commit()
|
|
{
|
|
HKEY key = NULL;
|
|
DWORD enabled;
|
|
DWORD err;
|
|
|
|
err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Services\\SMB", 0,
|
|
NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
|
|
require_noerr( err, exit );
|
|
|
|
enabled = m_SMBCheckBox.GetCheck();
|
|
err = RegSetValueEx( key, L"Advertise", NULL, REG_DWORD, (LPBYTE) &enabled, sizeof( enabled ) );
|
|
require_noerr( err, exit );
|
|
|
|
RegCloseKey( key );
|
|
key = NULL;
|
|
|
|
err = RegCreateKeyEx( HKEY_LOCAL_MACHINE, kServiceParametersNode L"\\Power Management", 0,
|
|
NULL, REG_OPTION_NON_VOLATILE, KEY_READ|KEY_WRITE|KEY_WOW64_32KEY, NULL, &key, NULL );
|
|
require_noerr( err, exit );
|
|
|
|
enabled = m_powerManagementCheckBox.GetCheck();
|
|
err = RegSetValueEx( key, L"Enabled", NULL, REG_DWORD, (LPBYTE) &enabled, sizeof( enabled ) );
|
|
require_noerr( err, exit );
|
|
|
|
exit:
|
|
|
|
if ( key )
|
|
{
|
|
RegCloseKey( key );
|
|
}
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::OnBnClickedAdvertiseSMB
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
void CServicesPage::OnBnClickedAdvertiseSMB()
|
|
{
|
|
SetModified( TRUE );
|
|
}
|
|
|
|
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
// CServicesPage::OnBnClickedPowerManagement
|
|
//---------------------------------------------------------------------------------------------------------------------------
|
|
|
|
void CServicesPage::OnBnClickedPowerManagement()
|
|
{
|
|
SetModified( TRUE );
|
|
|
|
if ( m_powerManagementCheckBox.GetCheck() )
|
|
{
|
|
CPowerManagementWarning dlg( GetParent() );
|
|
|
|
dlg.DoModal();
|
|
}
|
|
}
|
|
|
|
|
|
// CPowerManagementWarning dialog
|
|
|
|
IMPLEMENT_DYNAMIC(CPowerManagementWarning, CDialog)
|
|
CPowerManagementWarning::CPowerManagementWarning(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPowerManagementWarning::IDD, pParent)
|
|
{
|
|
}
|
|
|
|
CPowerManagementWarning::~CPowerManagementWarning()
|
|
{
|
|
}
|
|
|
|
void CPowerManagementWarning::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_ENERGY_SAVER, m_energySaverIcon);
|
|
}
|
|
|
|
|
|
BOOL
|
|
CPowerManagementWarning::OnInitDialog()
|
|
{
|
|
BOOL b = CDialog::OnInitDialog();
|
|
|
|
const HICON hIcon = ( HICON ) ::LoadImage( GetNonLocalizedResources(), MAKEINTRESOURCE( IDI_ENERGY_SAVER ), IMAGE_ICON, 0, 0, 0);
|
|
|
|
if ( hIcon )
|
|
{
|
|
m_energySaverIcon.SetIcon( hIcon );
|
|
}
|
|
|
|
return b;
|
|
}
|
|
|
|
|
|
void
|
|
CPowerManagementWarning::OnOK()
|
|
{
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPowerManagementWarning, CDialog)
|
|
END_MESSAGE_MAP()
|
|
|