245 lines
5.7 KiB
C++
245 lines
5.7 KiB
C++
//+--------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
// Copyright (C) Microsoft Corporation, 1994 - 1996.
|
|
//
|
|
// File: selmonth.cxx
|
|
//
|
|
// Contents: Implementation of class to manage simple month-selection
|
|
// dialog box.
|
|
//
|
|
// Classes: CSelectMonth
|
|
//
|
|
// History: 5-05-1997 DavidMun Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
#include "..\pch\headers.hxx"
|
|
#pragma hdrstop
|
|
#include <mstask.h>
|
|
#include "dll.hxx"
|
|
#include "dlg.hxx"
|
|
#include "selmonth.hxx"
|
|
#include "rc.h"
|
|
#include "uiutil.hxx"
|
|
#include "defines.hxx"
|
|
#include "helpids.h"
|
|
|
|
|
|
// Helpids for Select Months dialog
|
|
const ULONG s_aSelectMonthDlgHelpIds[] =
|
|
{
|
|
select_month_dlg, Hselect_month_dlg,
|
|
chk_jan, Hchk_jan,
|
|
chk_feb, Hchk_feb,
|
|
chk_mar, Hchk_mar,
|
|
chk_apr, Hchk_apr,
|
|
chk_may, Hchk_may,
|
|
chk_jun, Hchk_jun,
|
|
chk_jul, Hchk_jul,
|
|
chk_aug, Hchk_aug,
|
|
chk_sep, Hchk_sep,
|
|
chk_oct, Hchk_oct,
|
|
chk_nov, Hchk_nov,
|
|
chk_dec, Hchk_dec,
|
|
lbl_sel_months, Hlbl_sel_months,
|
|
0,0
|
|
};
|
|
|
|
extern "C" TCHAR szMstaskHelp[];
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
//
|
|
// Member: CSelectMonth::InitSelectionFromTrigger
|
|
//
|
|
// Synopsis: Set selected bits from monthly trigger
|
|
//
|
|
// Arguments: [pjt] - pointer to trigger to modify, must be of type
|
|
// TASK_TIME_TRIGGER_MONTHLYDATE or
|
|
// TASK_TIME_TRIGGER_MONTHLYDOW.
|
|
//
|
|
// History: 07-18-1997 DavidMun Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
VOID
|
|
CSelectMonth::InitSelectionFromTrigger(
|
|
const TASK_TRIGGER *pjt)
|
|
{
|
|
if (pjt->TriggerType == TASK_TIME_TRIGGER_MONTHLYDATE)
|
|
{
|
|
_rgfMonths = pjt->Type.MonthlyDate.rgfMonths;
|
|
}
|
|
else
|
|
{
|
|
Win4Assert(pjt->TriggerType == TASK_TIME_TRIGGER_MONTHLYDOW);
|
|
_rgfMonths = pjt->Type.MonthlyDOW.rgfMonths;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
//
|
|
// Member: CSelectMonth::UpdateTrigger
|
|
//
|
|
// Synopsis: Copy the dialog settings into the appropriate rgfMonths
|
|
// field in [pjt].
|
|
//
|
|
// Arguments: [pjt] - pointer to trigger to modify.
|
|
//
|
|
// History: 07-18-1997 DavidMun Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
VOID
|
|
CSelectMonth::UpdateTrigger(
|
|
TASK_TRIGGER *pjt)
|
|
{
|
|
if (!_rgfMonths)
|
|
{
|
|
_rgfMonths = ALL_MONTHS;
|
|
}
|
|
|
|
if (pjt->TriggerType == TASK_TIME_TRIGGER_MONTHLYDATE)
|
|
{
|
|
pjt->Type.MonthlyDate.rgfMonths = _rgfMonths;
|
|
}
|
|
else
|
|
{
|
|
Win4Assert(pjt->TriggerType == TASK_TIME_TRIGGER_MONTHLYDOW);
|
|
pjt->Type.MonthlyDOW.rgfMonths = _rgfMonths;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
//
|
|
// Member: CSelectMonth::RealDlgProc
|
|
//
|
|
// Synopsis: Dispatch to methods for specific messages.
|
|
//
|
|
// Arguments: standard windows dlg
|
|
//
|
|
// Returns: standard windows dlg
|
|
//
|
|
// Derivation: CDlg override
|
|
//
|
|
// History: 5-05-1997 DavidMun Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
INT_PTR
|
|
CSelectMonth::RealDlgProc(
|
|
UINT uMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam)
|
|
{
|
|
switch (uMsg)
|
|
{
|
|
case WM_INITDIALOG:
|
|
_OnInit();
|
|
break;
|
|
|
|
case WM_COMMAND:
|
|
switch (GET_WM_COMMAND_ID(wParam, lParam))
|
|
{
|
|
case IDOK:
|
|
if (!_OnOK())
|
|
{
|
|
// tell user at least 1 month must be selected
|
|
SchedUIErrorDialog(Hwnd(), IERR_INVALID_MONTHLY_TASK, 0);
|
|
break;
|
|
}
|
|
// else FALL THROUGH
|
|
|
|
case IDCANCEL:
|
|
EndDialog(Hwnd(), GET_WM_COMMAND_ID(wParam, lParam) != IDCANCEL);
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case WM_HELP:
|
|
WinHelp((HWND) ((LPHELPINFO) lParam)->hItemHandle,
|
|
szMstaskHelp,
|
|
HELP_WM_HELP,
|
|
(DWORD_PTR)(LPSTR)s_aSelectMonthDlgHelpIds);
|
|
return TRUE;
|
|
|
|
case WM_CONTEXTMENU:
|
|
WinHelp((HWND) wParam,
|
|
szMstaskHelp,
|
|
HELP_CONTEXTMENU,
|
|
(DWORD_PTR)(LPSTR)s_aSelectMonthDlgHelpIds);
|
|
return TRUE;
|
|
|
|
default:
|
|
return FALSE;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
//
|
|
// Member: CSelectMonth::_OnInit
|
|
//
|
|
// Synopsis: Check boxes so they match flags in _flMonths
|
|
//
|
|
// History: 5-05-1997 DavidMun Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
VOID
|
|
CSelectMonth::_OnInit()
|
|
{
|
|
ULONG id;
|
|
|
|
for (id = chk_jan; id <= chk_dec; id++)
|
|
{
|
|
if (_rgfMonths & (1 << (id - chk_jan)))
|
|
{
|
|
CheckDlgButton(Hwnd(), id, BST_CHECKED);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//+--------------------------------------------------------------------------
|
|
//
|
|
// Member: CSelectMonth::_OnOK
|
|
//
|
|
// Synopsis: Map checked boxes to TASK_<month> bits in *_prgfMonths
|
|
//
|
|
// Returns: TRUE if at least one month is selected
|
|
//
|
|
// History: 5-05-1997 DavidMun Created
|
|
//
|
|
//---------------------------------------------------------------------------
|
|
|
|
BOOL
|
|
CSelectMonth::_OnOK()
|
|
{
|
|
ULONG id;
|
|
|
|
_rgfMonths = 0;
|
|
|
|
for (id = chk_jan; id <= chk_dec; id++)
|
|
{
|
|
if (IsDlgButtonChecked(Hwnd(), id))
|
|
{
|
|
_rgfMonths |= (1 << (id - chk_jan));
|
|
}
|
|
}
|
|
|
|
return _rgfMonths != 0;
|
|
}
|