williamr@2: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2: // All rights reserved.
williamr@2: // This component and the accompanying materials are made available
williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2: // which accompanies this distribution, and is available
williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2: //
williamr@2: // Initial Contributors:
williamr@2: // Nokia Corporation - initial contribution.
williamr@2: //
williamr@2: // Contributors:
williamr@2: //
williamr@2: // Description:
williamr@2: //
williamr@2: 
williamr@2: #ifndef __CALCHANGECALLBACK_H__
williamr@2: #define __CALCHANGECALLBACK_H__
williamr@2: 
williamr@2: #include <calcommon.h>
williamr@2: 
williamr@2: class TCalChangeEntry;
williamr@2: 
williamr@2: class MCalChangeCallBack
williamr@2: /** A call back class for observing changes in the model view.
williamr@2: 
williamr@2: A client will not be notified of a change if it is the source of
williamr@2: the change.
williamr@2: 
williamr@2: @publishedAll
williamr@2: @deprecated
williamr@2: */
williamr@2: 	{
williamr@2: public:
williamr@2: 	/** Instance view change type
williamr@2: 	@publishedAll
williamr@2: 	@deprecated
williamr@2: 	*/
williamr@2: 	enum TChangeType
williamr@2: 		{
williamr@2: 		/**	Entries are added */
williamr@2: 		EChangeAdd,
williamr@2: 		/** Entries are deleted */
williamr@2: 		EChangeDelete,
williamr@2: 		/** Entries are modified */
williamr@2: 		EChangeModify,
williamr@2: 		/** Undefined entries */
williamr@2: 		EChangeUndefined,
williamr@2: 		/** Entries cause overflow error */
williamr@2: 		EChangeOverflowError
williamr@2: 		};
williamr@2: 
williamr@2: 	/** Instance view entry type
williamr@2: 	@publishedAll
williamr@2: 	@deprecated
williamr@2: 	*/
williamr@2: 	enum TChangeEntryType
williamr@2: 		{
williamr@2: 		/** Entry type is todo */
williamr@2: 		EChangeEntryTodo,
williamr@2: 		/** Entry type is event */
williamr@2: 		EChangeEntryEvent,
williamr@2: 		/** All entry types */
williamr@2: 		EChangeEntryAll
williamr@2: 		};
williamr@2: 	/** A call back function for change notification
williamr@2: 	@param aChangeEntryType Filters notifications to only notify about entries of this type (event/todo/all).
williamr@2: 
williamr@2: 	*/
williamr@2: 	virtual void CalChangeNotification(TChangeEntryType aChangeEntryType) = 0;
williamr@2: 	};
williamr@2: 
williamr@2: /** A call back class for observing changes in the model view.
williamr@2: 
williamr@2: The call back returns an array containing information about at least
williamr@2: one change to the database. The information includes the type of change
williamr@2: and the identity of the item being changed.
williamr@2: 
williamr@2: A client will not be notified of a change if it is the source of
williamr@2: the change.
williamr@2: 
williamr@2: @publishedAll
williamr@2: @released
williamr@2: */
williamr@2: class MCalChangeCallBack2
williamr@2: 	{
williamr@2: public:
williamr@2: 	/** Instance view change type
williamr@2: 	@publishedAll
williamr@2: 	@released
williamr@2: 	*/
williamr@2: 	enum TChangeType
williamr@2: 		{
williamr@2: 		/**	Entries are added */
williamr@2: 		EChangeAdd,
williamr@2: 		/** Entries are deleted */
williamr@2: 		EChangeDelete,
williamr@2: 		/** Entries are modified */
williamr@2: 		EChangeModify,
williamr@2: 		/** Undefined entries */
williamr@2: 		EChangeUndefined
williamr@2: 		};
williamr@2: 
williamr@2: 	/** Instance view entry type
williamr@2: 	@publishedAll
williamr@2: 	@released
williamr@2: 	*/
williamr@2: 	enum TChangeEntryType
williamr@2: 		{
williamr@2: 		/** Entry type is todo */
williamr@2: 		EChangeEntryTodo,
williamr@2: 		/** Entry type is event */
williamr@2: 		EChangeEntryEvent,
williamr@2: 		/** All entry types */
williamr@2: 		EChangeEntryAll
williamr@2: 		};
williamr@2: 	/** A call back function for change notification
williamr@2: 	@param aChangeItems  List of changes since the last notification.
williamr@2: 
williamr@2: 	*/
williamr@2: 	virtual void CalChangeNotification(RArray<TCalChangeEntry>& aChangeItems) = 0;
williamr@2: 	};
williamr@2: 
williamr@2: /** Struct for storing change notification data.
williamr@2: This contains the calendar local ID, the type of change and the entry type.
williamr@2: 
williamr@2: The iChangeType will only be set to EChangeEntryTodo or EChangeEntryEvent
williamr@2: values. EChangeEntryAll is provided for callback registration only.
williamr@2: 
williamr@2: If iChangeType is EChangeUndefined or EChangeOverflowError, iEntryId and
williamr@2: iEntryType are undefined and should not be used by clients.
williamr@2: 
williamr@2: @publishedAll
williamr@2: @released
williamr@2: */
williamr@2: struct TCalChangeEntry
williamr@2: 	{
williamr@2: 	/** Local UID of the entry */
williamr@2: 	TCalLocalUid iEntryId;
williamr@2: 	/** Type of change to the entry */
williamr@2: 	MCalChangeCallBack2::TChangeType iChangeType;
williamr@2: 	/** Type of entry */
williamr@2: 	MCalChangeCallBack2::TChangeEntryType iEntryType;
williamr@2: 	};
williamr@2: 
williamr@2: /** Class to encapsulate call back registration parameters.
williamr@2: 
williamr@2: The type of entries, the date range and whether undated todos are included
williamr@2: can be specified.
williamr@2: 
williamr@2: @publishedAll
williamr@2: @released
williamr@2: */
williamr@2: class CCalChangeNotificationFilter
williamr@2: 	{
williamr@2: public:
williamr@2: 	IMPORT_C static CCalChangeNotificationFilter* NewL(MCalChangeCallBack2::TChangeEntryType aChangeEntryType, TBool aIncludeUndatedTodos, const CalCommon::TCalTimeRange& aTimeRange);
williamr@2: 	IMPORT_C ~CCalChangeNotificationFilter();
williamr@2: 
williamr@2: 	MCalChangeCallBack2::TChangeEntryType ChangeEntryType() const;
williamr@2: 	TCalTime StartTime() const;
williamr@2: 	TCalTime EndTime() const;
williamr@2: 	TBool IncludeUndatedTodos() const;
williamr@2: 
williamr@2: private:
williamr@2: 	CCalChangeNotificationFilter(MCalChangeCallBack2::TChangeEntryType aChangeEntryType, TBool aIncludeUndatedTodos, const CalCommon::TCalTimeRange& aTimeRange);
williamr@2: 
williamr@2: 	MCalChangeCallBack2::TChangeEntryType iChangeEntryType;
williamr@2: 	CalCommon::TCalTimeRange iTimeRange;
williamr@2: 	TBool iIncludeUndatedTodos;
williamr@2: 	};
williamr@2: 
williamr@2: #endif // __CALCHANGECALLBACK_H__