|
|
// Copyright (c) 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 "xbytes.h"
static PCWSTR FILESERVER_PAGE_HELP = L"cys.chm::/file_server_role.htm#filesrvdiskquotas";
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);
CYSWizardPage::OnInit();
// Hook up the editbox/combobox controls to their appropriate
// XBytes class
quotaUIControls.Initialize( hwnd, IDC_SPACE_EDIT, IDC_SPACE_COMBO, 0);
warningUIControls.Initialize( hwnd, IDC_LEVEL_EDIT, IDC_LEVEL_COMBO, 0);
// unselect the "Set up default disk quotas" as the default
Win::Button_SetCheck( Win::GetDlgItem(hwnd, IDC_DEFAULT_QUOTAS_CHECK), BST_UNCHECKED);
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;
switch (controlIDFrom) { case IDC_DEFAULT_QUOTAS_CHECK: if (code == BN_CLICKED) { SetControlState(); } break;
case IDC_SPACE_COMBO: if (code == CBN_SELCHANGE) { quotaUIControls.OnComboNotifySelChange(); } break;
case IDC_LEVEL_COMBO: if (code == CBN_SELCHANGE) { warningUIControls.OnComboNotifySelChange(); } break;
case IDC_SPACE_EDIT: if (code == EN_UPDATE) { quotaUIControls.OnEditNotifyUpdate(); } else if (code == EN_KILLFOCUS) { quotaUIControls.OnEditKillFocus(); } break;
case IDC_LEVEL_EDIT: if (code == EN_UPDATE) { warningUIControls.OnEditNotifyUpdate(); } else if (code == EN_KILLFOCUS) { warningUIControls.OnEditKillFocus(); } break;
default: // do nothing
break; }
return result; }
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
quotaUIControls.Enable(settingQuotas); warningUIControls.Enable(settingQuotas);
Win::EnableWindow( Win::GetDlgItem(hwnd, IDC_SPACE_STATIC), settingQuotas);
Win::EnableWindow( Win::GetDlgItem(hwnd, IDC_LEVEL_STATIC), 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 (!settingQuotas) { Win::Button_SetCheck( Win::GetDlgItem(hwnd, IDC_DENY_DISK_CHECK), BST_UNCHECKED);
Win::Button_SetCheck( Win::GetDlgItem(hwnd, IDC_DISK_SPACE_CHECK), BST_UNCHECKED);
Win::Button_SetCheck( Win::GetDlgItem(hwnd, IDC_WARNING_LEVEL_CHECK), BST_UNCHECKED); }
// enable the next button if the user chose to set quotas
// and there is something in the quota edit box
bool spaceSet = quotaUIControls.GetBytes() > 0;
bool enableNext = (settingQuotas && spaceSet) || !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)));
INT64 quotaValue = quotaUIControls.GetBytes(); INT64 warningValue = warningUIControls.GetBytes();
if (warningValue > quotaValue) { // Get the quota text and append the size
String quotaString = Win::GetDlgItemText( hwnd, IDC_SPACE_EDIT);
quotaString += L" " + Win::ComboBox_GetCurText( Win::GetDlgItem( hwnd, IDC_SPACE_COMBO));
// Get the warning text and append the size
String warningString = Win::GetDlgItemText( hwnd, IDC_LEVEL_EDIT);
warningString += L" " + Win::ComboBox_GetCurText( Win::GetDlgItem( hwnd, IDC_LEVEL_COMBO));
String warning = String::format( IDS_FILE_WARNING_LARGER_THAN_QUOTA, warningString.c_str(), quotaString.c_str(), quotaString.c_str());
if (IDYES == popup.MessageBox( hwnd, warning, MB_ICONINFORMATION | MB_YESNO)) { warningValue = quotaValue; warningUIControls.SetBytes(warningValue); } }
fileInstallationUnit.SetSpaceQuotaValue(quotaValue); fileInstallationUnit.SetLevelQuotaValue(warningValue);
} else {
// The defaults will not be set
fileInstallationUnit.SetDefaultQuotas(false); }
nextPage = IDD_INDEXING_PAGE;
LOG(String::format( L"nextPage = %1!d!", nextPage));
return nextPage; }
|