You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

243 lines
10 KiB
C

2 years ago
// XTPCalendarEventRecurrenceDlg.h interface for the CXTPCalendarEventPropertiesDlg.
//
// This file is a part of the XTREME CALENDAR MFC class library.
// (c)1998-2012 Codejock Software, All Rights Reserved.
//
// THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE
// RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN
// CONSENT OF CODEJOCK SOFTWARE.
//
// THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED
// IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO
// YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A
// SINGLE COMPUTER.
//
// CONTACT INFORMATION:
// support@codejock.com
// http://www.codejock.com
//
/////////////////////////////////////////////////////////////////////////////
//{{AFX_CODEJOCK_PRIVATE
#if !defined(_XTP_CALENDAR_EVENT_RECURRENCE_DLG_H__)
#define _XTP_CALENDAR_EVENT_RECURRENCE_DLG_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
//===========================================================================
// Summary:
// This constant defines a value which returned from
// CXTPCalendarEventRecurrenceDlg::DoModal() when "Remove Recurrence"
// button pressed.
// See Also:
// CXTPCalendarEventRecurrenceDlg
//===========================================================================
static const int XTP_CALENDAR_DLGRESULT_REMOVE_RECURRENCE = 103;
//===========================================================================
// Summary:
// This class used for manipulations with recurrence state of the events.
// See Also:
// CXTPCalendarEventPropertiesDlg
//===========================================================================
class _XTP_EXT_CLASS CXTPCalendarEventRecurrenceDlg : public CDialog
{
//{{AFX_CODEJOCK_PRIVATE
DECLARE_DYNAMIC(CXTPCalendarEventRecurrenceDlg)
//}}AFX_CODEJOCK_PRIVATE
public:
//{{AFX_CODEJOCK_PRIVATE
enum { IDD = XTP_IDD_CALENDAR_RECURRENCE_PROPERTIES };
//}}AFX_CODEJOCK_PRIVATE
//-----------------------------------------------------------------------
// Summary:
// Dialog class constructor.
// Parameters:
// pMasterEvent - [in] Master event pointer to edit recurrence.
// pParent - [in] Pointer to parent window. Can be NULL.
// nIDTemplate - [in] Contains the ID number of a dialog-box template resource.
// See Also:
// ~CXTPCalendarEventRecurrenceDlg()
//-----------------------------------------------------------------------
CXTPCalendarEventRecurrenceDlg(CXTPCalendarEvent* pMasterEvent, CWnd* pParent = NULL,
UINT nIDTemplate = CXTPCalendarEventRecurrenceDlg::IDD);
//-----------------------------------------------------------------------
// Summary:
// Default collection destructor.
//-----------------------------------------------------------------------
virtual ~CXTPCalendarEventRecurrenceDlg();
BOOL m_bDisableRemove; // Set TRUE to disable button remove recurrence. FALSE by default.
int nWorkWeekMask; // This structure member represents week working days using XTPCalendarWeekDay enumeration.
protected:
//-----------------------------------------------------------------------
// Summary:
// Initialize data for Start and End combobox controls.
// Remarks:
// Time formatted using active locale.
//-----------------------------------------------------------------------
virtual void InitStartEndCB();
//-----------------------------------------------------------------------
// Summary:
// Initialize data for Duration combobox control.
// Remarks:
// Time duration formatted using active resource file.
//-----------------------------------------------------------------------
virtual void InitDurationCB();
//-----------------------------------------------------------------------
// Summary:
// Initialize data for days of week names.
// Parameters:
// wndCB - A CComboBox object reference to set data.
// Remarks:
// Values formatted using active locale.
//-----------------------------------------------------------------------
virtual void InitDayOfWeekCBs(CComboBox& wndCB);
//-----------------------------------------------------------------------
// Summary:
// Initialize data for months names.
// Parameters:
// wndCB - A CComboBox object reference to set data.
// Remarks:
// Values formatted using active resource file.
//-----------------------------------------------------------------------
virtual void InitMonthCBs(CComboBox& wndCB);
//-----------------------------------------------------------------------
// Summary:
// Initialize data for which day (First, Second, ...).
// Parameters:
// wndCB - A CComboBox object reference to set data.
// Remarks:
// Values formatted using active resource file.
//-----------------------------------------------------------------------
virtual void InitWhichDayCBs(CComboBox& wndCB);
//-----------------------------------------------------------------------
// Summary:
// Shows error message if the user's input is incorrect.
// Parameters:
// pWnd - A pointer to control with wrong value (to set focus).
// nCtrlID - A dialog control ID with wrong value (to set focus).
// nMin - A minimum value of allowed range.
// nMax - A maximum value of allowed range.
// Remarks:
// Message formatted using active resource file.
//-----------------------------------------------------------------------
virtual void MsgBox_WrongValue(CWnd *pWnd);
virtual void MsgBox_WrongValueRange(UINT nCtrlID, int nMin, int nMax); //<COMBINE CXTPCalendarEventRecurrenceDlg::MsgBox_WrongValue@CWnd *>
//{{AFX_CODEJOCK_PRIVATE
virtual BOOL OnInitDialog();
virtual void DoDataExchange(CDataExchange* pDX);
virtual void OnOK();
afx_msg void OnStartComboChanged();
afx_msg void OnEndComboChanged();
afx_msg void OnDurationComboChanged();
afx_msg void OnStartComboEdited();
afx_msg void OnEndComboEdited();
afx_msg void OnDurationComboEdited();
afx_msg void OnBnClickedButtonRemoveRecurrence();
// Update visible state of controls, according to the selected mode:
//day/week/month/year. wparam - ID of the selected radio
afx_msg void OnBnClickedRadioDailyYearly(UINT wparam);
afx_msg void OnTimer(UINT_PTR nIDEvent);
virtual void _MoveControlsBy_Y();
virtual int _AddString(CComboBox& wndCB, UINT nStrResID, DWORD_PTR dwItemData);
virtual int _AddLocaleString(CComboBox& wndCB, LCTYPE lcidStr, DWORD_PTR dwItemData);
virtual void OnStartChanged();
virtual void _OnStartChanged();
virtual void OnEndChanged();
virtual void _OnEndChanged();
virtual void OnDurationChanged();
virtual void _OnDurationChanged();
//Gets Time in Minutes, shown in ComboBox
virtual int GetChangedComboTimeInMin(CComboBox &wndCb);
virtual int GetDurationComboInMin();
// Shows or hides control on the dialog with specified id
virtual void ShowWindow(int nID, BOOL bShow = TRUE);
virtual void MoveWindow_Y(int nID, int nYOffset);
virtual CRect GetCtrlRect(int nID);
DECLARE_MESSAGE_MAP()
//}}AFX_CODEJOCK_PRIVATE
protected:
CXTPCalendarEventPtr m_ptrMasterEvent; //Pointer to master event
CXTPCalendarRecurrencePatternPtr m_ptrPattern; //recurrence pattern
COleDateTime m_dtStart; // Store StartTime editor value.
COleDateTime m_dtEnd; // Store EndTime editor value.
COleDateTime m_dtStartDate; // Store StartDate editor value. UpdateData method used to Exchange value with dialog control.
COleDateTime m_dtEndDate; // Store EndDate editor value. UpdateData method used to Exchange value with dialog control.
CComboBox m_wndCbStart; // StartTime combobox object.
CComboBox m_wndCbEnd; // EndTime combobox object.
CComboBox m_wndCbDuration; // Duration combobox object.
int m_nOccurNum; // Store Number of occurrences editor value. UpdateData method used to Exchange value with dialog control.
// Daly recurrence case
int m_nDayInterval; // Store days interval editor value. UpdateData method used to Exchange value with dialog control.
// Weekly recurrence case
int m_nWeeklyInterval; // Store weeks interval editor value. UpdateData method used to Exchange value with dialog control.
BOOL m_bMonday; // Store Monday checkbox state. UpdateData method used to Exchange value with dialog control.
BOOL m_bTuesday; // Store Tuesday checkbox state. UpdateData method used to Exchange value with dialog control.
BOOL m_bWednesday; // Store Wednesday checkbox state. UpdateData method used to Exchange value with dialog control.
BOOL m_bThursday; // Store Thursday checkbox state. UpdateData method used to Exchange value with dialog control.
BOOL m_bFriday; // Store Friday checkbox state. UpdateData method used to Exchange value with dialog control.
BOOL m_bSaturday; // Store Saturday checkbox state. UpdateData method used to Exchange value with dialog control.
BOOL m_bSunday; // Store Sunday checkbox state. UpdateData method used to Exchange value with dialog control.
// Monthly recurrence case
int m_MonthDate; // Store month day editor value. UpdateData method used to Exchange value with dialog control.
int m_nMonthInterval; // Store month interval editor value. UpdateData method used to Exchange value with dialog control.
int m_nMonthInterval2; // Store month interval editor value (for second case). UpdateData method used to Exchange value with dialog control.
CComboBox m_wndCbMonthDay; // Day of week combobox object for monthly recurrence.
CComboBox m_wndCbMonthWhich; // Which Day combobox object for monthly recurrence.
// Yearly recurrence case
int m_nDayOfMonth; // Store month day editor value for Yearly recurrence. UpdateData method used to Exchange value with dialog control.
CComboBox m_wndYearMonth; // Month combobox object for Yearly recurrence.
CComboBox m_wndComboYearMonth2; // Month combobox object for Yearly recurrence (for second case).
CComboBox m_wndCbYearWhich; // Which Day combobox object for Yearly recurrence.
CComboBox m_wndCbYearDay; // Day of week combobox object for Yearly recurrence.
};
/////////////////////////////////////////////////////////////////////////////
AFX_INLINE void CXTPCalendarEventRecurrenceDlg::ShowWindow(int nID, BOOL bShow)
{
if (GetDlgItem(nID))
GetDlgItem(nID)->ShowWindow(bShow ? SW_SHOW : SW_HIDE);
}
#endif // !defined(_XTP_CALENDAR_EVENT_RECURRENCE_DLG_H__)