windows-nt/Source/XPSP1/NT/admin/dcpromo/exe/dnsonnetpage.cpp
2020-09-26 16:20:57 +08:00

135 lines
2.3 KiB
C++

// Copyright (C) 1997 Microsoft Corporation
//
// test DNS configured page
//
// 12-18-97 sburns
#include "headers.hxx"
#include "DnsOnNetPage.hpp"
#include "resource.h"
#include "state.hpp"
DnsOnNetPage::DnsOnNetPage()
:
DCPromoWizardPage(
IDD_DNS_ON_NET,
IDS_DNS_ON_NET_PAGE_TITLE,
IDS_DNS_ON_NET_PAGE_SUBTITLE)
{
LOG_CTOR(DnsOnNetPage);
}
DnsOnNetPage::~DnsOnNetPage()
{
LOG_DTOR(DnsOnNetPage);
}
void
DnsOnNetPage::OnInit()
{
LOG_FUNCTION(DnsOnNetPage::OnInit);
if (State::GetInstance().UsingAnswerFile())
{
String option =
State::GetInstance().GetAnswerFileOption(
State::OPTION_DNS_ON_NET);
if (option.icompare(State::VALUE_NO) == 0)
{
Win::CheckDlgButton(hwnd, IDC_DNS_NOT_ON_NET, BST_CHECKED);
return;
}
}
// it's important that this be the default in case the page is skipped.
Win::CheckDlgButton(hwnd, IDC_CONFIG_CLIENT, BST_CHECKED);
}
bool
DnsOnNetPage::OnSetActive()
{
LOG_FUNCTION(DnsOnNetPage::OnSetActive);
// put up a wait cursor, as DNS detection may take a teeny bit of time
Win::CursorSetting cursor(IDC_WAIT);
State& state = State::GetInstance();
if (Dns::IsClientConfigured() || state.RunHiddenUnattended())
{
Wizard& wiz = GetWizard();
// skip this page
if (wiz.IsBacktracking())
{
// backtrack once more
wiz.Backtrack(hwnd);
return true;
}
int nextPage = DnsOnNetPage::Validate();
if (nextPage != -1)
{
wiz.SetNextPageID(hwnd, nextPage);
return true;
}
state.ClearHiddenWhileUnattended();
}
Win::PropSheet_SetWizButtons(
Win::GetParent(hwnd),
PSWIZB_NEXT | PSWIZB_BACK);
return true;
}
int
DnsOnNetPage::Validate()
{
LOG_FUNCTION(DnsOnNetPage::Validate);
bool dnsOnNet = !Win::IsDlgButtonChecked(hwnd, IDC_DNS_NOT_ON_NET);
State& state = State::GetInstance();
state.SetDNSOnNetwork(dnsOnNet);
return dnsOnNet ? IDD_CONFIG_DNS_CLIENT : IDD_NEW_FOREST;
}
bool
DnsOnNetPage::OnWizBack()
{
LOG_FUNCTION(DnsOnNetPage::OnWizBack);
// make sure we clear the dns on net flag => the only way it gets cleared
// it on the 'next' button.
State::GetInstance().SetDNSOnNetwork(true);
return DCPromoWizardPage::OnWizBack();
}