windows-nt/Source/XPSP1/NT/admin/cys/win32/networkserverpage.cpp
2020-09-26 16:20:57 +08:00

205 lines
5.8 KiB
C++

// Copyright (c) 1997-2001 Microsoft Corporation
//
// File: NetworkServerPage.cpp
//
// Synopsis: Defines Network Server Page for the CYS
// Wizard
//
// History: 02/06/2001 JeffJon Created
#include "pch.h"
#include "resource.h"
#include "InstallationUnitProvider.h"
#include "NetworkServerPage.h"
#include "state.h"
static PCWSTR NETWORKSERVER_PAGE_HELP = L"cys.chm::/sag_ADserverRoles.htm";
NetworkServerPage::NetworkServerPage()
:
CYSWizardPage(
IDD_NETWORK_SERVER_PAGE,
IDS_NETWORK_SERVER_TITLE,
IDS_NETWORK_SERVER_SUBTITLE,
NETWORKSERVER_PAGE_HELP)
{
LOG_CTOR(NetworkServerPage);
}
NetworkServerPage::~NetworkServerPage()
{
LOG_DTOR(NetworkServerPage);
}
void
NetworkServerPage::OnInit()
{
LOG_FUNCTION(NetworkServerPage::OnInit);
// Check and disable the checkboxes for services that are already installed
// and configured
bool isDHCPInstalled =
InstallationUnitProvider::GetInstance().GetDHCPInstallationUnit().IsServiceInstalled();
bool isDHCPConfigured =
InstallationUnitProvider::GetInstance().GetDHCPInstallationUnit().IsConfigured();
Win::Button_SetCheck(
Win::GetDlgItem(hwnd, IDC_DHCP_CHECK),
(isDHCPInstalled && isDHCPConfigured) ? BST_CHECKED : BST_UNCHECKED);
Win::EnableWindow(
Win::GetDlgItem(hwnd, IDC_DHCP_CHECK),
!isDHCPInstalled && !isDHCPConfigured);
bool isDNSInstalled =
InstallationUnitProvider::GetInstance().GetDNSInstallationUnit().IsServiceInstalled();
Win::Button_SetCheck(
Win::GetDlgItem(hwnd, IDC_DNS_CHECK),
isDNSInstalled ? BST_CHECKED : BST_UNCHECKED);
Win::EnableWindow(
Win::GetDlgItem(hwnd, IDC_DNS_CHECK),
!isDNSInstalled);
bool isWINSInstalled =
InstallationUnitProvider::GetInstance().GetWINSInstallationUnit().IsServiceInstalled();
Win::Button_SetCheck(
Win::GetDlgItem(hwnd, IDC_WINS_CHECK),
isWINSInstalled ? BST_CHECKED : BST_UNCHECKED);
Win::EnableWindow(
Win::GetDlgItem(hwnd, IDC_WINS_CHECK),
!isWINSInstalled);
bool isRRASInstalled =
InstallationUnitProvider::GetInstance().GetRRASInstallationUnit().IsServiceInstalled();
bool isRRASConfigured =
InstallationUnitProvider::GetInstance().GetRRASInstallationUnit().IsConfigured();
Win::Button_SetCheck(
Win::GetDlgItem(hwnd, IDC_RRAS_CHECK),
(isRRASInstalled && isRRASConfigured) ? BST_CHECKED : BST_UNCHECKED);
Win::EnableWindow(
Win::GetDlgItem(hwnd, IDC_RRAS_CHECK),
!isRRASInstalled || !isRRASConfigured);
}
bool
NetworkServerPage::OnSetActive()
{
LOG_FUNCTION(NetworkServerPage::OnSetActive);
// Set the wizard buttons according to the state of the UI
SetWizardButtons();
return true;
}
bool
NetworkServerPage::OnCommand(
HWND /*windowFrom*/,
unsigned controlIDFrom,
unsigned code)
{
// LOG_FUNCTION(NetworkServerPage::OnCommand);
bool result = false;
if (IDC_DHCP_CHECK == controlIDFrom ||
IDC_DNS_CHECK == controlIDFrom ||
IDC_WINS_CHECK == controlIDFrom ||
IDC_RRAS_CHECK == controlIDFrom)
{
// If at least one checkbox is checked then allow the next button to be enabled
// NOTE: this does not take into account whether the service is already installed or not
if (BN_CLICKED == code &&
IDC_DHCP_CHECK == controlIDFrom)
{
bool ischecked = Win::Button_GetCheck(Win::GetDlgItem(hwnd, IDC_DHCP_CHECK));
if (!InstallationUnitProvider::GetInstance().GetDHCPInstallationUnit().IsServiceInstalled())
{
InstallationUnitProvider::GetInstance().GetNetworkServerInstallationUnit().SetDHCPInstall(ischecked);
}
}
if (BN_CLICKED == code &&
IDC_DNS_CHECK == controlIDFrom)
{
bool ischecked = Win::Button_GetCheck(Win::GetDlgItem(hwnd, IDC_DNS_CHECK));
if (!InstallationUnitProvider::GetInstance().GetDNSInstallationUnit().IsServiceInstalled())
{
InstallationUnitProvider::GetInstance().GetNetworkServerInstallationUnit().SetDNSInstall(ischecked);
}
}
if (BN_CLICKED == code &&
IDC_WINS_CHECK == controlIDFrom)
{
bool ischecked = Win::Button_GetCheck(Win::GetDlgItem(hwnd, IDC_WINS_CHECK));
if (!InstallationUnitProvider::GetInstance().GetWINSInstallationUnit().IsServiceInstalled())
{
InstallationUnitProvider::GetInstance().GetNetworkServerInstallationUnit().SetWINSInstall(ischecked);
}
}
if (BN_CLICKED == code &&
IDC_RRAS_CHECK == controlIDFrom)
{
bool ischecked = Win::Button_GetCheck(Win::GetDlgItem(hwnd, IDC_RRAS_CHECK));
if (!InstallationUnitProvider::GetInstance().GetRRASInstallationUnit().IsServiceInstalled())
{
InstallationUnitProvider::GetInstance().GetNetworkServerInstallationUnit().SetRRASInstall(ischecked);
}
}
SetWizardButtons();
}
return result;
}
void
NetworkServerPage::SetWizardButtons()
{
// LOG_FUNCTION(NetworkServerPage::SetWizardButtons);
// Enable the Next button only if one of the checkboxes have been checked
bool enableNext = InstallationUnitProvider::GetInstance().GetNetworkServerInstallationUnit().GetDHCPInstall()
|| InstallationUnitProvider::GetInstance().GetNetworkServerInstallationUnit().GetDNSInstall()
|| InstallationUnitProvider::GetInstance().GetNetworkServerInstallationUnit().GetWINSInstall()
|| InstallationUnitProvider::GetInstance().GetNetworkServerInstallationUnit().GetRRASInstall();
Win::PropSheet_SetWizButtons(
Win::GetParent(hwnd),
enableNext ? PSWIZB_BACK | PSWIZB_NEXT : PSWIZB_BACK);
}
int
NetworkServerPage::Validate()
{
LOG_FUNCTION(NetworkServerPage::Validate);
return IDD_FINISH_PAGE;
}