361 lines
9.7 KiB
C++
361 lines
9.7 KiB
C++
// 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;
|
|
}
|
|
|
|
|
|
|
|
|
|
|