windows-nt/Source/XPSP1/NT/admin/services/sched/wizard/daily.cxx
2020-09-26 16:20:57 +08:00

308 lines
7.4 KiB
C++

//+--------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1994 - 1996.
//
// File: daily.cxx
//
// Contents: Task wizard daily trigger property page implementation.
//
// Classes: CDailyPage
//
// History: 4-28-1997 DavidMun Created
//
//---------------------------------------------------------------------------
#include "..\pch\headers.hxx"
#pragma hdrstop
#include "myheaders.hxx"
//
// Constants
//
// NDAYS_MIN - minimum value for daily_ndays_ud spin control
// NDAYS_MAX - maximum value for daily_ndays_ud spin control
//
#define NDAYS_MIN 1
#define NDAYS_MAX 365
#define TASK_WEEKDAYS (TASK_MONDAY | \
TASK_TUESDAY | \
TASK_WEDNESDAY | \
TASK_THURSDAY | \
TASK_FRIDAY)
//+--------------------------------------------------------------------------
//
// Member: CDailyPage::CDailyPage
//
// Synopsis: ctor
//
// Arguments: [ptszFolderPath] - full path to tasks folder with dummy
// filename appended
// [phPSP] - filled with prop page handle
//
// History: 4-28-1997 DavidMun Created
//
//---------------------------------------------------------------------------
CDailyPage::CDailyPage(
CTaskWizard *pParent,
LPTSTR ptszFolderPath,
HPROPSHEETPAGE *phPSP):
CTriggerPage(IDD_DAILY,
IDS_DAILY_HDR2,
ptszFolderPath,
phPSP)
{
TRACE_CONSTRUCTOR(CDailyPage);
_idSelectedRadio = 0;
}
//+--------------------------------------------------------------------------
//
// Member: CDailyPage::~CDailyPage
//
// Synopsis: dtor
//
// History: 4-28-1997 DavidMun Created
//
//---------------------------------------------------------------------------
CDailyPage::~CDailyPage()
{
TRACE_DESTRUCTOR(CDailyPage);
}
//===========================================================================
//
// CPropPage overrides
//
//===========================================================================
//+--------------------------------------------------------------------------
//
// Member: CDailyPage::_OnCommand
//
// Synopsis: Handle user input
//
// Arguments: [id] - resource id of control affected
// [hwndCtl] - window handle of control affected
// [codeNotify] - indicates what happened to control
//
// Returns: 0 (handled), 1 (not handled)
//
// History: 5-20-1997 DavidMun Created
//
//---------------------------------------------------------------------------
LRESULT
CDailyPage::_OnCommand(
INT id,
HWND hwndCtl,
UINT codeNotify)
{
LRESULT lr = 0;
switch (codeNotify)
{
case BN_CLICKED:
switch (id)
{
case daily_day_rb:
case daily_weekday_rb:
case daily_ndays_rb:
_idSelectedRadio = (USHORT) id;
_EnableNDaysControls(id == daily_ndays_rb);
break;
default:
lr = 1;
break;
}
break;
case EN_UPDATE:
{
//
// If the user just pasted non-numeric text or an illegal numeric
// value, overwrite it and complain.
//
INT iNewPos = GetDlgItemInt(Hwnd(), daily_ndays_edit, NULL, FALSE);
if (iNewPos < NDAYS_MIN || iNewPos > NDAYS_MAX)
{
HWND hUD = _hCtrl(daily_ndays_ud);
UpDown_SetPos(hUD, UpDown_GetPos(hUD));
MessageBeep(MB_ICONASTERISK);
}
}
default:
lr = 1;
break;
}
return lr;
}
//===========================================================================
//
// CWizPage overrides
//
//===========================================================================
//+--------------------------------------------------------------------------
//
// Member: CDailyPage::_OnInitDialog
//
// Synopsis: Perform initialization that should only occur once.
//
// Arguments: [lParam] - LPPROPSHEETPAGE used to create this page
//
// Returns: TRUE (let windows set focus)
//
// History: 5-20-1997 DavidMun Created
//
//---------------------------------------------------------------------------
LRESULT
CDailyPage::_OnInitDialog(
LPARAM lParam)
{
TRACE_METHOD(CDailyPage, _OnInitDialog);
_UpdateTimeFormat();
_idSelectedRadio = daily_day_rb;
CheckDlgButton(Hwnd(), _idSelectedRadio, BST_CHECKED);
_EnableNDaysControls(FALSE);
UpDown_SetRange(_hCtrl(daily_ndays_ud), NDAYS_MIN, NDAYS_MAX);
UpDown_SetPos(_hCtrl(daily_ndays_ud), 1);
Edit_LimitText(_hCtrl(daily_ndays_edit), 3);
return TRUE;
}
//+--------------------------------------------------------------------------
//
// Member: CDailyPage::_OnPSNSetActive
//
// Synopsis: Enable the back and next buttons, since this page cannot
// have invalid data
//
// History: 5-20-1997 DavidMun Created
//
//---------------------------------------------------------------------------
LRESULT
CDailyPage::_OnPSNSetActive(
LPARAM lParam)
{
_SetWizButtons(PSWIZB_BACK | PSWIZB_NEXT);
return CPropPage::_OnPSNSetActive(lParam);
}
//+--------------------------------------------------------------------------
//
// Member: CDailyPage::_EnableNDaysControls
//
// Synopsis: Enable or disable the 'run every n days' controls
//
// History: 5-20-1997 DavidMun Created
//
//---------------------------------------------------------------------------
VOID
CDailyPage::_EnableNDaysControls(
BOOL fEnable)
{
EnableWindow(_hCtrl(daily_ndays_ud), fEnable);
EnableWindow(_hCtrl(daily_ndays_edit), fEnable);
EnableWindow(_hCtrl(daily_ndays_lbl), fEnable);
}
//===========================================================================
//
// CTriggerPage overrides
//
//===========================================================================
//+--------------------------------------------------------------------------
//
// Member: CDailyPage::FillInTrigger
//
// Synopsis: Fill in the fields of the trigger structure according to the
// settings specified for this type of trigger
//
// Arguments: [pTrigger] - trigger struct to fill in
//
// Modifies: *[pTrigger]
//
// History: 5-06-1997 DavidMun Created
//
// Notes: Precondition is that trigger's cbTriggerSize member is
// initialized.
//
//---------------------------------------------------------------------------
VOID
CDailyPage::FillInTrigger(
TASK_TRIGGER *pTrigger)
{
switch (_idSelectedRadio)
{
case daily_day_rb:
pTrigger->TriggerType = TASK_TIME_TRIGGER_DAILY;
pTrigger->Type.Daily.DaysInterval = 1;
break;
case daily_weekday_rb:
pTrigger->TriggerType = TASK_TIME_TRIGGER_WEEKLY;
pTrigger->Type.Weekly.WeeksInterval = 1;
pTrigger->Type.Weekly.rgfDaysOfTheWeek = TASK_WEEKDAYS;
break;
case daily_ndays_rb:
pTrigger->TriggerType = TASK_TIME_TRIGGER_DAILY;
pTrigger->Type.Daily.DaysInterval =
UpDown_GetPos(_hCtrl(daily_ndays_ud));
break;
default:
DEBUG_ASSERT(FALSE);
break;
}
FillInStartDateTime(_hCtrl(startdate_dp), _hCtrl(starttime_dp), pTrigger);
}