// XTPCalendarControl.h: interface for the CXTPCalendarControl class. // // 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(_XTPCALENDARCONTROL_H__) #define _XTPCALENDARCONTROL_H__ //}}AFX_CODEJOCK_PRIVATE #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 class CXTPCalendarView; class CXTPCalendarPaintManager; class CXTPCalendarData; class CXTPCalendarDayView; class CXTPCalendarWeekView; class CXTPCalendarMonthView; class CXTPCalendarTimeLineView; class CXTPCalendarOptions; class CXTPNotifyConnection; class CXTPNotifySink; class CXTPCalendarRemindersManager; class CXTPCalendarResources; class CXTPCalendarResourcesNf; class CXTPCalendarTheme; class CXTPMarkupContext; class CXTPMarkupUIElement; class CXTPCalendarTip; typedef DWORD_PTR XTP_CONNECTION_ID; //=========================================================================== // Summary: // Class CXTPCalendarControl implements the calendar's view interface. // Remarks: // A CXTPCalendarControl object implements a calendar view interface // similar to Outlook 2003 interface. // // There are 2 main separated concepts: Calendar data contents // and Calendar views representing this contents. // // It can show 3 types of following predefined views. Also any type // of user view could also be implemented as a descendant of CXTPCalendarView class. // // * Day and work week views - using CXTPCalendarDayView class. // * Week view - using CXTPCalendarWeekView class. // * Month view - using CXTPCalendarMonthView class. // // One of the other main Control's concepts is Calendar Resources. // Resource is the source of Calendar data contents with some additional // properties. This concept is designed to represent a schedule of a // separate person, or a shared resource (sic!) like a conference room, // a projector, and any similar entity. Each Resource has its own Data // Provider, therefore the Control can show different data sources on the // same screen. For example, you can configure Control to show your own // Outlook events in "your" resource (using MAPI Data Provider), then // you can use some shared resource data using Database Data Provider, etc. // // Note that each event now has standard "Schedule" property, defining // which user's schedule it belongs to. And each resource has a collection // of Schedule ID's to represent on it. For example, you can have only // one common Data Provider which stores events data for all members of // your organization. Every member has a corresponding schedule (i.e. // Jeff - ID 1, Matt - ID 2, John - ID 3, Room 1 - ID 10, Room 2 - ID 11, etc). // You can configure a number of resources to show data for every team // member separately, and one resource to show events for both room 1 and // room 2 together. Or for example, you want to show a common view of all // events for a specified team including only some of employees. You will // add their schedule ID's to the corresponding Resource collection, and // see all of them. Of course, when you open event details, you'll see // who it belongs to. // // // There are 2 regular models of using your custom data source with Calendar control. // // a) Firstly, you can use built-in Memory data provider, which will handle // all the data in itself. If you do not specify neither XML nor Binary // filename, it will not be automatically loaded or saved. In this case, // you'll have 2 entry points in your application: // -- Loading all data from your data source (could be done on form load // for example). Your data access code would transfer CalendarEvents // records from the data storage to objects and add them into // corresponding Calendar's collection. // -- Saving data to your data storage. You'll have to iterate all CalendarEvents, // transfer them into your data records and upload into the database. // This could be implemented on pressing Save button for example. // This is the most easy way. // // b) Second idea is to handle basic data storage operations by yourself. // This is called "custom data provider model". It could be needed when // you have a very lot of CalendarEvents records and do not want to store // them all in memory because of a huge size. Another possible need of // using this model is having all the information always updated if your // data storage is shared. // // // For some predefined examples of this functionality look Calendar Samples, // and menu items: MultiSchedules configuration and Load sample configurations... // // See Also: CXTPCalendarView, CXTPCalendarData, CXTPCalendarResource //=========================================================================== class _XTP_EXT_CLASS CXTPCalendarControl : public CWnd { //{{AFX_CODEJOCK_PRIVATE friend class CXTPCalendarView; friend class CXTPCalendarViewDay; friend class CXTPCalendarViewGroup; friend class CXTPCalendarViewEvent; friend class CCalendarControlCtrl; friend class CXTPCalendarControlView; friend class CXTPCalendarResource; friend class CXTPCalendarThemePart; //}}AFX_CODEJOCK_PRIVATE public: //----------------------------------------------------------------------- // Summary: // This member function constructs a CXTPCalendarControl object. // Remarks: // Construct a CXTPCalendarControl object in two steps. // First, call the constructor CXTPCalendarControl and then // call Create method, which initializes the window. // // Example: // // Declare a local CXTPCalendarControl object. // CXTPCalendarControl myCalendar; // // // Declare a dynamic CXTPCalendarControl object. // CXTPCalendarControl* pMyCalendar = new CXTPCalendarControl(); // // // Create a window // if (!myCalendar.Create(WS_CHILD | WS_TABSTOP | WS_VISIBLE, rcRect, this, ID_CALENDAR_CONTROL)) // { // TRACE(_T("Failed to create calendar control window\n")); // } // // See Also: Create //----------------------------------------------------------------------- CXTPCalendarControl(); //----------------------------------------------------------------------- // Summary: // This member function destroys a CXTPCalendarControl object and // handles cleanup and de-allocation. //----------------------------------------------------------------------- virtual ~CXTPCalendarControl(); //----------------------------------------------------------------------- // Summary: // This member function handles control window creation. // Parameters: // dwStyle - Specifies the window style attributes. // rect - The size and position of the window, in client coordinates of pParentWnd. // pParentWnd - The parent window. // nID - The ID of the child window. // Returns: // Nonzero if successful; otherwise 0. //----------------------------------------------------------------------- virtual BOOL Create(DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID); //----------------------------------------------------------------------- // Summary: // This member function populates the active control view with // events data. // Remarks: // Creates a new events views collection for the view, populating it // with the data objects taken from the associated data provider. // See Also: //----------------------------------------------------------------------- virtual void Populate(); // Operations public: //----------------------------------------------------------------------- // Summary: // This member function is used to obtain current paint theme. // Returns: // A paint theme ID from enum XTPCalendarTheme. //----------------------------------------------------------------------- virtual XTPCalendarTheme GetPaintTheme() const; //----------------------------------------------------------------------- // Summary: // This member function is used to set current paint theme. // Parameters: // ePaintTheme - A paint theme ID from enum XTPCalendarTheme. //----------------------------------------------------------------------- virtual void SetPaintTheme(XTPCalendarTheme ePaintTheme); //----------------------------------------------------------------------- // Summary: // This member function is used to obtain current theme ID. Basically // this can be used to check if 2010 of 2007 theme is used. // Returns: // A theme version ID from enum XTPCalendarThemeVersion. //----------------------------------------------------------------------- XTPCalendarThemeVersion GetThemeVersion() const; ///////////////////////////////////////////////////////////////////////// // drawing related //----------------------------------------------------------------------- // Summary: // This member function obtains a pointer to the associated paint // manager. // Remarks: // Call this member function to obtain the paint manager object used // for drawing a calendar control window. // Returns: // A CXTPCalendarPaintManager pointer to the associated paint manager object. // See Also: //----------------------------------------------------------------------- CXTPCalendarPaintManager* GetPaintManager() const; //----------------------------------------------------------------------- // Summary: // This member function obtains a pointer to the associated theme // object. // // Remarks: // Themes are used for drawing a calendar control window instead of // a Paint manager. // This is a new feature of Calendar control which will be further // developed. // Some new drawing features will be added for themes only // (no for Paint manager). But the Paint manager will also be used // for compatibility. // // Initial version. Themes will be expanded in the feature. // Returns: // A CXTPCalendarTheme pointer to the associated theme object or NULL. // See Also: // CXTPCalendarView::GetTheme, GetPaintManager //----------------------------------------------------------------------- CXTPCalendarTheme* GetTheme() const; //----------------------------------------------------------------------- // Summary: // This member function sets (or disable) the new control drawing // theme. // Parameters: // pTheme - A CXTPCalendarTheme pointer to the theme object. // If pTheme is NULL - themes are disabled and the paint // manager is used. // Remarks: // Themes are used for drawing a calendar control window instead of // a Paint manager. // This is a new feature of Calendar control which will be further // developed. // Some new drawing features will be added for themes only // (no for Paint manager). But the Paint manager will also be used // for compatibility. // // Initial version. Themes will be expanded in the feature. // See Also: GetPaintManager //----------------------------------------------------------------------- void SetTheme(CXTPCalendarTheme* pTheme); ///////////////////////////////////////////////////////////////////////// // resources related //----------------------------------------------------------------------- // Summary: // Obtain a pointer to collection of Calendar Resources. // Remarks: // Use this method to retrieve a pointer to the Calendar Resources // collection of this Calendar control. // Returns: // CXTPCalendarResources pointer. // See Also: // CXTPCalendarResources overview //----------------------------------------------------------------------- CXTPCalendarResources* GetResources() const; //----------------------------------------------------------------------- // Summary: // This member function sets the new Resources collection for the control. // Parameters: // pResources - A pointer to the CXTPCalendarResources collection object. // pOptionsDataProvider - A pointer to the Data Provider object for // using on Calendar Options. // Remarks: // Call this member function to programmatically set the new // Resources collection for the control. //----------------------------------------------------------------------- void SetResources(CXTPCalendarResources* pResources, CXTPCalendarData* pOptionsDataProvider = NULL); ///////////////////////////////////////////////////////////////////////// // data provider related //----------------------------------------------------------------------- // Summary: // This member function sets the custom data provider for the control. // Parameters: // lpszConnectionString - A text Calendar connection string. // Remarks: // Call this member function to set the custom data provider // that is currently used by this calendar control. Note that // custom data provider must be a descendant of CXTPCalendarData. // See Also: // CXTPCalendarData, XTPCalendarDataProvider, GetDataProvider //----------------------------------------------------------------------- void SetDataProvider(LPCTSTR lpszConnectionString); //----------------------------------------------------------------------- // Summary: // This member function sets the custom data provider for the control. // Parameters: // pDataProvider - Pointer to the custom data provider object. // bCloseDataProviderWhenDestroy - BOOL value shows whether data // provider should be closed with the // control's destruction. // Remarks: // Call this member function to set the custom data provider // that is currently used by this calendar control. Note that // custom data provider must be a descendant of CXTPCalendarData. // See Also: // CXTPCalendarData, XTPCalendarDataProvider, GetDataProvider //----------------------------------------------------------------------- void SetDataProvider(CXTPCalendarData* pDataProvider, BOOL bCloseDataProviderWhenDestroy = TRUE); //----------------------------------------------------------------------- // Summary: // This member function sets the custom data provider for the control. // Parameters: // eDataProvider - Data provider type. // lpszConnectionString - A text Calendar connection string. // Remarks: // Call this member function to set the custom data provider // that is currently used by this calendar control. Note that // custom data provider must be a descendant of CXTPCalendarData. // See Also: // CXTPCalendarData, XTPCalendarDataProvider, GetDataProvider //----------------------------------------------------------------------- void SetDataProvider(XTPCalendarDataProvider eDataProvider, LPCTSTR lpszConnectionString = NULL); //----------------------------------------------------------------------- // Summary: // Returns common data provider if it was previously set. // Returns: // A pointer to the common data provider if it was previously set; // otherwise, returns NULL. //----------------------------------------------------------------------- CXTPCalendarData* GetDataProvider() const; ///////////////////////////////////////////////////////////////////////// // view related //----------------------------------------------------------------------- // Summary: // This member function obtains a pointer to the current calendar view. // Remarks: // Call this member function to obtain the calendar view object // currently used in this calendar control. // Returns: // A CXTPCalendarView pointer to the associated calendar view object. // See Also: // CXTPCalendarView overview, SetActiveView, // GetViewDay, GetWeekView, GetMonthView //----------------------------------------------------------------------- virtual CXTPCalendarView* GetActiveView() const; //----------------------------------------------------------------------- // Summary: // This member function obtains a pointer to the Day calendar view. // Remarks: // Call this member function to obtain Day calendar view object // regardless of its visibility. // Returns: // A CXTPCalendarView pointer to the associated calendar view object. // See Also: // CXTPCalendarView overview, GetActiveView, GetWeekView, GetMonthView //----------------------------------------------------------------------- CXTPCalendarDayView* GetDayView() const; //----------------------------------------------------------------------- // Summary: // This member function obtains a pointer to the Week calendar view. // Remarks: // Call this member function to obtain Week calendar view object // regardless of its visibility. // Returns: // A CXTPCalendarView pointer to the associated calendar view object. // See Also: // CXTPCalendarView overview, GetActiveView, GetDayView, GetMonthView //----------------------------------------------------------------------- CXTPCalendarWeekView* GetWeekView() const; //----------------------------------------------------------------------- // Summary: // This member function obtains a pointer to the Month calendar view. // Remarks: // Call this member function to obtain Month calendar view object // regardless of its visibility. // Returns: // A CXTPCalendarView pointer to the associated calendar view object. // See Also: // CXTPCalendarView overview, GetActiveView, GetWeekView, GetDayView //----------------------------------------------------------------------- CXTPCalendarMonthView* GetMonthView() const; //----------------------------------------------------------------------- // Summary: // This member function obtains a pointer to the TimeLine calendar view. // Remarks: // Call this member function to obtain TimeLine calendar view object // regardless of its visibility. // Returns: // A CXTPCalendarView pointer to the associated calendar view object. // See Also: // CXTPCalendarView overview, GetActiveView, GetWeekView, GetDayView, GetMonthView //------------------------------------------------------------------------------------ CXTPCalendarTimeLineView* GetTimeLineView() const; //----------------------------------------------------------------------- // Summary: // This member function sets a predefined calendar view for the control. // Parameters: // eView - Calendar view type. // Remarks: // Call this member function to set the predefined calendar view // that is currently used by this calendar control. // See Also: CXTPCalendarView overview, XTPCalendarViewType, GetAvtiveView //----------------------------------------------------------------------- virtual void SwitchActiveView(XTPCalendarViewType eView); // Implementation public: ///////////////////////////////////////////////////////////////////////// // drawing related //----------------------------------------------------------------------- // Summary: // Call this member to set right-to-left mode. // Parameters: // bRightToLeft - TRUE to set right-to-left reading-order properties. //----------------------------------------------------------------------- void SetLayoutRTL(BOOL bRightToLeft); //----------------------------------------------------------------------- // Summary: // Call this member to determine if right-to-left mode is active // Returns: // TRUE if right-to-left mode is enabled and FALSE otherwise //----------------------------------------------------------------------- BOOL IsLayoutRTL() const; //----------------------------------------------------------------------- // Summary: // Call this member to get current TimeLine mode. // Returns: // An integer representing one of the following values. // // xtpTSPID_Day = 1, // xtpTSPID_Week = 2, // xtpTSPID_Month = 3, // xtpTSPID_WorkWeek = 4, //----------------------------------------------------------------------- int GetTimeLineScale() const; //----------------------------------------------------------------------- // Summary: // This member function initiates the Calendar control's redrawing. // Parameters: // bForce : Set this parameter to TRUE if you'd like to force // control's redrawing even if update is locked. // Remarks: // Call this member function if you want to force the control's // redrawing. The control will be redrawn to reflect its latest state. // See Also: CXTPCalendarControl::CUpdateContext, AdjustLayout, AdjustScrollBar, // LockUpdate, UnlockUpdate. //----------------------------------------------------------------------- virtual void RedrawControl(BOOL bForce = FALSE); //----------------------------------------------------------------------- // Summary: // This member function adjusts the main control parts depending // on the current control's size. // Parameters: // pDC - Pointer to a valid device context. // rcView - A rectangle for calendar control. // See Also: // CXTPCalendarControl::CUpdateContext, AdjustScrollBar, RedrawControl //----------------------------------------------------------------------- virtual void AdjustLayout(); virtual void AdjustLayout(CDC* pDC, const CRect& rcView); //----------------------------------------------------------------------- // Summary: // This member function adjusts the scroll bar to reflect the current // control's state. // See Also: // CXTPCalendarControl::CUpdateContext, AdjustLayout, RedrawControl // Parameters: // nSBType : Specifies the scroll bar type to be adjusted. // This parameter can be either of the following: // * SB_HORZ - Horizontal scroll bar. // * SB_VERT - Vertical scroll bar. // ---------------------------------------------------------------------- virtual void AdjustScrollBar(int nSBType = -1); //----------------------------------------------------------------------- // Summary: // This member function switch calendar to timeline mode //----------------------------------------------------------------------- void OnCalendarTimeline(); private: //{{AFX_CODEJOCK_PRIVATE // Always updates the screen on exit block void BeginUpdate(); void EndUpdate(); // Update the screen on exit block only when something has changed void LockUpdate(); void UnlockUpdate(); // Adjusts layout on exit block void BeginAdjust(BOOL bWithScrollBar = FALSE); void EndAdjust(BOOL bWithScrollBar = FALSE); //}}AFX_CODEJOCK_PRIVATE public: ///////////////////////////////////////////////////////////////////////// // managing calendar settings //----------------------------------------------------------------------- // Summary: // This member function obtains the bitwise mask of the work week. // Returns: // An integer containing the bitwise day mask. // See Also: SetWorkWeekMask, XTPCalendarWeekDay //----------------------------------------------------------------------- int GetWorkWeekMask() const; //----------------------------------------------------------------------- // Summary: // This member function sets the bitwise mask for the work week. // Parameters: // nMask - An int that contains the new bitwise mask for the work week. // See Also: GetWorkWeekMask, XTPCalendarWeekDay //----------------------------------------------------------------------- void SetWorkWeekMask(const int nMask); //----------------------------------------------------------------------- // Summary: // This member function obtains the first day of the week. // Returns: // First day of the week represented by an integer from // range between 1 and 7, where 1 = Sunday, 2 = Monday, and so on. // See Also: SetFirstDayOfWeek, XTPCalendarWeekDay //----------------------------------------------------------------------- int GetFirstDayOfWeek() const; //----------------------------------------------------------------------- // Summary: // This member function give the first week of year days. // Returns: // An integer denoting the first week of year days, //----------------------------------------------------------------------- int GetFirstWeekOfYearDays() const; //----------------------------------------------------------------------- // Summary: // This member function sets the first day of the week. // Parameters: // nFirstDayOfWeek - An int that contains the new first day of the // week. An integer from range between 1 and 7, // where 1 = Sunday, 2 = Monday, and so on. // See Also: GetFirstDayOfWeek, XTPCalendarWeekDay //----------------------------------------------------------------------- void SetFirstDayOfWeek(const int nFirstDayOfWeek); //----------------------------------------------------------------------- // Summary: // Call this member function to set the first week of year days. // Parameter: // nFirstWeekOfYearDays - An integer denoting the first week of year days, //----------------------------------------------------------------------- void SetFirstWeekOfYearDays(const int nFirstWeekOfYearDays); //----------------------------------------------------------------------- // Summary: // This member function obtains the begin time of the working day. // Parameters: // dtTime - A reference to the COleDateTime value to store the result. // nHour - An int. A reference to the hour part of the result. // nMin - An int. A reference to the minutes part of the result. // nSec - An int. A reference to the seconds part of the result. // See Also: SetWorkDayStartTime, GetWorkDayEndTime, SetWorkDayEndTime //----------------------------------------------------------------------- void GetWorkDayStartTime(COleDateTime& dtTime) const; void GetWorkDayStartTime(int& nHour, int& nMin, int& nSec) const; // //----------------------------------------------------------------------- // Summary: // This member function obtains the end time of the working day. // Parameters: // dtTime - A reference to the COleDateTime value to store the result. // nHour - An int. A reference to the hour part of the result. // nMin - An int. A reference to the minutes part of the result. // nSec - An int. A reference to the seconds part of the result. // See Also: SetWorkDayEndTime, GetWorkDayStartTime, SetWorkDayStartTime //----------------------------------------------------------------------- void GetWorkDayEndTime(COleDateTime& dtTime) const; void GetWorkDayEndTime(int& nHour, int& nMin, int& nSec) const; // //----------------------------------------------------------------------- // Summary: // set format for Cell's Day Header in Month View // Parameters: // pcszCustomFormat - An string sd custom format. //----------------------------------------------------------------------- void SetLongDayHeaderFormat(LPCTSTR pcszCustomFormat); //----------------------------------------------------------------------- // Summary: // set format for Cell's Day Header in Month View // Parameters: // pcszCustomFormat - An string sd custom format. //----------------------------------------------------------------------- void SetSmallDayHeaderFormat(LPCTSTR pcszCustomFormat); //----------------------------------------------------------------------- // Summary: // This member function sets the begin time for the working day. // Parameters: // dtTime - A new begin time value. // See Also: GetWorkDayStartTime, GetWorkDayEndTime, SetWorkDayEndTime //----------------------------------------------------------------------- void SetWorkDayStartTime(const COleDateTime& dtTime); //----------------------------------------------------------------------- // Summary: // This member function sets the begin time for the working day. // Parameters: // nHour - An int. The hour part of the new time value. // nMin - An int. The minutes part of the new time value. // nSec - An int. The seconds part of the new time value. // See Also: GetWorkDayStartTime, GetWorkDayEndTime, SetWorkDayEndTime //----------------------------------------------------------------------- void SetWorkDayStartTime(int nHour, int nMin, int nSec); //----------------------------------------------------------------------- // Summary: // This member function sets an end time for the working day. // Parameters: // dtTime - A new end time value. // See Also: GetWorkDayEndTime, GetWorkDayStartTime, SetWorkDayStartTime //----------------------------------------------------------------------- void SetWorkDayEndTime(const COleDateTime& dtTime); //----------------------------------------------------------------------- // Summary: // This member function sets an end time for the working day. // Parameters: // nHour - An int. The hour part of the new time value. // nMin - An int. The minutes part of the new time value. // nSec - An int. The seconds part of the new time value. // See Also: GetWorkDayEndTime, GetWorkDayStartTime, SetWorkDayStartTime //----------------------------------------------------------------------- void SetWorkDayEndTime(int nHour, int nMin, int nSec); //----------------------------------------------------------------------- // Summary: // This member function adds custom time interval for an event to choose in the event properties dialog // Parameters: // nMin - An int. Custom reminder interval in minutes // szCustomMeaning - A string that describes this interval (e.g. hour, day). Default string is CXTPCalendarUtils::FormatTimeDuration(nMin) // bIgnoreDefaultValues - Tells the event properties dialog to ignore default reminder time intervals (1,5,10,15 minutes) //----------------------------------------------------------------------- void AddCustomTimeIntervalForReminder(int nMin, LPCTSTR szCustomMeaning = NULL, BOOL bIgnoreDefaultValues = FALSE); //----------------------------------------------------------------------- // Summary: // Call this method to determine if the AutoResetBusyFlag is set. // Returns: // Value of AutoResetBusyFlag. // See Also: MonthView_SetCompressWeekendDays //----------------------------------------------------------------------- BOOL DayView_IsAutoResetBusyFlag() const; //----------------------------------------------------------------------- // Summary: // Call this method to set the AutoResetBusyFlag. // Parameters: // bAutoResetBusyFlag - A BOOL. // TRUE to set the AutoResetBusyFlag. // FALSE otherwise. // See Also: MonthView_SetCompressWeekendDays //----------------------------------------------------------------------- void DayView_SetAutoResetBusyFlag(BOOL bAutoResetBusyFlag = TRUE); //----------------------------------------------------------------------- // Summary: // Call this method to determine whether weekend days are // drawn compressed in month view or not. // Returns: // TRUE if weekend days are drawn compressed. FALSE otherwise. // See Also: MonthView_SetCompressWeekendDays //----------------------------------------------------------------------- BOOL MonthView_IsCompressWeekendDays() const; //----------------------------------------------------------------------- // Summary: // Call this method to specify whether weekend days are // drawn compressed in the month view. // Parameters: // bCompress - A BOOL. TRUE if weekend days are drawn compressed. // FALSE otherwise. // See Also: MonthView_IsCompressWeekendDays //----------------------------------------------------------------------- void MonthView_SetCompressWeekendDays(BOOL bCompress = TRUE); //----------------------------------------------------------------------- // Summary: // Call this method to determine whether the end date is // shown for events in the month view. // Returns: // TRUE if the end date is shown. FALSE otherwise. // See Also: MonthView_SetShowEndDate //----------------------------------------------------------------------- BOOL MonthView_IsShowEndDate() const; //----------------------------------------------------------------------- // Summary: // Call this method to specify whether the end date is // shown in the month view. // Parameters: // bShowEnd - A BOOL. TRUE if the end date is shown in month view. // FALSE otherwise. // See Also: MonthView_IsShowEndDate //----------------------------------------------------------------------- void MonthView_SetShowEndDate(BOOL bShowEnd = TRUE); //----------------------------------------------------------------------- // Summary: // Call this method to determine if the time is // shown as a graphical clock for events in the month view. // Returns: // TRUE for time shown as graphical clock. FALSE otherwise. // See Also: MonthView_SetShowTimeAsClocks //----------------------------------------------------------------------- BOOL MonthView_IsShowTimeAsClocks() const; // -------------------------------------------------------------------------- // Summary: // Call this method to specify if the events start and end time is // shown as a graphical clock in the month view. // Parameters: // bShowClocks : A BOOL. TRUE if the time is shown as a graphical clock. // FALSE otherwise. // See Also: // MonthView_IsShowTimeAsClocks // -------------------------------------------------------------------------- void MonthView_SetShowTimeAsClocks(BOOL bShowClocks= TRUE); //----------------------------------------------------------------------- // Summary: // Call this method to determine if the end date is // shown for events in the week view. // Returns: // TRUE if the end date is shown. FALSE otherwise. // See Also: WeekView_SetShowEndDate //----------------------------------------------------------------------- BOOL WeekView_IsShowEndDate() const; //----------------------------------------------------------------------- // Summary: // Call this method to specify if the end date is // shown in week view. // Parameters: // bShowEnd - A BOOL. TRUE if the end date is shown in week view. // FALSE otherwise. // See Also: WeekView_IsShowEndDate //----------------------------------------------------------------------- void WeekView_SetShowEndDate(BOOL bShowEnd); //----------------------------------------------------------------------- // Summary: // Call this method to determine if the time is // shown as a graphical clock for events in the week view. // Returns: // TRUE for time shown as graphical clocks, FALSE otherwise. // See Also: WeekView_SetShowTimeAsClocks //----------------------------------------------------------------------- BOOL WeekView_IsShowTimeAsClocks() const; // ------------------------------------------------------------------------------- // Summary: // Call this method to specify if the events start and end time is // shown as a graphical clock in week view. // Parameters: // bShowClocks : A BOOL. TRUE for time to be shown as graphical clocks, FALSE // otherwise. // See Also: // WeekView_IsShowTimeAsClocks // ------------------------------------------------------------------------------- void WeekView_SetShowTimeAsClocks(BOOL bShowClocks); //----------------------------------------------------------------------- // Summary: // This member function sets the new control drawing PaintManager. // Parameters: // pPaintManager - A CXTPCalendarPaintManager pointer to the // new paint manager object. // Remarks: // Call this member function to set the paint manager object used // for drawing a calendar control window. // See Also: GetPaintManager //----------------------------------------------------------------------- void SetPaintManager(CXTPCalendarPaintManager* pPaintManager); //----------------------------------------------------------------------- // Summary: // This member function updates the mouse cursor in relation with // the control's state. // Returns: // A BOOL. TRUE if the mouse cursor was updated to one of the known modes, // FALSE if the mode is unknown and the cursor was set to default arrow. //----------------------------------------------------------------------- virtual BOOL UpdateMouseCursor(); //---- Time Management functions ---------------------------------------- //----------------------------------------------------------------------- // Summary: // This member function is used to determine if the provided date is "today" // The today date may be overriden with SetTodayDateOverride() call or with custom time provider // Returns: // A BOOL. TRUE if the provided date is "today" for this calendar control instance, FALSE otherwise //----------------------------------------------------------------------- virtual BOOL IsToday(const COleDateTime& dtDate) const; //----------------------------------------------------------------------- // Summary: // This member function is used to determine the "today" date // The today date may be overriden with SetTodayDateOverride() call or with custom time provider // Returns: // COleDateTime with "today" date for this calendar control instance //----------------------------------------------------------------------- COleDateTime GetTodayDate() const; //----------------------------------------------------------------------- // Summary: // This member function is used to override the "today" date. Calendar control will assume the date provided as "today" // The today date is used to draw highlight border for day views (mark them as today) // Parameters: // COleDateTime object with date which you want to highlight in calendar as "today" //----------------------------------------------------------------------- void SetTodayDateOverride(const COleDateTime& dtTodayOverride); //----------------------------------------------------------------------- // Summary: // This member function returns override for "today" date is it was set with SetTodayDateOverride() call. // If the GetState() member function of COleDateTime returns invalid flag for returned date, then no override was applied // Returns: // COleDateTime object with override today date //----------------------------------------------------------------------- COleDateTime GetTodayDateOverride() const; //----------------------------------------------------------------------- // Summary: // This member function resets override for "today" date to the current date. If no override is applied the calls to GetTodayDate() // and IsToday() will use the CXTPCalendarUtils::GetCurrentTime() to determine the current time on user machine //----------------------------------------------------------------------- void ResetTodayDateOverride(); public: //{{AFX_CODEJOCK_PRIVATE // for compatibility with previous versions // use xtp_wm_UserAction for the feature // //----------------------------------------------------------------------- // Summary: // This member function queues the calendar view while changing // to the day view for the specified day. // Parameters: // dtDate - A specified date to change to. // Remarks: // Call this member function for changing calendar view // to the day view for the specified day. // See Also: CXTPCalendarDayView overview, XTPCalendarViewType, // GetAvtiveView, SetAvtiveView //----------------------------------------------------------------------- virtual void QueueDayViewSwitch(DATE dtDate); //}}AFX_CODEJOCK_PRIVATE //----------------------------------------------------------------------- // Summary: // Register the window class if it has not already been registered. // Parameters: // hInstance - Instance of resource where control is located // Returns: // TRUE if the window class was successfully registered. FALSE otherwise. //----------------------------------------------------------------------- virtual BOOL RegisterWindowClass(HINSTANCE hInstance = NULL); protected: //----------------------------------------------------------------------- // Summary: // This member function performs all of the drawing logic of the // calendar control window. // Parameters: // pDC - Pointer to a valid device context. // See Also: OnPaint //----------------------------------------------------------------------- virtual void OnDraw(CDC* pDC); //----------------------------------------------------------------------- // Summary: // This member function sets the custom calendar view for the control. // Parameters: // pView - Pointer to the custom calendar view object. // Remarks: // Call this member function to set the custom calendar view // currently used by the calendar control. Note that // custom calendar view must be descendant of CXTPCalendarView. // See Also: CXTPCalendarView overview, GetAvtiveView //----------------------------------------------------------------------- virtual void SetActiveView(CXTPCalendarView* pView); //----------------------------------------------------------------------- // Summary: // This member function creates a timer event. // Parameters: // uTimeOut_ms - Duration of timer in milliseconds. // Returns: // The identifier of the timer. //----------------------------------------------------------------------- virtual UINT SetTimer(UINT uTimeOut_ms); //----------------------------------------------------------------------- // Summary: // This member function is called by the framework before the // view is destroyed. //----------------------------------------------------------------------- virtual void OnBeforeDestroy(); //----------------------------------------------------------------------- // Summary: // This member function adjusts the scroll bar to reflect the current // control's state. // See Also: // CXTPCalendarControl::CUpdateContext, AdjustLayout, RedrawControl // Parameters: // nSBType : Specifies the scroll bar type to be adjusted. // This parameter can be either of the following: // * SB_HORZ - Horizontal scroll bar. // * SB_VERT - Vertical scroll bar. // ---------------------------------------------------------------------- virtual void AdjustScrollBarEx(int nSBType); //----------------------------------------------------------------------- // Summary: // This member function internally sets the custom data provider // for the control. // Parameters: // pDataProvider - Pointer to the custom data provider object. // bCloseDataProviderWhenDestroy - BOOL value shows whether data // provider should be closed with the // control's destruction. // Remarks: // This method is used by SetDataProvider(). // See Also: // SetDataProvider //----------------------------------------------------------------------- virtual void _SetDataProvider(CXTPCalendarData* pDataProvider, BOOL bCloseDataProviderWhenDestroy = TRUE); public: //----------------------------------------------------------------------- // Summary: // Obtain a pointer to the notification connection object. // Remarks: // Used to subscribe (Advice) for notification events from the // control. // Returns: // Connection object pointer. // See Also: CXTPNotifyConnection overview, // IXTPNotificationSink overview //----------------------------------------------------------------------- CXTPNotifyConnection* GetConnection() const; //----------------------------------------------------------------------- // Summary: // This member function sends a notification to all control's // event subscribers. // Parameters: // EventCode - A specific code identifying the event. // wParam - First custom parameter. Depends on the event type. // See specific event description for details. // lParam - Second custom parameter. Depends on the event type. // See specific event description for details. // Remarks: // This member function is called internally from inside the // control when a notification is sent to all notification // listeners. // SendNotification depends on EnableSendNotifications flag. // SendNotificationAlways - Performs send in any case. // See Also: XTP_NOTIFY_CODE, GetConnection //----------------------------------------------------------------------- virtual void SendNotification(XTP_NOTIFY_CODE EventCode, WPARAM wParam , LPARAM lParam); //----------------------------------------------------------------------- // Summary: // This member function always sends a notification to all control's // event subscribers. // Parameters: // EventCode - A specific code identifying the event. // wParam - First custom parameter. Depends on the event type. // See specific event description for details. // lParam - Second custom parameter. Depends on the event type. // See specific event description for details. // Remarks: // This member function is called internally from inside the // control when a notification is sent to all notification // listeners. // SendNotification depends on EnableSendNotifications flag. // SendNotificationAlways - Performs send in any case. // See Also: XTP_NOTIFY_CODE, GetConnection //----------------------------------------------------------------------- virtual void SendNotificationAlways(XTP_NOTIFY_CODE EventCode, WPARAM wParam , LPARAM lParam); // //----------------------------------------------------------------------- // Summary: // This member function enables or disables sending a notification // to all control's event subscribers. // Parameters: // bEnable - TRUE to allow sending notifications, // FALSE to disallow. // See Also: // SendNotification //----------------------------------------------------------------------- virtual void EnableSendNotifications(BOOL bEnable = TRUE); //----------------------------------------------------------------------- // Summary: // Obtain an associated Reminders Manager object. // Remarks: // Use this method to retrieve a pointer to the Reminders Manager // object associated to this Calendar control.. // Returns: // Calendar Reminders Manager. // See Also: // CXTPCalendarRemindersManager overview //----------------------------------------------------------------------- virtual CXTPCalendarRemindersManager* GetRemindersManager() const; public: //----------------------------------------------------------------------- // Summary: // This member function is used to process the command with // specified ID. // Parameters: // uCommandID - Command ID. Specifies which command to process. // See Also: OnUndo, OnCut, OnCopy, OnPaste //----------------------------------------------------------------------- virtual void OnEditCommand(UINT uCommandID); //----------------------------------------------------------------------- // Summary: // This member function is used to process undo commands. // See Also: OnCommand, OnCut, OnCopy, OnPaste //----------------------------------------------------------------------- afx_msg virtual void OnUndo(); //----------------------------------------------------------------------- // Summary: // This member function is used to process the "Cut" command. // See Also: OnCommand, OnUndo, OnCopy, OnPaste //----------------------------------------------------------------------- afx_msg virtual void OnCut(); //----------------------------------------------------------------------- // Summary: // This member function is used to process the "Copy" command. // See Also: OnCommand, OnUndo, OnCut, OnPaste //----------------------------------------------------------------------- afx_msg virtual void OnCopy(); //----------------------------------------------------------------------- // Summary: // This member function is used to process the "Paste" command. // See Also: OnCommand, OnUndo, OnCut, OnCopy //----------------------------------------------------------------------- afx_msg virtual void OnPaste(); //----------------------------------------------------------------------- // Summary: // This member function is used to update the user interface // object represented by pCmdUI. // Parameters: // pCmdUI - pointer to the CCmdUI object. // See Also: OnUpdateUndo, OnUpdateCut, OnUpdateCopy, OnUpdatePaste //----------------------------------------------------------------------- afx_msg virtual void OnUpdateCmdUI(CCmdUI* pCmdUI); //----------------------------------------------------------------------- // Summary: // This member function is used to update the user interface // object represented by pCmdUI for the "Undo" command only. // Parameters: // pCmdUI - pointer to the CCmdUI object. // See Also: OnUpdateUndo, OnUpdateCut, OnUpdateCopy, OnUpdatePaste //----------------------------------------------------------------------- afx_msg virtual void OnUpdateUndo(CCmdUI* pCmdUI); //----------------------------------------------------------------------- // Summary: // This member function is used to update the user interface object // represented by pCmdUI for the "Cut" command only. // Parameters: // pCmdUI - pointer to the CCmdUI object. // See Also: OnUpdateUndo, OnUpdateUndo, OnUpdateCopy, OnUpdatePaste //----------------------------------------------------------------------- afx_msg virtual void OnUpdateCut(CCmdUI* pCmdUI); //----------------------------------------------------------------------- // Summary: // This member function is used to update the user interface object // represented by pCmdUI for the "Copy" command only. // Parameters: // pCmdUI - pointer to the CCmdUI object. // See Also: OnUpdateUndo, OnUpdateUndo, OnUpdateCut, OnUpdatePaste //----------------------------------------------------------------------- afx_msg virtual void OnUpdateCopy(CCmdUI* pCmdUI); //----------------------------------------------------------------------- // Summary: // This member function is used to update the user interface // object represented by pCmdUI for the "Paste" command only. // Parameters: // pCmdUI - pointer to the CCmdUI object. // See Also: OnUpdateUndo, OnUpdateUndo, OnUpdateCut, OnUpdateCopy //----------------------------------------------------------------------- afx_msg virtual void OnUpdatePaste(CCmdUI* pCmdUI); //----------------------------------------------------------------------- // Summary: // This member function is called by WindowProc, or is called during // message reflection. // Parameters: // message - Specifies the message to be sent. // wParam - Specifies additional message-dependent information. // lParam - Specifies additional message-dependent information. // pResult - The return value of WindowProc. Depends on the message; may be NULL. // Returns: // TRUE if the message is handled properly, FALSE else. //----------------------------------------------------------------------- afx_msg virtual BOOL OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult); //----------------------------------------------------------------------- // Summary: // This member function is used to catch messages before child // windows (like Subject editor). // Remarks: // The child windows must call OnWndMsg_Children() for the messages // which are interesting for other calendar control parts (main control // window, view, day view, event view). The OnWndMsg() method may be // overridden for this purposes. This mechanism is used instead of // PreTranslateMessage() for ActiveX builds. // Parameters: // message - Specifies the message to be sent. // wParam - Specifies additional message-dependent information. // lParam - Specifies additional message-dependent information. // pResult - The return value of WindowProc. Depends on the message; // may be NULL. // Returns: // TRUE if message was handled; otherwise FALSE. // See Also: CXTPCalendarViewEventSubjectEditor, OnWndMsg(). //----------------------------------------------------------------------- virtual BOOL OnWndMsg_Children(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult); //----------------------------------------------------------------------- // Summary: // This member function deletes specified event from the calendar. // Parameters: // pViewEvent - View of the event to delete. // Remarks: // Call member function if you want to delete an event basing // on its View object. // Returns: // TRUE if event was deleted successfully; otherwise FALSE. // See Also: //----------------------------------------------------------------------- virtual BOOL DoDeleteEvent(CXTPCalendarViewEvent* pViewEvent); //----------------------------------------------------------------------- // Summary: // This member function deletes selected events from the calendar. // Parameters: // pViewEvent - View of the last event to delete. // Remarks: // Call member function if you want to delete all selected events. // Returns: // TRUE if events were deleted successfully; otherwise FALSE. // See Also: //----------------------------------------------------------------------- virtual BOOL DoDeleteSelectedEvents(CXTPCalendarViewEvent* pViewEvent); //----------------------------------------------------------------------- // Summary: // Call this member function to get direct access to calendar options // data. // Remarks: // This member function wraps CXTPCalendarData::GetCalendarOptions() // method. If you read or change returned structure members // no additional checks are made and no notifications are sent. // The preferred way is to use CXTPCalendarControl options methods // like GetWorkWeekMask(), SetWorkWeekMask(), GetFirstDayOfWeek(), // SetFirstDayOfWeek(), ... etc. // Returns: // A pointer to calendar options data class CXTPCalendarOptions. // See Also: // CXTPCalendarOptions, CXTPCalendarData::GetCalendarOptions(). //----------------------------------------------------------------------- CXTPCalendarOptions* GetCalendarOptions() const; // ----------------------------- // Summary: // This member function is making attempt to select event by passed event ID // Parameters: // dEventID : DWORD of event id // bSelect : BOOL - EnsureVisible && Select if bSelect = TRUE, EnsureVisible only if bSelect = FALSE // Returns: // TRUE is Success // ----------------------------- BOOL SelectEventById(DWORD dEventID, BOOL bSelect = TRUE); // ----------------------------- // Summary: // This member function is making attempt to select view event by passed Schedule ID and event ID // Parameters: // nScheduleID: Schedule ID - used in case with multiple links // dEventID : DWORD of event id // bSelect : BOOL - EnsureVisible && Select if bSelect = TRUE, EnsureVisible only if bSelect = FALSE // Returns: // TRUE is Success // ----------------------------- BOOL SelectViewEventByIdAndGroup(int nScheduleID, DWORD dEventID, BOOL bSelect = TRUE); protected: //{{AFX_CODEJOCK_PRIVATE DECLARE_MESSAGE_MAP() //## Generated message map functions //{{AFX_MSG(CXTPCalendarControl) afx_msg void OnPaint(); afx_msg LRESULT OnPrintClient(WPARAM wParam, LPARAM /*lParam*/); afx_msg BOOL OnEraseBkgnd(CDC* pDC); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonDblClk(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnContextMenu(CWnd* pWnd, CPoint pos); afx_msg void OnMouseMove(UINT nFlags, CPoint point); afx_msg BOOL OnMouseWheel(UINT nFlags, short zDelta, CPoint pt); afx_msg void OnMouseLeave(); afx_msg void OnChar(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnSysKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags); afx_msg void OnCaptureChanged(CWnd* pWnd); afx_msg void OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg void OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar); afx_msg BOOL OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message); afx_msg void OnTimer(UINT_PTR uTimerID); afx_msg void OnDestroy(); afx_msg UINT OnGetDlgCode(); afx_msg void OnSysColorChange(); afx_msg void OnTimeChange(); afx_msg LRESULT OnTimeZoneChanged(WPARAM wParam, LPARAM lParam); afx_msg LRESULT OnSwitchView(WPARAM nDate, LPARAM); // for compatibility with previous versions afx_msg LRESULT OnUserAction(WPARAM dwParam1, LPARAM dwParam2); afx_msg void OnSetFocus(CWnd* pOldWnd); afx_msg void OnKillFocus(CWnd* pNewWnd); afx_msg void OnRButtonDown(UINT nFlags, CPoint point); afx_msg void OnRButtonUp(UINT nFlags, CPoint point); afx_msg void OnEnable(BOOL bEnable); //}}AFX_MSG //}}AFX_CODEJOCK_PRIVATE //{{AFX_CODEJOCK_PRIVATE CXTPNotifySink* m_pSink; virtual void OnEvent_FromDataProvider(XTP_NOTIFY_CODE Event, WPARAM wParam , LPARAM lParam); virtual void OnEvent_Reminders(XTP_NOTIFY_CODE Event, WPARAM wParam , LPARAM lParam); virtual void OnFinalRelease(); virtual CScrollBar* GetScrollBarCtrl(int nBar) const; virtual void PreSubclassWindow(); virtual void _InitCalendarView(); //}}AFX_CODEJOCK_PRIVATE //----------------------------------------------------------------------- // Summary: // This member function is called by the calendar control when calendar // option was changed. // Remarks: // It is called from the set option methods like SetWorkWeekMask(), // SetFirstDayOfWeek(), SetWorkDayStartTime(), SetWorkDayEndTime(), // DayView_SetAutoResetBusyFlag(), ... etc. // See CXTPCalendarOptions for details. // Default implementation sends XTP_NC_CALENDAROPTIONSWASCHANGED // notification. // Parameters: // nOptionRelation - Changed option relation (or kind). // Value -1 specify global or common option. // Value from XTPCalendarViewType enum specify // which kind of view changed option is related. // Returns: // TRUE if events were deleted successfully; otherwise FALSE. // See Also: // CXTPCalendarOptions, CXTPCalendarData::GetCalendarOptions(), // XTP_NC_CALENDAROPTIONSWASCHANGED, //----------------------------------------------------------------------- virtual void OnOptionsChanged(int nOptionRelation); protected: //{{AFX_CODEJOCK_PRIVATE virtual void AdviseToDataProvider(); virtual void _AdviseToReminders_StartMonitoring(); //}}AFX_CODEJOCK_PRIVATE public: //----------------------------------------------------------------------- // Summary: // This member function is used to show a ToolTip rectangle. // Parameters: // strText - A text to be shown inside a tooltip rectangle. // rcToolTip - A rect for a tooltip window. // pFont - Font for to draw tooltip text. // bAdvanced - TRUE for advanced processing (Office2007 theme "add new appt") //----------------------------------------------------------------------- virtual void ShowToolTip(const CString& strText, const CRect rcToolTip, CFont* pFont, BOOL bAdvanced = FALSE); //----------------------------------------------------------------------- // Summary: // This member function is used to hide the ToolTip rectangle. // See Also: // IsToolTipVisible //----------------------------------------------------------------------- virtual void HideToolTip(); //----------------------------------------------------------------------- // Summary: // This member function is the ToolTip rectangle visible on the screen. // Returns: // TRUE if ToolTip rectangle visible, FALSE otherwise. // See Also: // HideToolTip //----------------------------------------------------------------------- virtual BOOL IsToolTipVisible() const; //----------------------------------------------------------------------- // Summary: // This member function returns TRUE if the ToolTips enabled, // FALSE otherwise. // Returns: // TRUE if the ToolTips enabled, FALSE otherwise. // See Also: // EnableToolTips //----------------------------------------------------------------------- BOOL IsToolTipsEnabled() const; // --------------------------------------------------------------- // Summary: // This member function is used to enable or disable ToolTips // for the control. // See Also: // IsToolTipsEnabled // Parameters: // bEnable : A BOOL. Specifies whether ToolTips should be // enabled (TRUE) or disabled (FALSE). // --------------------------------------------------------------- void EnableToolTips(BOOL bEnable = TRUE); //----------------------------------------------------------------------- // Summary: // This member function returns TRUE if the Reminders functionality // is enabled for this Calendar control and FALSE otherwise. // Returns: // TRUE if reminders are enabled, FALSE otherwise. // See Also: // EnableReminders() //----------------------------------------------------------------------- BOOL IsRemindersEnabled() const; // --------------------------------------------------------------- // Summary: // This member function is used to enable or disable Reminders // functionality for the control. // Parameters: // bEnable : A BOOL. Specifies whether Reminders functionality // should be enabled (TRUE) or disabled (FALSE). // See Also: // IsRemindersEnabled // --------------------------------------------------------------- void EnableReminders(BOOL bEnable = TRUE); //----------------------------------------------------------------------- // Summary: // This member function returns set of flags which define calendar items // to send XTP_NC_CALENDAR_GETITEMTEXT notification. // If Calendar theme is set - return value is got from the theme object, // otherwise it is got from the paint manager object. // Returns: // Set of flags from enums XTPCalendarGetItemText, XTPCalendarGetItemTextEx. // See Also: // XTPCalendarGetItemText, XTPCalendarGetItemTextEx, // CXTPCalendarControlPaintManager::GetAskItemTextFlags, // CXTPCalendarControlPaintManager::SetAskItemTextFlags, // CXTPCalendarTheme::GetAskItemTextFlags, // CXTPCalendarTheme::SetAskItemTextFlags, XTP_NC_CALENDAR_GETITEMTEXT //----------------------------------------------------------------------- virtual DWORD GetAskItemTextFlags() const; //----------------------------------------------------------------------- // Summary: // This member function returns TRUE if Markup functionality // is enabled for this Calendar control and FALSE otherwise. // In enabled state is automatically process static Markup text for // events, and enables processing of dynamic Markup text customization // using XTP_NC_CALENDAR_GETITEMTEXT notification. // Returns: // TRUE if Markup feature is enabled, FALSE otherwise. // See Also: // CXTPCalendarViewEvent::GetMarkupText() //----------------------------------------------------------------------- BOOL IsMarkupEnabled() const; //----------------------------------------------------------------------- // Summary: // This member function is used to enable or disable Markup // functionality for the control. Enabling this functionality allows // a control to process customized special property xtpMarkupTemplate // which could be set for each event. If this property exists and // contains text with Markup information, it will be drawn inside the // Event rectangle (instead of Subject and Body). // Parameters: // bEnableMarkup : Specifies whether Markup functionality // should be enabled (TRUE) or disabled (FALSE). //----------------------------------------------------------------------- void EnableMarkup(BOOL bEnableMarkup = TRUE); //----------------------------------------------------------------------- // Summary: // Returns markup context // Returns: // A pointer to the markup context object. //----------------------------------------------------------------------- CXTPMarkupContext* GetMarkupContext() const; //----------------------------------------------------------------------- // Summary: // This member function Refresh Caption Bar after some layout modifications //----------------------------------------------------------------------- void RefreshCaptionBar(); private: //{{AFX_CODEJOCK_PRIVATE BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); //}}AFX_CODEJOCK_PRIVATE public: //======================================================================= // Summary: // Class CUpdateContext updates context and redraws control parts // depending on input parameters. // See Also: XTPCalendarUpdateOptions, // AdjustLayout, AdjustScrollBar, RedrawControl //======================================================================= class _XTP_EXT_CLASS CUpdateContext { public: //------------------------------------------------------------------- // Summary: // Constructs a CUpdateContext object. // Parameters: // pControl - Pointer to the CXTPCalendarControl to adjust. // nOptions - A bitwise combination of the adjusting // parameters. // Remarks: // When constructing a CUpdateContext object, specify // if the control's layout needs adjustment and/or // redrawing. // See Also: XTPCalendarUpdateOptions //------------------------------------------------------------------- CUpdateContext(CXTPCalendarControl* pControl, int nOptions = xtpCalendarUpdateLayout | xtpCalendarUpdateRedraw) : m_pControl(pControl) { // WARNING. (no error) // There is no need to use xtpCalendarUpdateRedraw and xtpCalendarUpdateRedrawIfNeed together ASSERT(!((nOptions & xtpCalendarUpdateRedraw) && (nOptions & xtpCalendarUpdateRedrawIfNeed))); m_nOptions = nOptions; if (!m_pControl) { ASSERT(FALSE); return; } if (m_nOptions & (xtpCalendarUpdateLayout | xtpCalendarUpdateScrollBar)) m_pControl->BeginAdjust(nOptions & xtpCalendarUpdateScrollBar); if (m_nOptions & xtpCalendarUpdateRedraw) m_pControl->BeginUpdate(); if (m_nOptions & xtpCalendarUpdateRedrawIfNeed) m_pControl->LockUpdate(); } //------------------------------------------------------------------- // Summary: // Destroys a CUpdateContext object and calls all the required // Calendar Control adjusting and redrawing functions. // See Also: XTPCalendarUpdateOptions //------------------------------------------------------------------- ~CUpdateContext() { if (!m_pControl) { return; } if (m_nOptions & (xtpCalendarUpdateLayout | xtpCalendarUpdateScrollBar)) m_pControl->EndAdjust(m_nOptions & xtpCalendarUpdateScrollBar); if (m_nOptions & xtpCalendarUpdateRedraw) m_pControl->EndUpdate(); if (m_nOptions & xtpCalendarUpdateRedrawIfNeed) m_pControl->UnlockUpdate(); } private: CXTPCalendarControl* m_pControl; int m_nOptions; }; //======================================================================= // Summary: // Class CViewChangedContext used to avoid multiple sending of // XTP_NC_CALENDARVIEWWASCHANGED notification for one action. //======================================================================= class CViewChangedContext { public: //------------------------------------------------------------------- // Summary: // Constructs a CViewChangedContext object. // Parameters: // pView - Pointer to parent CXTPCalendarView object. // pControl - Pointer to parent CXTPCalendarControl object. // eType - Value from enum XTPCalendarViewChangedUpdateOptions. // See Also: XTP_NC_CALENDARVIEWWASCHANGED //------------------------------------------------------------------- CViewChangedContext(CXTPCalendarView* pView, int eType = xtpCalendarViewChangedSend); CViewChangedContext(CXTPCalendarControl* pControl, int eType = xtpCalendarViewChangedSend); // //------------------------------------------------------------------- // Summary: // Destroys a CViewChangedContext object and send notification // if this is last locker object. //------------------------------------------------------------------- virtual ~CViewChangedContext(); private: void Init(CXTPCalendarControl* pControl, int eType); CXTPCalendarControl* m_pControl; int m_eType; }; //{{AFX_CODEJOCK_PRIVATE friend class CUpdateContext; friend class CViewChangedContext; //}}AFX_CODEJOCK_PRIVATE protected: //======================================================================= // Summary: // Class CViewChanged_ContextData is used as locker context for // CViewChangedContext. //======================================================================= class CViewChanged_ContextData { public: //------------------------------------------------------------------- // Summary: // Default object constructor. //------------------------------------------------------------------- CViewChanged_ContextData(); int m_nLockCount; // View change notification lock counter. BOOL m_bRequest; // View change send notification request. }; CViewChanged_ContextData m_cntViewChanged; // Locker context for CViewChangedContext. int m_nRowsPerWheel; // Amount of rows to scroll when using the mouse wheel. CString m_strUndoUIText; // Text label for the Undo UI command. CString m_strRedoUIText; // Text label for the Redo UI command. BOOL m_bUpdateWhenEventChangedNotify; // Whether to update control when notification comes about an event change. CXTPCalendarRemindersManager* m_pRemindersManager; // Stores reminders manager object. CXTPMarkupContext* m_pMarkupContext; //The markup context. private: //{{AFX_CODEJOCK_PRIVATE BOOL m_bChanged; int m_nLockUpdateCount; int m_nLockAdjustCount; BOOL m_bAdjustScrollBar; CXTPCalendarView* m_pActiveView; CXTPCalendarDayView* m_pDayView; CXTPCalendarMonthView* m_pMonthView; CXTPCalendarWeekView* m_pWeekView; CXTPCalendarTimeLineView* m_pTimeLineView; CXTPCalendarResourcesNf* m_pResourcesNf; // Resources array CXTPCalendarTheme* m_pTheme; CXTPCalendarPaintManager* m_pPaintManager; CXTPNotifyConnection* m_pConnection; CXTPCalendarOptions* m_pOptions; // This member stores user's calendar view options. CBitmap m_bmpCache; // Current view cached picture CXTPCalendarTip* m_pWndTip; UINT m_uNextTimerID; BOOL m_bEnableToolTips; BOOL m_bEnableSendNotifications; UINT m_uPopulateRequest_TimerID; UINT m_uRedrawRequest_TimerID; XTP_CONNECTION_ID m_cnidOnReminders; COleDateTimeSpan m_spRemindersUpdatePeriod; LCID m_lcidActiveLocale; int m_nFirstWeekOfYearDays; // This member shows the first Week Of Year Days. COleDateTime m_dtTodayOverride; //}}AFX_CODEJOCK_PRIVATE public: //------------------------------------------------------------------- // Summary: // This member function is used to get state of Read-only mode // Returns: // TRUE if current mode is Read-only. //------------------------------------------------------------------- BOOL IsReadonlyMode() const; XTPCalendarMouseMode m_mouseMode; // Current mouse operation mode. BOOL m_bDeleteOnFinalRelease; // If TRUE - Delete self OnFinalRelease() call. BOOL m_bDisableRedraw; // If TRUE - control window is not redraw, it is draw last window content (draw cached bitmap). FALSE by default. BOOL m_bTimelineMode; // flag to separate timeline (if TRUE) and other calendar modes XTPCalendarViewType m_eViewType; // current view type int m_nTimelineScale; // current timeline scale type int m_nCaptionHeight; // height param - can be used for custom layout adjustment BOOL m_bPreventAutoAllDayMode; // Flag to prevent dragging event into AllDay zone BOOL m_bMultiColorScheduleMode; // Flag to show Schedules titles in different colors BOOL m_bMultiColumnWeekMode; // Flag to select Outlook2007 and Outlook2003 behavior BOOL m_bHideCaptionBar; // Flag to Hide Caption Bar when TimeLine mode used BOOL m_bReadOnlyMode; // View- and Print-only mode to use Calendar BOOL m_bFullDateMode; // Useful for Multi-schedules case flag to use DayHeader special format BOOL m_bTooltipUnderMouse; // 2-way tooltip positioning - TRUE - under mouse cursor, FALSE - on the top of mouse cursor BOOL m_bShowLinks; //flag to show or hide 'virtual' view events BOOL m_bHideLinkContainer; //flag to hide or show 'virtual' view events container column BOOL m_bPromptToDeleteRecurrentEvent; //flag to use Ocurrence or Master case selector (default = TRUE) BOOL m_bDeleteOcurrenceEventIfNoPrompt; //True to delete Ocurrence event, False - delete Master (default = TRUE) CString m_OwnerUser; // string as current user name place holder CString m_sCustomFormat4Tooltip; // Free-styled tooltip tag-based way to fill tooltip string used tags <BODY>,<LOC>,<SUBJ>,<TIME> in any combination with fillers CString m_sCustomTitle; //used for unique title - e.g. for PrintJob name BOOL m_bForcePagination; //flag to Force Pagination during PrintPreview BOOL m_bShowTooltipForNotFocused; //flag to Show Tooltip For Not Focused Control BOOL m_bShowTooltipForAllDayEvents; //flag to Show Tooltip For All Day Events BOOL m_bSwitchToDayViewIfPickedSingleDay; //flag to switch to DatView on DatePicker one day selection (if TRUE) or keep previous view (FALSE) BOOL m_bMultipleSchedulesMode; //flag to use MutilpleSchedulesModel (one event - many view events case) BOOL m_bMultipleSchedulesNoSelfLinks; //flag to use MutilpleSchedulesModel (one event - many view events case - allow to eliminate selflinks) // custom time intervals for reminder CMap m_mapCustomReminderValues; BOOL m_bIgnoreDefaultReminderValues; //----------------------------------------------------------------------- // Summary: // Call this method to create a data provider from // a specified Calendar connection string. // Parameters: // lpszConnectionString - A text Calendar connection string. // Remarks: // This is a helper method which creates calendar's data provider of // the specified type with settings taken from the connection string. // Returns: // Pointer to the created Calendar Data Provider object. //----------------------------------------------------------------------- static CXTPCalendarData* AFX_CDECL CreateDataProvider(LPCTSTR lpszConnectionString); //----------------------------------------------------------------------- // Summary: // Call this method to create a data provider of the // specified type. // Parameters: // eDataProvider - A member of XTPCalendarDataProvider enumeration, // which specifies a type of the Data Provider to create. // Remarks: // This is a helper method which creates calendar's data provider of // the specified type. // Returns: // Pointer to the created Calendar Data Provider object. //----------------------------------------------------------------------- static CXTPCalendarData* AFX_CDECL CreateDataProvider(XTPCalendarDataProvider eDataProvider); //----------------------------------------------------------------------- // Summary: // Call this method to retrieve a type of the data provider from // its connection string. // Parameters: // lpszConnectionString - A text Calendar connection string. // eDPDefault - Default data provider type to be returned if // it can't be determined from the string. // Remarks: // This is a helper method which parses a connection string and // identifies a type of the data provider which is specified there. // Returns: // One of the values from XTPCalendarDataProvider enumeration. // See Also: // DataSourceFromConStr(), CreateDataProvider() //----------------------------------------------------------------------- static XTPCalendarDataProvider AFX_CDECL DataProviderTypeFromConStr( LPCTSTR lpszConnectionString, XTPCalendarDataProvider eDPDefault = xtpCalendarDataProviderUnknown); //----------------------------------------------------------------------- // Summary: // Call this method to retrieve a data source connection string from // a regular Calendar connection string. // Parameters: // lpszConnectionString - A text Calendar connection string. // Remarks: // This is a helper method which parses a connection string and // identifies a data source connection string there. // Returns: // Identified data source connection string. // See Also: // DataProviderTypeFromConStr(), CreateDataProvider() //----------------------------------------------------------------------- static CString AFX_CDECL DataSourceFromConStr(LPCTSTR lpszConnectionString); }; ///////////////////////////////////////////////////////////////////////////// AFX_INLINE BOOL CXTPCalendarControl::Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext) { return CWnd::Create(lpszClassName, lpszWindowName, dwStyle, rect, pParentWnd, nID, pContext); } AFX_INLINE CXTPCalendarPaintManager* CXTPCalendarControl::GetPaintManager() const { ASSERT(this); return this ? m_pPaintManager : NULL; } AFX_INLINE CXTPCalendarTheme* CXTPCalendarControl::GetTheme() const { ASSERT(this); return this ? m_pTheme : NULL; } AFX_INLINE CXTPNotifyConnection* CXTPCalendarControl::GetConnection() const { ASSERT(this); return this ? m_pConnection : NULL; } AFX_INLINE CXTPCalendarRemindersManager* CXTPCalendarControl::GetRemindersManager() const { ASSERT(this); return this ? m_pRemindersManager : NULL; } AFX_INLINE BOOL CXTPCalendarControl::IsToolTipsEnabled() const { return m_bEnableToolTips; } AFX_INLINE void CXTPCalendarControl::EnableToolTips(BOOL bEnable) { if (!bEnable && IsToolTipVisible()) { HideToolTip(); } m_bEnableToolTips = bEnable; } AFX_INLINE void CXTPCalendarControl::EnableSendNotifications(BOOL bEnable) { m_bEnableSendNotifications = bEnable; } AFX_INLINE BOOL CXTPCalendarControl::IsMarkupEnabled() const { return m_pMarkupContext != NULL; } AFX_INLINE CXTPMarkupContext* CXTPCalendarControl::GetMarkupContext() const { return m_pMarkupContext; } AFX_INLINE CXTPCalendarView* CXTPCalendarControl::GetActiveView() const { return m_pActiveView; } AFX_INLINE CXTPCalendarDayView* CXTPCalendarControl::GetDayView() const { return m_pDayView; } AFX_INLINE CXTPCalendarWeekView* CXTPCalendarControl::GetWeekView() const { return m_pWeekView; } AFX_INLINE CXTPCalendarMonthView* CXTPCalendarControl::GetMonthView() const { return m_pMonthView; } AFX_INLINE CXTPCalendarTimeLineView* CXTPCalendarControl::GetTimeLineView() const { return m_pTimeLineView; } AFX_INLINE CXTPCalendarOptions* CXTPCalendarControl::GetCalendarOptions() const { return m_pOptions; } #endif // !defined(_XTPCALENDARCONTROL_H__)