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.
1197 lines
48 KiB
C
1197 lines
48 KiB
C
2 years ago
|
// XTPCalendarData.h: interface for the CXTPCalendarData 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(_XTPCALENDARDATA_H__)
|
||
|
#define _XTPCALENDARDATA_H__
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
#if _MSC_VER > 1000
|
||
|
#pragma once
|
||
|
#endif // _MSC_VER > 1000
|
||
|
|
||
|
////////////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
class CXTPCalendarRecurrencePattern;
|
||
|
class CXTPCalendarEventLabels;
|
||
|
class CXTPCalendarSchedules;
|
||
|
class CXTPNotifyConnection;
|
||
|
class CXTPCalendarOptions;
|
||
|
class CXTPCalendarEventCategories;
|
||
|
class CXTPCalendarCustomProperties;
|
||
|
class CXTPCalendarEvents;
|
||
|
class CXTPCalendarEvent;
|
||
|
|
||
|
XTP_DEFINE_SMART_PTR_INTERNAL(CXTPCalendarEvents)
|
||
|
XTP_DEFINE_SMART_PTR_INTERNAL(CXTPCalendarEvent)
|
||
|
XTP_DEFINE_SMART_PTR_INTERNAL(CXTPCalendarRecurrencePattern)
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// Cache table size.
|
||
|
// Remarks:
|
||
|
// Should be a prime number!
|
||
|
// like: 503, 1021, 1511, 2003, 3001, 4001, 5003, 6007, 8009, 12007, 16001,
|
||
|
// 32003, 48017, 64007
|
||
|
//===========================================================================
|
||
|
#define XTP_OBJECT_CACHE_HASH_TABLE_SIZE 1021
|
||
|
|
||
|
static const LPCTSTR cszProcess_RecurrenceState = _T("process_RecurrenceState"); // String name for a corresponding property
|
||
|
static const LPCTSTR cszProcess_RecurrencePatternID = _T("process_RecurrencePatternID");// String name for a corresponding property
|
||
|
|
||
|
//===========================================================================
|
||
|
// Summary:
|
||
|
// This class defines an abstract representation of the Calendar
|
||
|
// control data with all necessary methods and some predefined
|
||
|
// functionality added,
|
||
|
// Remarks:
|
||
|
// This class is the definition of the XTPCalendarData abstract
|
||
|
// class which represents a data portion of the Calendar control.
|
||
|
//
|
||
|
// To implement a custom Data Provider solution you should create a class
|
||
|
// derived from CXTPCalendarData and implement necessary virtual methods.
|
||
|
// The first main set of methods to be implemented are Open, Close, Save,
|
||
|
// Create, IsOpen, etc.
|
||
|
// The second main set of methods to be implemented is starting from Do verb.
|
||
|
// Those are: DoRetrieveDayEvents, DoRead_Event, DoUpdate_RPattern, etc.
|
||
|
//
|
||
|
// To use a descendant of CXTPCalendarData in a regular way you first
|
||
|
// construct an instance of CXTPCalendarData object, then use Open()
|
||
|
// member function to establish connection to the data source and
|
||
|
// initialize the object. Class provides a number of functions to
|
||
|
// manipulate events and events related data. After finishing working
|
||
|
// with data source you should call Close() member function to close
|
||
|
// connection, de-initialize the object and free unused resources.
|
||
|
//
|
||
|
// This class also contains an implementation of the data provider cache,
|
||
|
// which is used by default and gets a great performance increase in case
|
||
|
// when any slow connections are used (for example database connection).
|
||
|
// See Also:
|
||
|
// CXTPCalendarData overview, CXTPCalendarEvents, CXTPCalendarEvent,
|
||
|
// CXTPCalendarCustomDataProvider
|
||
|
//===========================================================================
|
||
|
class _XTP_EXT_CLASS CXTPCalendarData : public CXTPCmdTarget
|
||
|
{
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
friend class CXTPCalendarRecurrencePattern;
|
||
|
friend class CXTPCalendarEvent;
|
||
|
friend class CXTPCalendarOptions;
|
||
|
friend class CXTPCalendarControl;
|
||
|
|
||
|
DECLARE_DYNAMIC(CXTPCalendarData)
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
public:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Default constructor.
|
||
|
// Remarks:
|
||
|
// Constructs a Data object. To establish a connection to a
|
||
|
// specified data source and initialize the object you must
|
||
|
// call Open() member function immediately after construction.
|
||
|
// See Also: Open()
|
||
|
//-----------------------------------------------------------------------
|
||
|
CXTPCalendarData();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Default Destructor.
|
||
|
// Remarks:
|
||
|
// Handles all deallocation.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~CXTPCalendarData();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to initialize a newly constructed
|
||
|
// Data object. Your data object must be created before you
|
||
|
// can call Open().
|
||
|
// Returns:
|
||
|
// Boolean value represents succsess/failure result
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL Open();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to create a file for storing custom
|
||
|
// data provider data.
|
||
|
// Remarks:
|
||
|
// It will be opened by default.
|
||
|
// Returns:
|
||
|
// TRUE is successful. FALSE otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL Create();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method saves data to the file.
|
||
|
// Remarks:
|
||
|
// The most recent data from the data provider will be saved in
|
||
|
// the same external file as before.
|
||
|
// Note that all the data inside the data provider is already up to
|
||
|
// date, this method just allows it to be saved externally.
|
||
|
// Returns:
|
||
|
// TRUE is successful. FALSE otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL Save();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to close the connection to a data source.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void Close();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method determines whether a data source connection is opened..
|
||
|
// Returns:
|
||
|
// TRUE when a connection is already opened. FALSE otherwise.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL IsOpen() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method determines a type of the current Data Provider
|
||
|
// implementation.
|
||
|
// Returns:
|
||
|
// Current Data Provider implementation type.
|
||
|
// See also:
|
||
|
// XTPCalendarDataProvider enumeration.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual XTPCalendarDataProvider GetType() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves day events for a specified day from the data source.
|
||
|
// Parameters:
|
||
|
// dtDay - A specified day.
|
||
|
// Remarks:
|
||
|
// This method retrieves all appointments for a specified day from
|
||
|
// the data source. It includes recurrence appointments occurrences,
|
||
|
// regular appointments for this day, multi day appointments which
|
||
|
// also have a part of this day.
|
||
|
// This method uses DoRetrieveDayEvents realization and implements
|
||
|
// some additional service processing.
|
||
|
// Returns:
|
||
|
// A collection of events for a specified day.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventsPtr RetrieveDayEvents(COleDateTime dtDay);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Creates a new empty CXTPCalendarEvent object.
|
||
|
// Parameters:
|
||
|
// dwEventID - ID for a new event
|
||
|
// Remarks:
|
||
|
// This method creates a new CXTPCalendarEvent class and
|
||
|
// initializes it's ID.
|
||
|
//
|
||
|
// It could be reimplemented in a descendant if it has its own
|
||
|
// ID's source (for example, database key field).
|
||
|
// Returns:
|
||
|
// Created empty event.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventPtr CreateNewEvent(DWORD dwEventID = XTP_CALENDAR_UNKNOWN_EVENT_ID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Creates a new empty CXTPCalendarRecurrencePattern object.
|
||
|
// Parameters:
|
||
|
// dwPatternID - ID for a new Recurrence Pattern
|
||
|
// Remarks:
|
||
|
// This method creates a new CXTPCalendarRecurrencePattern class and
|
||
|
// initializes it's ID.
|
||
|
//
|
||
|
// It could be reimplemented in a descendant if it has its own
|
||
|
// ID's source (for example, database key field).
|
||
|
// Returns:
|
||
|
// Created empty Recurrence Pattern.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarRecurrencePatternPtr CreateNewRecurrencePattern(DWORD dwPatternID = XTP_CALENDAR_UNKNOWN_RECURRENCE_PATTERN_ID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Read event from the data source.
|
||
|
// Parameters:
|
||
|
// dwEventID - Event ID of the read target.
|
||
|
// Remarks:
|
||
|
// This method retrieves all data for a specified event.
|
||
|
// This method uses DoRead_Event realization and implements
|
||
|
// some additional service processing.
|
||
|
// Returns:
|
||
|
// A pointer to the new CXTPCalendarEvent object which fields
|
||
|
// are filled with a data from the data source.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventPtr GetEvent(DWORD dwEventID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Read recurrence pattern from the data source
|
||
|
// Parameters:
|
||
|
// dwPatternID - Pattern ID of the read target.
|
||
|
// Remarks:
|
||
|
// This method retrieves all data for a specified recurrence pattern.
|
||
|
// This method uses DoRead_RPattern realization and implements
|
||
|
// some additional service processing.
|
||
|
// Returns:
|
||
|
// A pointer to the new CXTPCalendarRecurrencePatternPtr object which
|
||
|
// fields are filled with a data from the data source.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarRecurrencePatternPtr GetRecurrencePattern(DWORD dwPatternID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Creates a new event in the data source
|
||
|
// Parameters:
|
||
|
// pEvent - Pointer to the CXTPCalendarEvent object which describes
|
||
|
// all data fields of a newly created record.
|
||
|
// Remarks:
|
||
|
// This method creates a data record corresponding with the
|
||
|
// specified event.
|
||
|
// This method uses DoCreate_Event realization and implements
|
||
|
// some additional service processing.
|
||
|
// Returns:
|
||
|
// TRUE if event created successfully,
|
||
|
// FALSE in case of any error during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL AddEvent(CXTPCalendarEvent* pEvent);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Creates a set of events in the data source
|
||
|
// Parameters:
|
||
|
// pEvents - Pointer to the CXTPCalendarEvents collection which
|
||
|
// contains a number of CXTPCalendarEvent objects.
|
||
|
// Remarks:
|
||
|
// This method adds a collection of events into the data source.
|
||
|
// Returns:
|
||
|
// TRUE if all events were added successfully,
|
||
|
// FALSE in case of any error during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL AddEvents(CXTPCalendarEvents* pEvents);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Removes all events from the data source.
|
||
|
// Remarks:
|
||
|
// This method removes all appointments from the data source.
|
||
|
// This method uses DoRemoveAllEvents realization and implements
|
||
|
// some additional service processing.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void RemoveAllEvents();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Deletes an event from the data source.
|
||
|
// Parameters:
|
||
|
// pEvent - Pointer to the CXTPCalendarEvent object which describes
|
||
|
// all data fields of an event.
|
||
|
// Remarks:
|
||
|
// This method deletes a data record corresponding with the
|
||
|
// specified event.
|
||
|
// This method uses DoDelete_Event realization and implements
|
||
|
// some additional service processing.
|
||
|
// Returns:
|
||
|
// TRUE if an event deleted successfully,
|
||
|
// FALSE in case of any errors during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL DeleteEvent(CXTPCalendarEvent* pEvent);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Updates event properties in the data source.
|
||
|
// Parameters:
|
||
|
// pNewEvent - Pointer to the CXTPCalendarEvent object which describes
|
||
|
// all data fields of an event.
|
||
|
// Remarks:
|
||
|
// This method updates a data record corresponding with the
|
||
|
// specified event.
|
||
|
// This method uses DoUpdate_Event realization and implements
|
||
|
// some additional service processing.
|
||
|
// Returns:
|
||
|
// TRUE if an event updated successfully,
|
||
|
// FALSE in case of any errors during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL ChangeEvent(CXTPCalendarEvent* pNewEvent);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a connection pointer for the.data source.
|
||
|
// Returns:
|
||
|
// A connection pointer.
|
||
|
// See also;
|
||
|
// CXTPNotifyConnection overview.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPNotifyConnection* GetConnection() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a custom properties collection.
|
||
|
// Returns:
|
||
|
// A custom properties collection associated with the data source..
|
||
|
// See also;
|
||
|
// CXTPCalendarCustomProperties overview.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarCustomProperties* GetCustomProperties() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a collection of Labels used in this Data source.
|
||
|
// Returns:
|
||
|
// A collection of Labels used in this Data source.
|
||
|
// By default it has some predefined values.
|
||
|
// See also;
|
||
|
// CXTPCalendarEventLabels overview, SetLabelList(),
|
||
|
// CXTPCalendarEventLabels::InitDefaultValues
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventLabels* GetLabelList() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a collection of Event categories.
|
||
|
// Returns:
|
||
|
// A collection of Event categories.
|
||
|
// By default it has some predefined values.
|
||
|
// See also;
|
||
|
// CXTPCalendarEventCategories overview,
|
||
|
// CXTPCalendarEventCategories::InitDefaultValues()
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventCategories* GetEventCategories() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Set custom collection of Labels to be used in this Data source.
|
||
|
// Parameters:
|
||
|
// pLabelList - A custom collection of Labels to be used there.
|
||
|
// See also;
|
||
|
// CXTPCalendarEventLabels overview, GetLabelList()
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetLabelList(CXTPCalendarEventLabels* pLabelList);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a collection of schedules used in this data source.
|
||
|
// Returns:
|
||
|
// A collection of schedules associated with the data source.
|
||
|
// See also;
|
||
|
// CXTPCalendarSchedules overview.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarSchedules* GetSchedules() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets a data provider connection string.
|
||
|
// Parameters:
|
||
|
// lpszConnectionString - A connection string.
|
||
|
// See also;
|
||
|
// GetConnectionString(), GetDataSource()
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetConnectionString(LPCTSTR lpszConnectionString);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a data provider connection string.
|
||
|
// Returns:
|
||
|
// Current connection string.
|
||
|
// See also;
|
||
|
// SetConnectionString(), GetDataSource()
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CString GetConnectionString() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Returns a data provider data source.
|
||
|
// Returns:
|
||
|
// String with current data source settings.
|
||
|
// Remarks:
|
||
|
// This method parses a connection string and returns a data source
|
||
|
// as a part of it.
|
||
|
// See also;
|
||
|
// GetConnectionString(), SetConnectionString()
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CString GetDataSource();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Determines current cache mode.
|
||
|
// See also:
|
||
|
// XTPCalendarDataProviderCacheMode enumeration,
|
||
|
// SetCacheMode().
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual int GetCacheMode() const;
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Set common data provider cache mode.
|
||
|
// Parameters:
|
||
|
// eCacheMode - Cache mode. See XTPCalendarDataProviderCacheMode
|
||
|
// pCacheDataProvider - Data Provider object which you want to use
|
||
|
// for cache purposes. By default it is
|
||
|
// CXTPCalendarMemoryDataProvider.
|
||
|
// Remarks:
|
||
|
// This method updates an internal cache mode.
|
||
|
// See also:
|
||
|
// XTPCalendarDataProviderCacheMode enumeration.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SetCacheMode(int eCacheMode, CXTPCalendarData* pCacheDataProvider = NULL);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Clears common data provider cache.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void ClearCache();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves a collection of events expiring in the period from
|
||
|
// dtFrom during next spPeriod.
|
||
|
// Parameters:
|
||
|
// dtFrom - Start date and time of a specified period.
|
||
|
// spPeriod - A duration of a specified period.
|
||
|
// Remarks:
|
||
|
// This method is used by a reminders manager.
|
||
|
// This method uses DoGetUpcomingEvents realization and implements
|
||
|
// some additional service processing.
|
||
|
// Returns:
|
||
|
// A CXTPCalendarEvents pointer containing a collection of
|
||
|
// upcoming events.
|
||
|
// See Also:
|
||
|
// CXTPCalendarRemindersManager overview
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventsPtr GetUpcomingEvents(COleDateTime dtFrom = (DATE)0, COleDateTimeSpan spPeriod = (DATE)0);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method Gets all events without generating recurrence
|
||
|
// occurrences.
|
||
|
// Remarks:
|
||
|
// Simple events are included as is.
|
||
|
// For the recurrence events only master events are included,
|
||
|
// recurrence occurrences are not generated.
|
||
|
// This method uses DoGetAllEvents_raw realization and implements
|
||
|
// some additional service processing.
|
||
|
// Returns:
|
||
|
// A CXTPCalendarEvents pointer containing a collection of
|
||
|
// all events.
|
||
|
// See Also: _Save(), Serialize(), DoGetAllEvents_raw()
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventsPtr GetAllEvents_raw();
|
||
|
|
||
|
BOOL m_bOwnershipMode;
|
||
|
//flag to set protected mode of using Calendar when some schedules can be protected and other - public
|
||
|
protected:
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves day events for a specified day from the data source.
|
||
|
// Parameters:
|
||
|
// dtDay - A specified day.
|
||
|
// Remarks:
|
||
|
// This method retrieves all appointments for a specified day from
|
||
|
// the data source. It includes recurrence appointments occurrences,
|
||
|
// regular appointments for this day, multi day appointments which
|
||
|
// also have a part of this day.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// A collection of events for a specified day.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventsPtr DoRetrieveDayEvents(COleDateTime dtDay);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Removes all events from the data source.
|
||
|
// Remarks:
|
||
|
// This method removes all appointments from the data source.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void DoRemoveAllEvents();
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Read event from the data source.
|
||
|
// Parameters:
|
||
|
// dwEventID - Event ID of the read target.
|
||
|
// Remarks:
|
||
|
// This method retrieves all data for a specified event.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// A pointer to the new CXTPCalendarEvent object which fields
|
||
|
// are filled with a data from the data source.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventPtr DoRead_Event(DWORD dwEventID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Read recurrence pattern from the data source
|
||
|
// Parameters:
|
||
|
// dwPatternID - Pattern ID of the read target.
|
||
|
// Remarks:
|
||
|
// This method retrieves all data for a specified recurrence pattern.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// A pointer to the new CXTPCalendarRecurrencePatternPtr object which
|
||
|
// fields are filled with a data from the data source.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarRecurrencePatternPtr DoRead_RPattern(DWORD dwPatternID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Creates a new event in the data source
|
||
|
// Parameters:
|
||
|
// pEvent - Pointer to the CXTPCalendarEvent object which describes
|
||
|
// all data fields of a newly created record.
|
||
|
// rdwNewEventID - [out] EventID of a newly created record
|
||
|
// Remarks:
|
||
|
// This method creates a data record corresponding with the
|
||
|
// specified event.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// TRUE if event created successfully,
|
||
|
// FALSE in case of any error during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL DoCreate_Event(CXTPCalendarEvent* pEvent, DWORD& rdwNewEventID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Updates event properties in the data source.
|
||
|
// Parameters:
|
||
|
// pEvent - Pointer to the CXTPCalendarEvent object which describes
|
||
|
// all data fields of an event.
|
||
|
// Remarks:
|
||
|
// This method updates a data record corresponding with the
|
||
|
// specified event.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// TRUE if an event updated successfully,
|
||
|
// FALSE in case of any errors during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL DoUpdate_Event(CXTPCalendarEvent* pEvent);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Deletes an event from the data source.
|
||
|
// Parameters:
|
||
|
// pEvent - Pointer to the CXTPCalendarEvent object which describes
|
||
|
// all data fields of an event.
|
||
|
// Remarks:
|
||
|
// This method deletes a data record corresponding with the
|
||
|
// specified event.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// TRUE if an event deleted successfully,
|
||
|
// FALSE in case of any errors during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL DoDelete_Event(CXTPCalendarEvent* pEvent);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Creates a new recurrence pattern in the data source
|
||
|
// Parameters:
|
||
|
// pPattern - Pointer to the CXTPCalendarRecurrencePattern object which
|
||
|
// describes all data fields of a newly created record.
|
||
|
// rdwNewPatternID - [out] ID of a newly created record
|
||
|
// Remarks:
|
||
|
// This method creates a data record corresponding with the
|
||
|
// specified recurrence pattern.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// TRUE if recurrence pattern created successfully,
|
||
|
// FALSE in case of any error during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL DoCreate_RPattern(CXTPCalendarRecurrencePattern* pPattern, DWORD& rdwNewPatternID);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Updates a recurrence pattern in the database
|
||
|
// Parameters:
|
||
|
// pPattern - Pointer to the CXTPCalendarRecurrencePattern object.
|
||
|
// Remarks:
|
||
|
// This method updates a data record corresponding with the
|
||
|
// specified recurrence pattern.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// TRUE if recurrence pattern updated successfully,
|
||
|
// FALSE in case of any error during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL DoUpdate_RPattern(CXTPCalendarRecurrencePattern* pPattern);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Deletes a recurrence pattern from the database
|
||
|
// Parameters:
|
||
|
// pPattern - Pointer to the CXTPCalendarRecurrencePattern object
|
||
|
// which should be deleted.
|
||
|
// Remarks:
|
||
|
// This method deletes a data record corresponding with the
|
||
|
// specified recurrence pattern.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// TRUE if recurrence pattern deleted successfully,
|
||
|
// FALSE in case of any error during the process.
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL DoDelete_RPattern(CXTPCalendarRecurrencePattern* pPattern);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves a collection of events expiring in the period from
|
||
|
// dtFrom during next spPeriod.
|
||
|
// Parameters:
|
||
|
// dtFrom - Start date and time of a specified period.
|
||
|
// spPeriod - A duration of a specified period.
|
||
|
// Remarks:
|
||
|
// This method is used by a reminders manager.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// A CXTPCalendarEvents pointer containing a collection of
|
||
|
// upcoming events.
|
||
|
// See Also:
|
||
|
// CXTPCalendarRemindersManager overview
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventsPtr DoGetUpcomingEvents(COleDateTime dtFrom, COleDateTimeSpan spPeriod);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Retrieves all events without generating
|
||
|
// recurrence occurrences.
|
||
|
// Remarks:
|
||
|
// Simple events are included as is.
|
||
|
// For the recurrence events only master events are included,
|
||
|
// recurrence occurrences are not generated.
|
||
|
// It has empty implementation in this class and should be
|
||
|
// implemented by any custom realization of CXTPCalendarData.
|
||
|
// Returns:
|
||
|
// A CXTPCalendarEvents pointer containing a collection of
|
||
|
// all events.
|
||
|
// See Also: GetAllEvents_raw()
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual CXTPCalendarEventsPtr DoGetAllEvents_raw();
|
||
|
|
||
|
protected:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sends a notification to all listeners.
|
||
|
// Parameters:
|
||
|
// EventCode - Notification event code.
|
||
|
// wParam - First notification parameter.
|
||
|
// lParam - Second notification parameter.
|
||
|
// See Also:
|
||
|
// CXTPNotifyConnection overview
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual void SendNotification(XTP_NOTIFY_CODE EventCode, WPARAM wParam , LPARAM lParam);
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This method is called by the calendar control framework when Time Zone is Changed.
|
||
|
// Remarks:
|
||
|
// The data provider implementation may use this method to adjust its data for
|
||
|
// a new timezone.
|
||
|
// Returns:
|
||
|
// TRUE if internal data changed and calendar must be re-populated, FALSE if this
|
||
|
// event is ignored (no data changed).
|
||
|
// Base implementation do nothing and returns FALSE.
|
||
|
// See Also:
|
||
|
// CXTPTopLevelWndMsgNotifier, XTP_WM_TIME_ZONE_CHANGED
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual BOOL OnTimeZoneChanged() { return FALSE; };
|
||
|
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
virtual BOOL _AddRPatternWithExceptions(CXTPCalendarRecurrencePattern* pPattern);
|
||
|
virtual BOOL _RemoveRPatternWithExceptions(CXTPCalendarRecurrencePattern* pPattern);
|
||
|
virtual BOOL _ChangeRPatternWithExceptions(CXTPCalendarRecurrencePattern* pRecurrencePattern);
|
||
|
|
||
|
virtual BOOL _ChangeRExceptionOccurrence_nf(CXTPCalendarEvent* pExcOcc, BOOL bSend_EventDeleted);
|
||
|
|
||
|
virtual void _PostProcessOccurrencesFromMaster(COleDateTime dtDay, CXTPCalendarEvents* pEvents);
|
||
|
virtual void _PostProcessOccurrencesFromMaster2(COleDateTime dtDayFrom, COleDateTime dtDayTo, CXTPCalendarEvents* pEvents);
|
||
|
|
||
|
virtual BOOL _PostProcessRecurrenceIfNeed(CXTPCalendarEvent* pEvent);
|
||
|
virtual void _PostProcessRecurrenceIfNeed(CXTPCalendarEvents* pEvents);
|
||
|
|
||
|
virtual void _FilterDayEventsInstancesByEndTime(COleDateTime dtDay, CXTPCalendarEvents* pEvents);
|
||
|
|
||
|
virtual CXTPCalendarRecurrencePatternPtr _GetRecurrencePattern_raw(DWORD dwPatternID);
|
||
|
virtual CXTPCalendarEventPtr _GetEvent_raw(DWORD dwEventID);
|
||
|
|
||
|
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
|
||
|
|
||
|
|
||
|
protected:
|
||
|
BOOL m_bOpened; // Stores a flag whether a data source connection is open
|
||
|
|
||
|
CXTPNotifyConnection* m_pConnection; // Connection object to send notifications.
|
||
|
BOOL m_bDisableNotificationsSending; // Stores a flag whether notifications sending is disabled.
|
||
|
|
||
|
CXTPCalendarEventLabels* m_pLabelList; // Event labels list.
|
||
|
CXTPCalendarSchedules* m_pSchedules; // Data source Schedules list
|
||
|
CXTPCalendarEventCategories* m_pEventCategories; // Store a collection of Event categories.
|
||
|
|
||
|
CXTPCalendarCustomProperties* m_pCustomProperties; //Custom properties collection object.
|
||
|
protected:
|
||
|
CString m_strConnectionString; // default connection string;
|
||
|
|
||
|
XTPCalendarDataProvider m_typeProvider;// Data provider type.
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Remarks:
|
||
|
// Implementation of the data provider cache.
|
||
|
//-----------------------------------------------------------------------
|
||
|
class _XTP_EXT_CLASS CXTPDPCache
|
||
|
{
|
||
|
public:
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Default class constructor.
|
||
|
//-------------------------------------------------------------------
|
||
|
CXTPDPCache();
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Default class destructor.
|
||
|
//-------------------------------------------------------------------
|
||
|
virtual ~CXTPDPCache();
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Closes a cache.
|
||
|
//-------------------------------------------------------------------
|
||
|
void SafeClose();
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Safely removes all elements from cache.
|
||
|
//-------------------------------------------------------------------
|
||
|
void SafeRemoveAll();
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Checks whether events for this day are already stored in cache.
|
||
|
// Parameters:
|
||
|
// dtDay - A day to check.
|
||
|
// Returns:
|
||
|
// TRUE if day is already stored in cache,
|
||
|
// FALSE otherwise.
|
||
|
//-------------------------------------------------------------------
|
||
|
virtual BOOL IsDayInCache(COleDateTime dtDay);
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Sets a flag that this day is in cache.
|
||
|
// Parameters:
|
||
|
// dtDay - A day to set.
|
||
|
// bSet - Whether to set or clear flag.
|
||
|
//-------------------------------------------------------------------
|
||
|
virtual void SetDayInCache(COleDateTime dtDay, BOOL bSet = TRUE);
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Checks whether a specified event is already stored in cache.
|
||
|
// Parameters:
|
||
|
// pEvent - An event to check.
|
||
|
// Returns:
|
||
|
// TRUE if an event is already stored in cache,
|
||
|
// FALSE otherwise.
|
||
|
//-------------------------------------------------------------------
|
||
|
virtual BOOL IsEventInCache(CXTPCalendarEvent* pEvent);
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Adds a collection if events to the cache for a specified day.
|
||
|
// Parameters:
|
||
|
// pEvents - An events collection.
|
||
|
// dtDay - A specified day.
|
||
|
//-------------------------------------------------------------------
|
||
|
virtual void AddToCache(CXTPCalendarEvents* pEvents, COleDateTime dtDay);
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Checks whether a specified event is already stored in cache
|
||
|
// and adds it there if not.
|
||
|
// Parameters:
|
||
|
// pEvent - An event to check / add.
|
||
|
//-------------------------------------------------------------------
|
||
|
virtual void AddToCacheIfNeed(CXTPCalendarEvent* pEvent);
|
||
|
|
||
|
//-------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Checks whether a specified recurrence pattern is already
|
||
|
// stored in cache and adds it there if not.
|
||
|
// Parameters:
|
||
|
// pPattern - An pattern to check / add.
|
||
|
//-------------------------------------------------------------------
|
||
|
virtual void _AddToCacheIfNeed(CXTPCalendarRecurrencePattern* pPattern);
|
||
|
|
||
|
CXTPCalendarData* m_pCacheDP; // Cache Data Provider.
|
||
|
int m_eCacheMode; // see XTPCalendarDataProviderCacheMode
|
||
|
|
||
|
protected:
|
||
|
CMap<DWORD, DWORD, BOOL, BOOL> m_mapIsDayInCache; // whether events for this day are already stored in cache
|
||
|
};
|
||
|
|
||
|
protected:
|
||
|
CXTPDPCache m_cache; // Common data provider cache.
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Remarks:
|
||
|
// This template class is used as a map (see CMap) to store
|
||
|
// ID and object pairs. Using the map allows for quick access
|
||
|
// using the ID.
|
||
|
// See Also: CMap
|
||
|
//-----------------------------------------------------------------------
|
||
|
template<class _TObject>
|
||
|
class EventsMapByID_T
|
||
|
{
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Default class constructor.
|
||
|
// Parameters:
|
||
|
// uHashTableSize - Size of the map hash table.
|
||
|
// See Also: CMap, CMap::InitHashTable
|
||
|
//-----------------------------------------------------------------------
|
||
|
EventsMapByID_T(UINT uHashTableSize = XTP_OBJECT_CACHE_HASH_TABLE_SIZE)
|
||
|
{
|
||
|
m_mapID2Object.InitHashTable(uHashTableSize, FALSE);
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Default class destructor.
|
||
|
// Remarks:
|
||
|
// Handles member items deallocation. Decreases references of
|
||
|
// stored objects.
|
||
|
// See Also: CMap
|
||
|
//-----------------------------------------------------------------------
|
||
|
virtual ~EventsMapByID_T() {};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is used to add new or to replace existing
|
||
|
// pairs of IDs and Objects.
|
||
|
// Parameters:
|
||
|
// dwID - Object ID.
|
||
|
// pObj - Object Pointer.
|
||
|
// Remarks:
|
||
|
// Call this method to add new or to replace existing
|
||
|
// elements in the map. InternalAddRef is called for the
|
||
|
// stored object.
|
||
|
// See Also: Get, Remove, CMap::SetAt
|
||
|
//-----------------------------------------------------------------------
|
||
|
void Add(DWORD dwID, _TObject* pObj)
|
||
|
{
|
||
|
if (!pObj)
|
||
|
{
|
||
|
ASSERT(FALSE);
|
||
|
return;
|
||
|
}
|
||
|
TObjPtr ptrObj(pObj, TRUE);
|
||
|
m_mapID2Object.SetAt(dwID, ptrObj);
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is used to obtain a pointer to an object
|
||
|
// using the specified ID.
|
||
|
// Parameters:
|
||
|
// dwID - Object ID.
|
||
|
// Remarks:
|
||
|
// Call this method to search for the object using the ID.
|
||
|
// InternalAddRef is called for the non-NULL returned object.
|
||
|
// Returns:
|
||
|
// Object pointer or NULL.
|
||
|
// See Also: Add, CMap::Lookup
|
||
|
//-----------------------------------------------------------------------
|
||
|
_TObject* Get(DWORD dwID)
|
||
|
{
|
||
|
TObjPtr ptrObj;
|
||
|
if (m_mapID2Object.Lookup(dwID, ptrObj) && ptrObj)
|
||
|
{
|
||
|
return (_TObject*)(CCmdTarget*)ptrObj;
|
||
|
}
|
||
|
return NULL;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is used to determine if an object with the
|
||
|
// specified ID exists.
|
||
|
// Parameters:
|
||
|
// dwID - Object ID.
|
||
|
// Remarks:
|
||
|
// Similar to Get method, but calls InternalAddRef for
|
||
|
// the returned object.
|
||
|
// Returns:
|
||
|
// TRUE if object with ID exists. Otherwise FALSE.
|
||
|
// See Also: Get, CMap::Lookup
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL IsExist(DWORD dwID)
|
||
|
{
|
||
|
TObjPtr ptrObj;
|
||
|
return m_mapID2Object.Lookup(dwID, ptrObj) && ptrObj;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is used to remove an object with the
|
||
|
// specified ID.
|
||
|
// Parameters:
|
||
|
// dwID - Object ID.
|
||
|
// Remarks:
|
||
|
// Call this method to remove an element with the supplied ID
|
||
|
// from the map.
|
||
|
// InternalAddRef is called for the removed object.
|
||
|
// Returns: Nonzero if the entry was found and successfully removed; otherwise 0.
|
||
|
// See Also: Add, RemoveAll, CMap::RemoveKey
|
||
|
//-----------------------------------------------------------------------
|
||
|
BOOL Remove(DWORD dwID)
|
||
|
{
|
||
|
BOOL bRes = m_mapID2Object.RemoveKey(dwID);
|
||
|
return bRes;
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is used to remove all stored objects
|
||
|
// from the map.
|
||
|
// Remarks:
|
||
|
// Call this method to cleanup the map.
|
||
|
// InternalAddRef is called for all objects.
|
||
|
// See Also: Remove, CMap::RemoveAll
|
||
|
//-----------------------------------------------------------------------
|
||
|
void RemoveAll()
|
||
|
{
|
||
|
m_mapID2Object.RemoveAll();
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is used to get start iteration position.
|
||
|
// Returns: A POSITION value that indicates a starting position for
|
||
|
// iterating the map; or NULL if the map is empty.
|
||
|
// See Also: GetNextElement, CMap::GetStartPosition
|
||
|
//-----------------------------------------------------------------------
|
||
|
POSITION GetStartPosition()
|
||
|
{
|
||
|
return m_mapID2Object.GetStartPosition();
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is used to get next object pointer.
|
||
|
// Parameters:
|
||
|
// rPos - [in/out] Iteration position of the element.
|
||
|
// rID - [out] Element ID.
|
||
|
// Remarks:
|
||
|
// Call this method to iterate on elements stored in the map.
|
||
|
// InternalAddRef is not called for the returned object.
|
||
|
// rPos parameter value is set to the element next position
|
||
|
// or NULL if iterating is finished.
|
||
|
// Returns:
|
||
|
// A pointer to the object which corresponds to the specified
|
||
|
// position (rPos parameter value).
|
||
|
// See Also: GetStartPosition, CMap::GetNextAssoc
|
||
|
//-----------------------------------------------------------------------
|
||
|
_TObject* GetNextElement(POSITION& rPos, DWORD& rID)
|
||
|
{
|
||
|
TObjPtr ptrElement;
|
||
|
m_mapID2Object.GetNextAssoc(rPos, rID, ptrElement);
|
||
|
return (_TObject*)(CCmdTarget*)ptrElement;
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// This member function is used to get object count.
|
||
|
// Returns:
|
||
|
// Count of the objects in the map.
|
||
|
// See Also: CMap::GetCount
|
||
|
//-----------------------------------------------------------------------
|
||
|
int GetCount()
|
||
|
{
|
||
|
return (int)m_mapID2Object.GetCount();
|
||
|
|
||
|
}
|
||
|
|
||
|
protected:
|
||
|
|
||
|
//typedef CXTPSmartPtrInternalT<_TObject> TObjPtr; // Smart pointer object type.
|
||
|
// to avoid warning C4786 CCmdTarget used.
|
||
|
typedef CXTPSmartPtrInternalT<CCmdTarget> TObjPtr; // Smart pointer object type.
|
||
|
CMap<DWORD, DWORD, TObjPtr, TObjPtr&> m_mapID2Object; // The map of ID to object.
|
||
|
};
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// Summary:
|
||
|
// Call this member function to get a unique temporary event ID.
|
||
|
// Returns:
|
||
|
// New value for event ID.
|
||
|
//-----------------------------------------------------------------------
|
||
|
static DWORD GetNextFreeTempID();
|
||
|
|
||
|
static DWORD ms_dwNextFreeTempID; // Next unique event ID.
|
||
|
|
||
|
CXTPCalendarOptions* m_pCalendarOptions; // This member stores user's calendar view options.
|
||
|
|
||
|
|
||
|
public:
|
||
|
//-----------------------------------------------------------------------
|
||
|
// 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);
|
||
|
|
||
|
private:
|
||
|
//{{AFX_CODEJOCK_PRIVATE
|
||
|
void SetOptionsToUpdate(CXTPCalendarOptions* pOptions);
|
||
|
//}}AFX_CODEJOCK_PRIVATE
|
||
|
protected:
|
||
|
|
||
|
};
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
AFX_INLINE BOOL CXTPCalendarData::Open() {
|
||
|
//ASSERT(!m_bOpened);
|
||
|
return m_bOpened = TRUE;
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPCalendarData::Create() {
|
||
|
//ASSERT(!m_bOpened);
|
||
|
return m_bOpened = TRUE;
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPCalendarData::IsOpen() const {
|
||
|
return m_bOpened;
|
||
|
}
|
||
|
AFX_INLINE BOOL CXTPCalendarData::Save() {
|
||
|
//ASSERT(m_bOpened);
|
||
|
return TRUE;
|
||
|
}
|
||
|
AFX_INLINE void CXTPCalendarData::Close() {
|
||
|
//ASSERT(m_bOpened);
|
||
|
|
||
|
m_cache.SafeClose();
|
||
|
m_bOpened = FALSE;
|
||
|
}
|
||
|
AFX_INLINE CXTPNotifyConnection* CXTPCalendarData::GetConnection() const {
|
||
|
return m_pConnection;
|
||
|
}
|
||
|
AFX_INLINE DWORD CXTPCalendarData::GetNextFreeTempID() {
|
||
|
return ms_dwNextFreeTempID--;
|
||
|
}
|
||
|
AFX_INLINE CXTPCalendarEventLabels* CXTPCalendarData::GetLabelList() const {
|
||
|
return m_pLabelList;
|
||
|
}
|
||
|
AFX_INLINE CXTPCalendarEventCategories* CXTPCalendarData::GetEventCategories() const {
|
||
|
return m_pEventCategories;
|
||
|
}
|
||
|
AFX_INLINE CXTPCalendarSchedules* CXTPCalendarData::GetSchedules() const {
|
||
|
return m_pSchedules;
|
||
|
}
|
||
|
|
||
|
AFX_INLINE void CXTPCalendarData::SetConnectionString(LPCTSTR lpszConnectionString) {
|
||
|
ASSERT(lpszConnectionString);
|
||
|
if (lpszConnectionString)
|
||
|
{
|
||
|
m_strConnectionString = lpszConnectionString;
|
||
|
}
|
||
|
}
|
||
|
AFX_INLINE CString CXTPCalendarData::GetConnectionString() const {
|
||
|
return m_strConnectionString;
|
||
|
}
|
||
|
AFX_INLINE XTPCalendarDataProvider CXTPCalendarData::GetType() const {
|
||
|
return m_typeProvider;
|
||
|
}
|
||
|
AFX_INLINE int CXTPCalendarData::GetCacheMode() const {
|
||
|
return m_cache.m_eCacheMode;
|
||
|
}
|
||
|
AFX_INLINE CXTPCalendarCustomProperties* CXTPCalendarData::GetCustomProperties() const {
|
||
|
return m_pCustomProperties;
|
||
|
}
|
||
|
|
||
|
#endif // !defined(_XTPCALENDARDATA_H__)
|