|
|
// Copyright (c) 1997-2001 Microsoft Corporation
//
// File: BeforeBeginPage.cpp
//
// Synopsis: Defines the Before You Begin Page for the CYS
// Wizard. Tells the user what they should do
// before running CYS.
//
// History: 03/14/2001 JeffJon Created
#include "pch.h"
#include "resource.h"
#include "InstallationUnitProvider.h"
#include "BeforeBeginPage.h"
#include "state.h"
static PCWSTR BEFORE_BEGIN_PAGE_HELP = L"cys.chm::/cys_topnode.htm"; static PCWSTR BEFORE_BEGIN_LINK_HELP = L"cys.chm::/cys_topnode.htm";
BeforeBeginPage::BeforeBeginPage() : bulletFont(0), CYSWizardPage( IDD_BEFORE_BEGIN_PAGE, IDS_BEFORE_BEGIN_TITLE, IDS_BEFORE_BEGIN_SUBTITLE, BEFORE_BEGIN_PAGE_HELP) { LOG_CTOR(BeforeBeginPage); }
BeforeBeginPage::~BeforeBeginPage() { LOG_DTOR(BeforeBeginPage);
if (bulletFont) { HRESULT hr = Win::DeleteObject(bulletFont); ASSERT(SUCCEEDED(hr)); } }
void BeforeBeginPage::OnInit() { LOG_FUNCTION(BeforeBeginPage::OnInit);
InitializeBulletedList(); }
void BeforeBeginPage::InitializeBulletedList() { LOG_FUNCTION(BeforeBeginPage::InitializeBulletedList);
bulletFont = CreateFont( 0, 0, 0, 0, FW_NORMAL, 0, 0, 0, SYMBOL_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS, PROOF_QUALITY, VARIABLE_PITCH|FF_DONTCARE, L"Marlett");
if (bulletFont) { Win::SetWindowFont(Win::GetDlgItem(hwnd, IDC_BULLET1), bulletFont, true); Win::SetWindowFont(Win::GetDlgItem(hwnd, IDC_BULLET2), bulletFont, true); Win::SetWindowFont(Win::GetDlgItem(hwnd, IDC_BULLET3), bulletFont, true); Win::SetWindowFont(Win::GetDlgItem(hwnd, IDC_BULLET4), bulletFont, true); Win::SetWindowFont(Win::GetDlgItem(hwnd, IDC_BULLET5), bulletFont, true); } else { LOG(String::format( L"Failed to create font for bullet list: hr = %1!x!", GetLastError())); }
}
bool BeforeBeginPage::OnSetActive() { LOG_FUNCTION(BeforeBeginPage::OnSetActive);
Win::PropSheet_SetWizButtons( Win::GetParent(hwnd), PSWIZB_NEXT | PSWIZB_BACK);
return true; }
bool BeforeBeginPage::OnNotify( HWND /*windowFrom*/, unsigned controlIDFrom, unsigned code, LPARAM /*lParam*/) { // LOG_FUNCTION(BeforeBeginPage::OnCommand);
bool result = false;
if (IDC_LINK == controlIDFrom && (NM_CLICK == code || NM_RETURN == code)) { Win::HtmlHelp( hwnd, BEFORE_BEGIN_LINK_HELP, HH_DISPLAY_TOPIC, 0); } return result; }
int BeforeBeginPage::Validate() { LOG_FUNCTION(BeforeBeginPage::Validate);
// Gather the machine network and role information
State& state = State::GetInstance();
if (!state.HasStateBeenRetrieved()) { if (!state.RetrieveMachineConfigurationInformation(hwnd)) { ASSERT(false); LOG(L"The machine configuration could not be retrieved."); return -1; } }
int nextPage = IDD_DECISION_PAGE; /* Just for testing the NIC selection page
int nextPage = IDD_CUSTOM_SERVER_PAGE;
// The decision page should be shown only if we are not a DC, not a DHCP server,
// not a DNS server, have only one or two NICs, and there is only one static
// IP address on the interfaces
if (!(state.IsDC() || state.IsUpgradeState())) { if (!InstallationUnitProvider::GetInstance().GetDHCPInstallationUnit().IsServiceInstalled() && !InstallationUnitProvider::GetInstance().GetDNSInstallationUnit().IsServiceInstalled()) { if (state.GetNICCount() == 1) { if (!state.IsDHCPAvailableOnNIC(0)) { nextPage = IDD_DECISION_PAGE; } } else if (state.GetNICCount() == 2) { bool isDHCPAvailableOnNIC1 = state.IsDHCPAvailableOnNIC(0); bool isDHCPAvailableOnNIC2 = state.IsDHCPAvailableOnNIC(1);
if ((!isDHCPAvailableOnNIC1 && isDHCPAvailableOnNIC2) || (isDHCPAvailableOnNIC1 && !isDHCPAvailableOnNIC2)) { // As long as only one of the interfaces has a
// dynamically assigned IP address we can go
// through the Express path
nextPage = IDD_DECISION_PAGE; } } else { // If the machine doesn't have a NIC or
// has more than 2 NICs then there is either no
// reason to make this a network server or the
// user is considered more advanced and should
// run through the custom part of the wizard
} } } */ LOG(String::format(L"nextPage = %1!d!", nextPage)); return nextPage; }
|