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.

374 lines
16 KiB
C++

// XTPCalendarEventPropertiesDlg.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_PROPERTIS_DLG_H__)
#define _XTP_CALENDAR_EVENT_PROPERTIS_DLG_H__
//}}AFX_CODEJOCK_PRIVATE
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CXTPCalendarViewEvent;
class CXTPCalendarControl;
class CXTPCalendarEventCategories;
class CXTPCalendarEventCategoryIDs;
//===========================================================================
// Summary:
// This class implements event category selector combobox.
//===========================================================================
class _XTP_EXT_CLASS CXTPCalendarEventCategoryComboBox : public CComboBox
{
//DECLARE_DYNAMIC(CXTPCalendarEventCategoryComboBox)
public:
// -------------------------------------------------------------------
// Summary:
// Standard object constructor.
// -------------------------------------------------------------------
CXTPCalendarEventCategoryComboBox();
// -------------------------------------------------------------------
// Summary:
// Standard object destructor.
// -------------------------------------------------------------------
virtual ~CXTPCalendarEventCategoryComboBox();
//--------------------------------------------------------------------
// Summary:
// Use this member to add default set of colors.
// Parameters:
// pCategories - Pointer to categories array.
// pChecked - Pointer to array with checked items IDs.
// Returns:
// true if successful, false otherwise.
//--------------------------------------------------------------------
virtual BOOL Init(CXTPCalendarEventCategories* pCategories, CXTPCalendarEventCategoryIDs* pChecked);
//--------------------------------------------------------------------
// Summary:
// Use this member to get selected categories.
// Parameters:
// pChecked - [in/out] A pointer to CXTPCalendarEventCategoryIDs
// collection to receive selected category's IDs.
// pbChanged - [in/out] This member is set to TRUE if category's
// IDs set changed.
//--------------------------------------------------------------------
virtual void GetChecked(CXTPCalendarEventCategoryIDs* pChecked, BOOL* pbChanged);
protected:
//--------------------------------------------------------------------
// Summary:
// This function implements custom draw combobox items.
// Parameters:
// lpDIS - A pointer to LPDRAWITEMSTRUCT structure.
//--------------------------------------------------------------------
virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
// -----------------------------------------------------------
// Summary:
// This function implements measure items for custom draw.
// Parameters:
// lpMIS : A pointer to LPMEASUREITEMSTRUCT structure.
//
// -----------------------------------------------------------
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMIS);
protected:
// -------------------------------------------------------------------
// Summary:
// Use this member function to get list box selected item (works
// for dropped state only).
// Returns:
// Currently selected item index or LB_ERR.
// -------------------------------------------------------------------
virtual int GetLBCurSel() const;
// -------------------------------------------------------------------
// Summary:
// Use this member function to redraw list box (works for dropped
// state only).
// Parameters:
// bUpdateNow - Set as TRUE to call UpdateWindow, FALSE to call Invalidate.
// -------------------------------------------------------------------
virtual void RedrawLB(BOOL bUpdateNow = FALSE);
//{{AFX_CODEJOCK_PRIVATE
afx_msg void OnSelChange();
afx_msg void OnDropDown();
afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags);
virtual void _OnSelChange(int nItemIndex);
//}}AFX_CODEJOCK_PRIVATE
protected:
CXTPCalendarEventCategories* m_pCategories; // Pointer to categories array.
CXTPCalendarEventCategoryIDs m_arChecked; // Array which store checked item IDs.
private:
UINT m_nLastKey;
DECLARE_MESSAGE_MAP()
};
//===========================================================================
// Summary:
// This class implements event label selector combobox.
//===========================================================================
class _XTP_EXT_CLASS CXTPCalendarEventLabelComboBox : public CComboBox
{
public:
//--------------------------------------------------------------------
// Summary:
// Standard object constructor.
//--------------------------------------------------------------------
CXTPCalendarEventLabelComboBox();
// -------------------------------------------------------------------
// Summary:
// Standard object destructor.
// -------------------------------------------------------------------
virtual ~CXTPCalendarEventLabelComboBox();
//--------------------------------------------------------------------
// Summary:
// Use this member to add default set of colors.
// Parameters:
// pLabels - Pointer to labels array.
//--------------------------------------------------------------------
virtual void Init(CXTPCalendarEventLabels* pLabels);
//--------------------------------------------------------------------
// Summary:
// Use this member to get selected label ID.
// Returns:
// A selected label ID.
//--------------------------------------------------------------------
virtual int GetLabelID() const;
//--------------------------------------------------------------------
// Summary:
// Use this member to set selected label ID.
// Parameters:
// nID - A selected label ID.
//--------------------------------------------------------------------
virtual void SetLabelID(int nID);
protected:
//--------------------------------------------------------------------
// Summary:
// This function implements custom draw combobox items.
// Parameters:
// lpDIS - A pointer to LPDRAWITEMSTRUCT structure.
//--------------------------------------------------------------------
virtual void DrawItem(LPDRAWITEMSTRUCT lpDIS);
// -----------------------------------------------------------
// Summary:
// This function implements measure items for custom draw.
// Parameters:
// lpMIS : A pointer to LPMEASUREITEMSTRUCT structure.
//
// -----------------------------------------------------------
virtual void MeasureItem(LPMEASUREITEMSTRUCT lpMIS);
protected:
CXTPCalendarEventLabels* m_pLabels; // Pointer to labels array.
};
//===========================================================================
// Summary:
// This class used to edit calendar event properties. This is a default
// implementation which can be used as an example or as a base class
// for custom dialogs.
// It designed to be localized - XTPResourceManager is used to load
// resources.
// See Also:
// CXTPCalendarEventRecurrenceDlg
//===========================================================================
class _XTP_EXT_CLASS CXTPCalendarEventPropertiesDlg : public CDialog
{
//{{AFX_CODEJOCK_PRIVATE
DECLARE_DYNAMIC(CXTPCalendarEventPropertiesDlg)
//}}AFX_CODEJOCK_PRIVATE
public:
//{{AFX_CODEJOCK_PRIVATE
enum { IDD = XTP_IDD_CALENDAR_EVENT_PROPERTIES };
//}}AFX_CODEJOCK_PRIVATE
//-----------------------------------------------------------------------
// Summary:
// Dialog class constructor.
// Parameters:
// pControl - [in] Pointer to control.
// bAddEvent - [in] If TRUE DataProvider->AddEvent() will be called
// on OK button pressed, otherwise ChangeEvent
// will be called.
// pParent - [in] Pointer to parent window. Can be NULL.
//
// pEditingEvent - [in, out] Pointer to editing event object. If NULL
// a new event will be created.
// nIDTemplate - [in] Contains the ID number of a dialog-box template resource.
// Remarks:
// If pEditingEvent is NULL the new event will be created and StartTime,
// EndTime, AllDayEvent, ScheduleID properties will be initialized using
// current view selection.
// If OK button pressed event will be added or changed and control updated
// automatically.
// See Also:
// ~CXTPCalendarEventRecurrenceDlg()
//-----------------------------------------------------------------------
//CXTPCalendarEventPropertiesDlg(CXTPCalendarControl* pControl, BOOL bAddEvent,
// CWnd* pParent = NULL, CXTPCalendarEvent* pEditingEvent = NULL,
// UINT nIDTemplate = CXTPCalendarEventPropertiesDlg::IDD);
// ------------------------------------------------------------------
// Summary:
// Constructor with extra COleDateTime parameter - initial Dialog
// setting - user can change it if needed<p />
//
// Parameters:
// pControl : pointer to CXTPCalendarControl
// bAddEvent : BOOL flag to add event (if TRUE) or modify existed (if FALSE)
// pParent : parent CWnd*
// pEditingEvent : pointer to paseed event
// nIDTemplate : dialog resource template id
// dtInitial : initial datetime passed
//
// ------------------------------------------------------------------
CXTPCalendarEventPropertiesDlg(CXTPCalendarControl* pControl,
BOOL bAddEvent,
CWnd* pParent = NULL,
CXTPCalendarEvent* pEditingEvent = NULL,
UINT nIDTemplate = CXTPCalendarEventPropertiesDlg::IDD,
COleDateTime dtInitial = COleDateTime::GetCurrentTime());
//-----------------------------------------------------------------------
// Summary:
// Default object destructor.
//-----------------------------------------------------------------------
virtual ~CXTPCalendarEventPropertiesDlg(){};
protected:
//-----------------------------------------------------------------------
// Summary:
// Update dialog controls values using editing event properties.
//-----------------------------------------------------------------------
virtual void UpdateControlsFromEvent();
//-----------------------------------------------------------------------
// Summary:
// Update dialog controls state (enabled and visible) using editing
// event properties.
//-----------------------------------------------------------------------
virtual void UpdateControlsState();
//-----------------------------------------------------------------------
// Summary:
// Initialize Reminder combobox.
// Remarks:
// Time duration formatted using active resource file.
//-----------------------------------------------------------------------
virtual void InitReminderComboBox();
//-----------------------------------------------------------------------
// Summary:
// Initialize Busy Status combobox.
//-----------------------------------------------------------------------
virtual void InitBusyStatusComboBox();
// Generated message map functions
//{{AFX_CODEJOCK_PRIVATE
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
virtual BOOL OnInitDialog();
virtual void OnOK();
virtual void OnCancel();
afx_msg void OnCheckReminder();
afx_msg void OnBnClickedButtonRecurrecnce();
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
afx_msg void OnBnClickedCheckAlldayEvent();
afx_msg void OnScheduleIdChanged();
virtual CString LoadString(UINT nIDResource) const;
virtual void AddEndDate_ResetTime(COleDateTime dtStartDate, COleDateTime& rdtEndDate, int nDays);
DECLARE_MESSAGE_MAP()
//}}AFX_CODEJOCK_PRIVATE
public:
DWORD GetLastEventID();
BOOL m_bOccurrence; // If TRUE the not recurring event or recurrence exception (ocurrence) is editing, otherwise master event is editing.
BOOL m_bRecurrenceUpdate; // falg to force update event if recurrence dialog used
protected:
void OnStartDateChanged(NMHDR *pNMHDR, LRESULT *pResult);
void OnStartTimeChanged(NMHDR *pNMHDR, LRESULT *pResult);
void OnEndDateChanged(NMHDR *pNMHDR, LRESULT *pResult);
void OnEndTimeChanged(NMHDR *pNMHDR, LRESULT *pResult);
protected:
CXTPCalendarEventPtr m_ptrEditingEvent; // Pointer to editing event object.
CXTPCalendarControl* m_ptrControl; // Pointer to Calendar control.
CWnd* m_pOwnerWnd; // Pointer to Owner Wnd.
BOOL m_bAddEvent; // Store edit mode: Add or Change.
DWORD m_dNewEventID; // Successfully added Event ID
BOOL m_bHScrollEnabled; // Tells whether the horizontal scrollbar is enabled or not.
BOOL m_bVScrollEnabled; // Tells whether the vertical scrollbar is enabled or not.
protected:
//------------------------------------------------------------------------
CString m_strSubject; // Store subject editor value. UpdateData method used to Exchange value with dialog control.
CString m_strLocation; // Store location editor value. UpdateData method used to Exchange value with dialog control
CString m_strBody; // Store body editor value. UpdateData method used to Exchange value with dialog control.
COleDateTime m_dtStartDate; // Store StartDate editor value. UpdateData method used to Exchange value with dialog control.
COleDateTime m_dtStartTime; // Store StartTime 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.
COleDateTime m_dtEndTime; // Store EndTime editor value. UpdateData method used to Exchange value with dialog control.
int m_nBusyStatus; // Store BusyStatus checkbox value. UpdateData method used to Exchange value with dialog control.
BOOL m_bAllDayEvent; // Store AllDayEvent checkbox value. UpdateData method used to Exchange value with dialog control.
BOOL m_bPrivate; // Store Private checkbox value. UpdateData method used to Exchange value with dialog control.
BOOL m_bMeeting; // Store Meeting checkbox value. UpdateData method used to Exchange value with dialog control.
BOOL m_bReminder; // Store Reminder checkbox value. UpdateData method used to Exchange value with dialog control.
int m_nAllDayEventSet; // If value \< 0 - AllDayEvent control initialized from editing event, otherwise it is initialized from m_nAllDayEventSet value.
BOOL m_bCategoriesEnabled; // Define are Categories or Labels used.
CXTPCalendarEventCategoryComboBox m_ctrlCategories; // Categories combobox control instance.
CXTPCalendarEventLabelComboBox m_ctrlLabelCB; // Label combobox control instance.
CComboBox m_ctrlReminderCB; // Reminder combobox control instance.
CComboBox m_ctrlBusyStatusCB; // BusyStatus combobox control instance.
CComboBox m_ctrlScheduleIDCB; // ScheduleID combobox control instance.
CStatic m_ctrlScheduleLabel; // Label window for ScheduleID combobox control.
CCheckListBox m_ctrlScheduleSet; //for MultipleSchedules support
};
#endif // !defined(_XTP_CALENDAR_EVENT_PROPERTIS_DLG_H__)