//+---------------------------------------------------------------------------- // // Windows NT Secure Server Roles Security Configuration Wizard // // Microsoft Windows // Copyright (C) Microsoft Corporation, 1992 - 2002 // // File: SelectInputCfgPage.cxx // // Contents: Select Input Configuration Page. // // History: 2-Oct-01 EricB created // //----------------------------------------------------------------------------- #include "pch.h" #include "resource.h" #include "misc.h" #include "state.h" #include "SelectInputCfgPage.h" SelectInputCfgPage::SelectInputCfgPage() : SecCfgWizardPage( IDD_SELECTCFG_NAME, IDS_SELECTCFG_NAME_PAGE_TITLE, IDS_SELECTCFG_NAME_PAGE_SUBTITLE) { LOG_CTOR(SelectInputCfgPage); } SelectInputCfgPage::~SelectInputCfgPage() { LOG_DTOR(SelectInputCfgPage); } void SelectInputCfgPage::OnInit() { LOG_FUNCTION(SelectInputCfgPage::OnInit); Win::Edit_LimitText(Win::GetDlgItem(hwnd, IDC_EXISTING_CFG_EDIT), MAX_PATH); Win::CheckDlgButton(hwnd, IDC_NEW_CFG_RADIO, BST_CHECKED); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_EXISTING_CFG_EDIT), false); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_BROWSE_FOR_CFG_BTN), false); } static void enable(HWND dialog) { ASSERT(Win::IsWindow(dialog)); int next = PSWIZB_NEXT; if (Win::IsDlgButtonChecked(dialog, IDC_EDIT_CFG_RADIO)) { next = !Win::GetTrimmedDlgItemText(dialog, IDC_EXISTING_CFG_EDIT).empty() ? PSWIZB_NEXT : 0; } Win::PropSheet_SetWizButtons( Win::GetParent(dialog), PSWIZB_BACK | next); } bool SelectInputCfgPage::OnCommand( HWND /* windowFrom */ , unsigned controlIDFrom, unsigned code) { // LOG_FUNCTION(SelectInputCfgPage::OnCommand); State& state = State::GetInstance(); switch (controlIDFrom) { case IDC_EDIT_CFG_RADIO: { if (code == BN_CLICKED) { Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_EXISTING_CFG_EDIT), true); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_BROWSE_FOR_CFG_BTN), true); enable(hwnd); state.SetInputType(State::OpenExisting); } break; } case IDC_NEW_CFG_RADIO: case IDC_ROLLBACK_CFG_RADIO: { if (code == BN_CLICKED) { Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_EXISTING_CFG_EDIT), false); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_BROWSE_FOR_CFG_BTN), false); enable(hwnd); state.SetInputType(controlIDFrom == IDC_NEW_CFG_RADIO ? State::CreateNew : State::Rollback); } break; } case IDC_EXISTING_CFG_EDIT: { if (code == EN_CHANGE) { enable(hwnd); } break; } case IDC_BROWSE_FOR_CFG_BTN: { if (code == BN_CLICKED) { String str(L"placeholder for file open dialog"); popup.Info(hwnd, str); } break; } default: { // do nothing break; } } return false; } bool SelectInputCfgPage::OnSetActive() { LOG_FUNCTION(SelectInputCfgPage::OnSetActive); enable(hwnd); return true; } int SelectInputCfgPage::Validate() { LOG_FUNCTION(SelectInputCfgPage::Validate); int nextPage = IDD_SECURITY_LEVEL;//IDD_SERVER_ROLE_SEL; //IDD_FINISH; State& state = State::GetInstance(); HRESULT hr = S_OK; switch (state.GetInputType()) { case State::OpenExisting: state.SetInputFileName( Win::GetTrimmedDlgItemText(hwnd, IDC_EXISTING_CFG_EDIT)); hr = state.ParseInputFile(); if (FAILED(hr)) { popup.Error(hwnd, hr, IDS_INVALID_EXISTING_INPUT_FILE); nextPage = -1; } break; case State::CreateNew: hr = state.ParseInputFile(); if (FAILED(hr)) { if (HRESULT_FROM_WIN32(ERROR_FILE_NOT_FOUND) == hr) { popup.Gripe(hwnd, String::load(IDS_INPUT_FILE_NOT_FOUND, hResourceModuleHandle)); } else { popup.Error(hwnd, hr, IDS_INVALID_INPUT_FILE); } // nextPage = ?; now what? } break; case State::Rollback: hr = state.DoRollback(); if (FAILED(hr)) { popup.Error(hwnd, hr, IDS_ROLLBACK_FAILED); // nextPage = ?; now what? } break; default: ASSERT(false); } return nextPage; }