diff -r 000000000000 -r f979ecb2b13e pimappservices/calendar/shared/inc/agmsimpleentry.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/pimappservices/calendar/shared/inc/agmsimpleentry.h Tue Feb 02 10:12:19 2010 +0200 @@ -0,0 +1,171 @@ +// Copyright (c) 1997-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 __AGMSIMPLEENTRY_H__ +#define __AGMSIMPLEENTRY_H__ + +#include "agmids.h" +#include "calentry.h" + +class CAgnRptDef; +class CAgnSimpleEntryAllocator; + +/** The maximum possible alarm offset is a constant which means there is no alarm. */ +const TInt32 KAlarmNotSet = KMaxTInt32; + +NONSHARABLE_CLASS(CAgnSimpleEntry) : public CBase +/** Base class for agenda entry types. + +It provides an interface to the following entry attributes: +- type +- repeat information +- entry id +- last changed date +- alarm time +- priority +- status +- start and end time + +CAgnSimpleEntry is the base class for the full entry CAgnEntry. + +On the client side, CAgnSimpleEntry is used as the 'light entry' which is stored in an +instance. Calling FindInstanceL will return CCalInstances. Each of these CCalInstances will +reference a 'light entry', which is a CAgnSimpleEntry. If a function is called on the instance +which cannot be handled by CAgnSimpleEntry, the full CAgnEntry will be loaded. + +On the server side, CAgnSimpleEntry is used in the entry index - CAgnIndex. +There is one main index of CAgnSimpleEntrys, other indexes contain pointers to simple entries in that +index. + +@internalComponent +@released +*/ + { +public: + IMPORT_C CCalEntry::TType Type() const; + + // time + IMPORT_C void SetStartAndEndTimeL(const TAgnCalendarTime& aStartTime, const TAgnCalendarTime& aEndTime); + IMPORT_C const TAgnCalendarTime& StartTime() const; + IMPORT_C const TAgnCalendarTime& EndTime() const; + IMPORT_C const TAgnCalendarTime& EntryTime() const; // returns start time for non-todos, end (due) time for todos + + IMPORT_C TBool MoveStartTimeLocalL(const TTime& aNewStartTimeLocal); + IMPORT_C void AdjustStartUntilTimeForRepEntryL(); + + IMPORT_C MAgnCalendarTimeMode::TTimeMode TimeMode() const; + + // alarm date/time + IMPORT_C TBool HasAlarm() const; + IMPORT_C void SetAlarmOffset(const TTimeIntervalMinutes& aStartTimeOffset); + IMPORT_C TTimeIntervalMinutes AlarmOffset() const; + + // ids + IMPORT_C const TAgnEntryId& EntryId() const; + IMPORT_C void SetEntryId(const TAgnEntryId& aId); + IMPORT_C TCalLocalUid LocalUid() const; + IMPORT_C void SetLocalUid(TCalLocalUid aUId); + IMPORT_C TUint32 GuidHash() const; + IMPORT_C void SetGuidHash(TUint32 aGuidHash); + + // repeat rule + IMPORT_C void SetRptDefL(const CAgnRptDef& aRptDef); + IMPORT_C void ClearRepeat(); + IMPORT_C CAgnRptDef* RptDef(); + IMPORT_C const CAgnRptDef* RptDef() const; + + // status + IMPORT_C void SetStatus(CCalEntry::TStatus aStatus); + IMPORT_C CCalEntry::TStatus Status() const; + + // last changed date + IMPORT_C void SetLastModifiedDate(); + IMPORT_C void SetLastModifiedDateUtc(const TTime& aLastChangedDateUtc); + IMPORT_C const TTime& LastModifiedDateUtc() const; + + // priority + IMPORT_C void SetPriority(TUint8 aPriority); + IMPORT_C TUint8 Priority() const; + + // crossed out date - todos only + IMPORT_C const TTime& CompletedDateUtc() const; + IMPORT_C void SetCompletedDateUtcL(const TTime& aDateUtc); + IMPORT_C void SetIncomplete(); + + // used for extraction + IMPORT_C TTime ValidFromTimeLocalL() const; + IMPORT_C TTime ValidToTimeLocalL() const; + IMPORT_C TTime DurationPlusL(const TTime& aTime) const; + IMPORT_C TTime DurationMinusL(const TTime& aTime) const; + + // non-exported + void CopySimpleEntryL(const CAgnSimpleEntry& aSimpleEntry, CCalEntry::TCopyType aCopyType); + + IMPORT_C virtual void ExternalizeL(RWriteStream& aStream, TBool aToBuffer=EFalse) const; + IMPORT_C virtual void InternalizeL(RReadStream& aStream, TBool aFromBuffer=EFalse); + + void doExternalizeL(RWriteStream& aStream, TBool aToBuffer) const; + void doInternalizeL(RReadStream& aStream, TBool aFromBuffer); + + TBool operator == (const CAgnSimpleEntry& aSimpleEntry) const; + + // We only need to internalize/externalize the GuidHash for the + // persistent index file so it's separate from the other + // internalize/externalize methods. + IMPORT_C void InternalizeGuidHashL(RReadStream& aReadStream); + IMPORT_C void ExternalizeGuidHashL(RWriteStream& aWriteStream) const; + IMPORT_C void SetCollectionId(TCalCollectionId aFileId); + IMPORT_C TCalCollectionId CollectionId()const; + + // User integer. + IMPORT_C void SetUserInt( TUint32 aUserInt ); + IMPORT_C TUint32 UserInt() const; + +protected: + + friend class CAgnSimpleEntryAllocator; + + // set constructor and destructor protected because only the CAgnSimpleEntryAllocator + // can create or destroy CAgnSimpleEntry objects + + CAgnSimpleEntry(CCalEntry::TType aType); + virtual ~CAgnSimpleEntry(); + + // overload new operator to allocate CAgnSimpleEntry object with CAgnSimpleEntryAllocator + + TAny* operator new(TUint aSize, TLeave aType, CAgnSimpleEntryAllocator* aAllocator); + + void StartTimeChanged(); + +private: + CAgnRptDef* iRptDef; // contains the repeat definition plus exceptions + TAgnEntryId iEntryId; // the entry Id + TCalLocalUid iLocalUid; // the unique Id + TUint32 iGuidHash; // the hash of Guid + TAgnCalendarTime iStartTime; + TAgnCalendarTime iEndTime; + TTime iLastModifiedDateUtc; + TTime iCompletedDateUtc; // todos only + TInt32 iAlarmOffset; + TUint8 iType; + TUint8 iPriority; + TUint8 iStatus; + TUint8 iReserved; // This exists whether declared or not because of the 4-byte memory boundaries + TCalCollectionId iCollectionId; + + TUint32 iUserInt; //the field has been moved to simple entry since PREQ2049 + }; + +#endif