Leaked source code of windows server 2003
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.
|
|
// Copyright (c) 2001 Microsoft Corporation
//
// Confirm removal of Application Partitions page
//
// 26 Jul 2001 sburns
#include "headers.hxx"
#include "ApplicationPartitionConfirmationPage.hpp"
#include "resource.h"
#include "state.hpp"
ApplicationPartitionConfirmationPage::ApplicationPartitionConfirmationPage() : DCPromoWizardPage( IDD_APP_PARTITION_CONFIRM, IDS_APP_PARTITION_CONFIRM_TITLE, IDS_APP_PARTITION_CONFIRM_SUBTITLE) { LOG_CTOR(ApplicationPartitionConfirmationPage); }
ApplicationPartitionConfirmationPage::~ApplicationPartitionConfirmationPage() { LOG_DTOR(ApplicationPartitionConfirmationPage); }
void ApplicationPartitionConfirmationPage::OnInit() { LOG_FUNCTION(ApplicationPartitionConfirmationPage::OnInit);
State& state = State::GetInstance(); if (state.UsingAnswerFile()) { String option = state.GetAnswerFileOption(AnswerFile::OPTION_REMOVE_APP_PARTITIONS); if (option.icompare(AnswerFile::VALUE_YES) == 0) { Win::CheckDlgButton(hwnd, IDC_CONFIRM, BST_CHECKED); return; } }
Win::CheckDlgButton(hwnd, IDC_CONFIRM, BST_UNCHECKED); }
void ApplicationPartitionConfirmationPage::Enable() { // LOG_FUNCTION(ApplicationPartitionConfirmationPage::Enable);
int next = Win::IsDlgButtonChecked(hwnd, IDC_CONFIRM) ? PSWIZB_NEXT : 0;
Win::PropSheet_SetWizButtons( Win::GetParent(hwnd), PSWIZB_BACK | next); }
bool ApplicationPartitionConfirmationPage::OnSetActive() { LOG_FUNCTION(ApplicationPartitionConfirmationPage::OnSetActive);
State& state = State::GetInstance(); if ( state.RunHiddenUnattended()
// we don't re-evaluate whether this machine is has the last copy of
// and ndnc (i.e. call state.IsLastAppPartitionReplica) again because
// that evaluation could be kinda expensive if there are many ndncs
// on this box, and we just did it on the previous page, and
// ** we don't want to get a different result that what we showed **
|| !state.GetAppPartitionList().size()) { LOG(L"Planning to skip ApplicationPartitionConfirmationPage");
Wizard& wizard = GetWizard();
if (wizard.IsBacktracking()) { // backup once again
wizard.Backtrack(hwnd); return true; } int nextPage = ApplicationPartitionConfirmationPage::Validate(); if (nextPage != -1) { LOG(L"skipping ApplicationPartitionConfirmationPage"); wizard.SetNextPageID(hwnd, nextPage); return true; }
state.ClearHiddenWhileUnattended(); }
Enable(); return true; }
bool ApplicationPartitionConfirmationPage::OnCommand( HWND /* windowFrom */ , unsigned controlIDFrom, unsigned code) { // LOG_FUNCTION(CredentialsPage::OnCommand);
switch (controlIDFrom) { case IDC_CONFIRM: { if (code == BN_CLICKED) { SetChanged(controlIDFrom); Enable(); return true; } break; } default: { // do nothing
break; } }
return false; }
int ApplicationPartitionConfirmationPage::Validate() { LOG_FUNCTION(ApplicationPartitionConfirmationPage::Validate);
State& state = State::GetInstance(); ASSERT(state.GetOperation() == State::DEMOTE);
int nextPage = -1; if ( !state.GetAppPartitionList().size() || Win::IsDlgButtonChecked(hwnd, IDC_CONFIRM)) { // jump to credentials page if the user checked the "last dc in domain"
// checkbox, unless this is last dc in forest root domain. 318736, 391440
const Computer& computer = state.GetComputer(); bool isForestRootDomain = (computer.GetDomainDnsName().icompare(computer.GetForestDnsName()) == 0);
nextPage = state.IsLastDCInDomain() && !isForestRootDomain ? IDD_GET_CREDENTIALS : IDD_ADMIN_PASSWORD; }
return nextPage; }
|