|
|
// Copyright (c) 1997-2001 Microsoft Corporation
//
// File: FileServerPage.cpp
//
// Synopsis: Defines the File server page of the CYS wizard
//
// History: 02/08/2001 JeffJon Created
#include "pch.h"
#include "resource.h"
#include "InstallationUnitProvider.h"
#include "FileServerPage.h"
#include "state.h"
#define DISK_QUOTAS_LIMIT_TEXT 10
static PCWSTR FILESERVER_PAGE_HELP = L"cys.chm::/cys_configuring_file_server.htm";
FileServerPage::FileServerPage() : CYSWizardPage( IDD_FILE_SERVER_PAGE, IDS_FILE_SERVER_TITLE, IDS_FILE_SERVER_SUBTITLE, FILESERVER_PAGE_HELP) { LOG_CTOR(FileServerPage); }
FileServerPage::~FileServerPage() { LOG_DTOR(FileServerPage); }
void FileServerPage::OnInit() { LOG_FUNCTION(FileServerPage::OnInit);
// Load the size labels into the combo boxes
StringList combolabels; String kb = String::load(IDS_KB); push_back_unique(combolabels, kb); push_back_unique(combolabels, String::load(IDS_MB)); push_back_unique(combolabels, String::load(IDS_GB));
// Add the size labels to the space combo box
HWND spacecombo = Win::GetDlgItem(hwnd, IDC_SPACE_COMBO);
int lastIndex = Win::ComboBox_AddStrings( spacecombo, combolabels.begin(), combolabels.end());
ASSERT(lastIndex != CB_ERR);
// select the first entry in the combo box
Win::ComboBox_SelectString(spacecombo, kb);
// Add the size labels to the warning level combo box
HWND levelcombo = Win::GetDlgItem(hwnd, IDC_LEVEL_COMBO);
lastIndex = Win::ComboBox_AddStrings( levelcombo, combolabels.begin(), combolabels.end());
ASSERT(lastIndex != CB_ERR);
Win::ComboBox_SelectString(levelcombo, kb);
// unselect the "Set up default disk quotas" as the default
Win::Button_SetCheck( Win::GetDlgItem(hwnd, IDC_DEFAULT_QUOTAS_CHECK), BST_UNCHECKED);
// Set a limit of 10 characters for both the edit boxes
Win::Edit_LimitText( Win::GetDlgItem(hwnd, IDC_SPACE_EDIT), DISK_QUOTAS_LIMIT_TEXT);
Win::Edit_LimitText( Win::GetDlgItem(hwnd, IDC_LEVEL_EDIT), DISK_QUOTAS_LIMIT_TEXT);
SetControlState(); }
bool FileServerPage::OnSetActive() { LOG_FUNCTION(FileServerPage::OnSetActive);
// Disable the controls based on the UI state
SetControlState();
return true; }
bool FileServerPage::OnCommand( HWND /*windowFrom*/, unsigned controlIDFrom, unsigned code) { // LOG_FUNCTION(FileServerPage::OnCommand);
bool result = false;
if (controlIDFrom == IDC_DEFAULT_QUOTAS_CHECK || controlIDFrom == IDC_SPACE_EDIT || controlIDFrom == IDC_SPACE_COMBO || controlIDFrom == IDC_LEVEL_EDIT || controlIDFrom == IDC_LEVEL_COMBO) { if (code == CBN_SELCHANGE) { unsigned editboxID = (IDC_SPACE_COMBO == controlIDFrom) ? IDC_SPACE_EDIT : IDC_LEVEL_EDIT; UpdateQuotaControls(controlIDFrom, editboxID); } SetControlState(); }
return result; }
void FileServerPage::UpdateQuotaControls( unsigned controlIDFrom, unsigned editboxID) { LOG_FUNCTION(FileServerPage::UpdateQuotaControls);
// On any change in the combobox clear the edit field
Win::SetDlgItemText(hwnd, editboxID, L"");
// Figure out which storage size is selected in the combo box
String currentText = Win::ComboBox_GetCurText( Win::GetDlgItem(hwnd, controlIDFrom));
String kb = String::load(IDS_KB); String mb = String::load(IDS_MB); String gb = String::load(IDS_GB);
if (currentText.icompare(kb) == 0) { Win::Edit_LimitText( Win::GetDlgItem(hwnd, editboxID), DISK_QUOTAS_LIMIT_TEXT); } else if (currentText.icompare(mb) == 0) { Win::Edit_LimitText( Win::GetDlgItem(hwnd, editboxID), DISK_QUOTAS_LIMIT_TEXT); } else if (currentText.icompare(gb) == 0) { // Need to reduce the amount of allowed text so that
// we don't get overrun when we convert to bytes
Win::Edit_LimitText( Win::GetDlgItem(hwnd, editboxID), DISK_QUOTAS_LIMIT_TEXT - 1); } else { ASSERT(false && L"Unknown size type found in combobox"); } }
void FileServerPage::SetControlState() { LOG_FUNCTION(FileServerPage::SetControlState);
bool settingQuotas = Win::Button_GetCheck( Win::GetDlgItem(hwnd, IDC_DEFAULT_QUOTAS_CHECK));
// enable or disable all the controls based on the Set up default quotas checkbox
Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_SPACE_STATIC), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_SPACE_EDIT), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_SPACE_COMBO), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_LEVEL_STATIC), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_LEVEL_EDIT), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_LEVEL_COMBO), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_DENY_DISK_CHECK), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_EVENT_STATIC), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_DISK_SPACE_CHECK), settingQuotas); Win::EnableWindow(Win::GetDlgItem(hwnd, IDC_WARNING_LEVEL_CHECK), settingQuotas);
// if both edit boxes contain a value and a size label has been chosen,
// then enable the next button
bool spaceEditFilled = !Win::GetWindowText( Win::GetDlgItem(hwnd, IDC_SPACE_EDIT)).empty(); bool spaceComboSelected = Win::ComboBox_GetCurSel( Win::GetDlgItem(hwnd, IDC_SPACE_COMBO)) != CB_ERR; bool levelEditFilled = !Win::GetWindowText( Win::GetDlgItem(hwnd, IDC_LEVEL_EDIT)).empty(); bool levelComboSelected = Win::ComboBox_GetCurSel( Win::GetDlgItem(hwnd, IDC_LEVEL_COMBO)) != CB_ERR;
bool enableNext = (settingQuotas && spaceEditFilled && spaceComboSelected && levelEditFilled && levelComboSelected) || !settingQuotas;
Win::PropSheet_SetWizButtons( Win::GetParent(hwnd), enableNext ? PSWIZB_NEXT | PSWIZB_BACK : PSWIZB_BACK); }
int FileServerPage::Validate() { LOG_FUNCTION(FileServerPage::Validate);
int nextPage = -1;
// Gather the UI data and set it in the installation unit
FileInstallationUnit& fileInstallationUnit = InstallationUnitProvider::GetInstance().GetFileInstallationUnit();
if (Win::Button_GetCheck( Win::GetDlgItem(hwnd, IDC_DEFAULT_QUOTAS_CHECK))) { // We are setting the defaults
fileInstallationUnit.SetDefaultQuotas(true);
fileInstallationUnit.SetDenyUsersOverQuota( Win::Button_GetCheck( Win::GetDlgItem(hwnd, IDC_DENY_DISK_CHECK)));
fileInstallationUnit.SetEventDiskSpaceLimit( Win::Button_GetCheck( Win::GetDlgItem(hwnd, IDC_DISK_SPACE_CHECK)));
fileInstallationUnit.SetEventWarningLevel( Win::Button_GetCheck( Win::GetDlgItem(hwnd, IDC_WARNING_LEVEL_CHECK)));
// Get the value from the edit control as text
// and convert to unsigned long
String spaceStringValue = Win::GetDlgItemText( hwnd, IDC_SPACE_EDIT);
LARGE_INTEGER spaceValue; spaceValue.QuadPart = 0; String::ConvertResult convertResult = spaceStringValue.convert(spaceValue); ASSERT(convertResult == String::CONVERT_SUCCESSFUL);
fileInstallationUnit.SetSpaceQuotaValue(spaceValue.QuadPart);
String levelStringValue = Win::GetDlgItemText( hwnd, IDC_LEVEL_EDIT);
LARGE_INTEGER levelValue; levelValue.QuadPart = 0; convertResult = levelStringValue.convert(levelValue); ASSERT(convertResult == String::CONVERT_SUCCESSFUL);
fileInstallationUnit.SetLevelQuotaValue(levelValue.QuadPart);
String kb = String::load(IDS_KB); String mb = String::load(IDS_MB); String gb = String::load(IDS_GB);
String currentText = Win::ComboBox_GetCurText(Win::GetDlgItem(hwnd, IDC_SPACE_COMBO)); if (currentText.icompare(kb) == 0) { fileInstallationUnit.SetSpaceQuotaSize(QUOTA_SIZE_KB); } else if (currentText.icompare(mb) == 0) { fileInstallationUnit.SetSpaceQuotaSize(QUOTA_SIZE_MB); } else if (currentText.icompare(gb) == 0) { fileInstallationUnit.SetSpaceQuotaSize(QUOTA_SIZE_GB); } else { ASSERT(false && L"Unknown size type found in combobox"); }
currentText = Win::ComboBox_GetCurText(Win::GetDlgItem(hwnd, IDC_LEVEL_COMBO)); if (currentText.icompare(kb) == 0) { fileInstallationUnit.SetLevelQuotaSize(QUOTA_SIZE_KB); } else if (currentText.icompare(mb) == 0) { fileInstallationUnit.SetLevelQuotaSize(QUOTA_SIZE_MB); } else if (currentText.icompare(gb) == 0) { fileInstallationUnit.SetLevelQuotaSize(QUOTA_SIZE_GB); } else { ASSERT(false && L"Unknown size type found in combobox"); }
} else {
// The defaults will not be set
fileInstallationUnit.SetDefaultQuotas(false); }
if (InstallationUnitProvider::GetInstance().GetSharePointInstallationUnit().IsServiceInstalled()) { nextPage = IDD_FINISH_PAGE; } else { nextPage = IDD_INDEXING_PAGE; }
return nextPage; }
|