diff -r 000000000000 -r f979ecb2b13e pimappservices/calendar/inc/calchangecallback.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappservices/calendar/inc/calchangecallback.h Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,215 @@ +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#ifndef __CALCHANGECALLBACK_H__ +#define __CALCHANGECALLBACK_H__ + +#include + +class TCalChangeEntry; + +class MCalChangeCallBack +/** A call back class for observing changes in the model view. + +A client will not be notified of a change if it is the source of +the change. + +@publishedAll +@deprecated +*/ + { +public: + /** Instance view change type + @publishedAll + @deprecated + */ + enum TChangeType + { + /** Entries are added */ + EChangeAdd, + /** Entries are deleted */ + EChangeDelete, + /** Entries are modified */ + EChangeModify, + /** Undefined entries */ + EChangeUndefined, + /** Entries cause overflow error */ + EChangeOverflowError + }; + + /** Instance view entry type + @publishedAll + @deprecated + */ + enum TChangeEntryType + { + /** Entry type is todo */ + EChangeEntryTodo, + /** Entry type is event */ + EChangeEntryEvent, + /** All entry types */ + EChangeEntryAll + }; + /** A call back function for change notification + @param aChangeEntryType Filters notifications to only notify about entries of this type (event/todo/all). + + */ + virtual void CalChangeNotification(TChangeEntryType aChangeEntryType) = 0; + }; + +/** A call back class for observing changes in the model view. + +The call back returns an array containing information about at least +one change to the database. The information includes the type of change +and the identity of the item being changed. + +A client will not be notified of a change if it is the source of +the change. + +@publishedAll +@released +*/ +class MCalChangeCallBack2 + { +public: + /** + Type of change to the entry. + */ + enum TChangeType + { + /** Calendar entry added. */ + EChangeAdd, + /** Calendar entry deleted. */ + EChangeDelete, + /** Calendar entry modified. */ + EChangeModify, + /** Undefined Calendar entry change. */ + EChangeUndefined, + /** The time zone rules for one or more Calendar entries have changed. */ + EChangeTzRules, + /** Backup Starts + * When the backup event is in process, the Calendar file is locked. + * Most of operations are not permitted when it happens. However, few + * operations, such as notification request, enabling broadcast + * and closing Calendar is still permitted. + * */ + EBackupStart, + /** Restore Starts + * When the restore event is in process, the Calendar file is locked. + * Most of operations are not permitted when it happens. However, few + * operations, such as notification request, enabling broadcast + * and closing Calendar is still permitted. + */ + ERestoreStart, + /** Backup Ends + * When the backup event is completed, the Calendar file is unlocked. + * The application can continue to operate on the current Calendar file. + */ + EBackupEnd, + /** Restore Ends + * When the restore event is completed, the Calendar file is unlocked. + * The application can operate on the restored Calendar file after the application + * is notified with the message. However, if the application has cached any + * Calendar objects, such as Calendar file ID, Calendar entries, Calendar instances, + * they are not necessarily synched with the data in the newly restored Calendar file. + */ + ERestoreEnd, + /** The restored Calendar file can not be opened + * When the restore event is completed, the newly restored Calendar file can not + * be opened. It is because either the file version is not supported or the data is corrupted. + * Apart from closing the session and delete the file, no any other operation is permitted + * when it happens. + */ + ERestoredFileCanNotBeOpened + }; + + /** + Type of entry. + */ + enum TChangeEntryType + { + /** Entry type is todo. */ + EChangeEntryTodo, + /** Entry type is event. */ + EChangeEntryEvent, + /** All entry types. */ + EChangeEntryAll + }; + + /** + A call back function for change notification. + + @param aChangeItems List of changes since the last notification. + */ + virtual void CalChangeNotification(RArray& aChangeItems) = 0; + }; + +/** +A structure for storing Calendar change notification data. This contains the +Calendar entry local UID, the type of change and the entry type. + +The iChangeEntryType member may be set to MCalChangeCallBack2::EChangeEntryTodo +or MCalChangeCallBack2::EChangeEntryEvent. MCalChangeCallBack2::EChangeEntryAll +is provided for call back registration only. + +If the iChangeType member is MCalChangeCallBack2::EChangeUndefined or +MCalChangeCallBack2::EChangeTzRules, iEntryId and iEntryType are undefined and +should not be used by clients. + +When the iChangeType member is MCalChangeCallBack2::EChangeTzRules a change in +time zone rules has been detected and processed by the Calendar server. The +client should refresh any instance data they own as a result of this change. + +@publishedAll +@released +*/ +struct TCalChangeEntry + { + /** Local UID of the entry. */ + TCalLocalUid iEntryId; + /** Type of change to the entry. */ + MCalChangeCallBack2::TChangeType iChangeType; + /** Type of entry. */ + MCalChangeCallBack2::TChangeEntryType iEntryType; + }; + +/** Class to encapsulate call back registration parameters. + +The type of entries, the date range and whether undated todos are included +can be specified. + +@publishedAll +@released +*/ +class CCalChangeNotificationFilter + { +public: + IMPORT_C static CCalChangeNotificationFilter* NewL(MCalChangeCallBack2::TChangeEntryType aChangeEntryType, TBool aIncludeUndatedTodos, const CalCommon::TCalTimeRange& aTimeRange); + IMPORT_C ~CCalChangeNotificationFilter(); + + MCalChangeCallBack2::TChangeEntryType ChangeEntryType() const; + TCalTime StartTime() const; + TCalTime EndTime() const; + TBool IncludeUndatedTodos() const; + +private: + CCalChangeNotificationFilter(MCalChangeCallBack2::TChangeEntryType aChangeEntryType, TBool aIncludeUndatedTodos, const CalCommon::TCalTimeRange& aTimeRange); + + MCalChangeCallBack2::TChangeEntryType iChangeEntryType; + CalCommon::TCalTimeRange iTimeRange; + TBool iIncludeUndatedTodos; + }; + +#endif // __CALCHANGECALLBACK_H__