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@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.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 __CALENTRY_H__ williamr@2: #define __CALENTRY_H__ williamr@2: williamr@2: #include williamr@2: williamr@4: /** Minimum latitude in degrees. williamr@4: @see CCalGeoValue::SetLatLongL williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@2: const TReal KCalGEOMinLatitude = -90; williamr@4: williamr@4: /** Maximum latitude in degrees. williamr@4: @see CCalGeoValue::SetLatLongL williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@2: const TReal KCalGEOMaxLatitude = 90; williamr@4: williamr@4: /** Minimum longitude in degrees. williamr@4: @see CCalGeoValue::SetLatLongL williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@2: const TReal KCalGEOMinLongitude = -180; williamr@4: williamr@4: /** Maximum longitude in degrees. williamr@4: @see CCalGeoValue::SetLatLongL williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@2: const TReal KCalGEOMaxLongitude = 180; williamr@2: williamr@4: /** Maximum number of decimal places for longitude and latitude values. williamr@4: The position specified to CCalGeoValue::SetLatLongL will be truncated williamr@4: to KGEOMaxDecimalPoint decimal places williamr@4: @see CCalGeoValue::SetLatLongL williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@2: const TUint KCalGEOMaxDecimalPlaces = 6; williamr@2: williamr@2: class CCalAlarm; williamr@2: class CCalAttachment; williamr@2: class CCalAttendee; williamr@2: class CCalCategory; williamr@2: class CCalEntryImpl; williamr@2: class CCalGeoValue; williamr@2: class CCalUser; williamr@2: class CTzRules; williamr@2: class TCalRRule; williamr@2: class CCalEntryIdImpl; williamr@2: williamr@2: /** Class representing a calendar entry. This can be an appointment, to-do williamr@2: item, reminder, event or anniversary. williamr@2: williamr@2: CCalEntry contains information about a calendar entry, including williamr@2: a repeat definition, synchronisation information, and group scheduling data. williamr@2: williamr@2: A repeating calendar entry has more than one occurrence. Instances are williamr@2: represented by the CCalInstance class. williamr@2: williamr@2: Synchronisation information includes a record of the date/time the entry was williamr@2: last modified. This can be found by calling the LastModifiedDateL() function. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: NONSHARABLE_CLASS(CCalEntry) : public CBase williamr@2: { williamr@2: public: williamr@2: /** Defines the type of the calendar entry. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TType williamr@2: { williamr@2: /** An appointment, which has a start time and end time. */ williamr@2: EAppt, williamr@2: /** A to-do, which can have a start time and end time (the end time is the due date), or can be undated. */ williamr@2: ETodo, williamr@2: /** An event, which has a start time and end time. */ williamr@2: EEvent, williamr@2: /** A reminder, which has a start time only. */ williamr@2: EReminder, williamr@2: /** An anniversary, which has a start time and end time. */ williamr@2: EAnniv williamr@2: }; williamr@2: williamr@2: /** Defines the possible status values of the entry. williamr@2: There are values here to support both iCalendar (RFC 2445) and vCalendar v1.0 STATUS properties. williamr@2: Enumerated values for vCalendar v1.0 contain the prefix 'EVCal'. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TStatus williamr@2: { williamr@2: /** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The event is tentative. */ williamr@2: ETentative, williamr@2: /** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The event has been confirmed. */ williamr@2: EConfirmed, williamr@2: /** Used to support iCalendar (RFC 2445). The event has been cancelled. */ williamr@2: ECancelled, williamr@2: /** Used to support iCalendar (RFC 2445). The to-do entry needs action. */ williamr@2: ETodoNeedsAction, williamr@2: /** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The to-do entry has been completed. */ williamr@2: ETodoCompleted, williamr@2: /** Used to support iCalendar (RFC 2445). The to-do entry is in progress. */ williamr@2: ETodoInProcess, williamr@2: /** No status is set. */ williamr@2: ENullStatus, williamr@2: williamr@2: /** Used to support vCalendar 1.0. The entry has been accepted. */ williamr@2: EVCalAccepted, williamr@2: /** Used to support vCalendar 1.0. The entry needs action. */ williamr@2: EVCalNeedsAction, williamr@2: /** Used to support vCalendar 1.0. The entry has been sent. */ williamr@2: EVCalSent, williamr@2: /** Used to support vCalendar 1.0. The entry has been declined. */ williamr@2: EVCalDeclined, williamr@2: /** Used to support vCalendar 1.0. The entry has been delegated. */ williamr@2: EVCalDelegated, williamr@2: }; williamr@2: williamr@2: /** Replication status. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TReplicationStatus williamr@2: { williamr@2: /** No restriction on access. */ williamr@2: EOpen, williamr@2: /** Data is private (no access). */ williamr@2: EPrivate, williamr@2: /** Data is confidential (restricted access). */ williamr@2: ERestricted williamr@2: }; williamr@2: williamr@2: /** The method property of a Group Scheduling entry. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TMethod williamr@2: { williamr@2: /** The RFC2445-defined method value 'None'. */ williamr@2: EMethodNone, williamr@2: /** The RFC2445-defined method value 'Publish'. */ williamr@2: EMethodPublish, williamr@2: /** The RFC2445-defined method value 'Request'. */ williamr@2: EMethodRequest, williamr@2: /** The RFC2445-defined method value 'Reply'. */ williamr@2: EMethodReply, williamr@2: /** The RFC2445-defined method value 'Add'. */ williamr@2: EMethodAdd, williamr@2: /** The RFC2445-defined method value 'Cancel'. */ williamr@2: EMethodCancel, williamr@2: /** The RFC2445-defined method value 'Refresh'. */ williamr@2: EMethodRefresh, williamr@2: /** The RFC2445-defined method value 'Counter'. */ williamr@2: EMethodCounter, williamr@2: /** The RFC2445-defined method value 'DeclineCounter'. */ williamr@2: EMethodDeclineCounter williamr@2: }; williamr@2: williamr@2: /** Specify which entry details are to be copied in CCalEntry::CopyFromL functions. williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: enum TCopyType williamr@2: { williamr@2: /** Copy the ID of the entry */ williamr@2: ECopyAll, williamr@2: /** Dont copy ID of the entry */ williamr@2: EDontCopyId williamr@2: }; williamr@2: williamr@2: /** The busy status of an entry and corresponds to the TRANSP property in the iCalendar (RFC 2445) and vCalendar specifications. williamr@2: In the vCalendar specification, the TRANSP property can be any positive integer value. 0 is opaque and blocks time, 1 williamr@2: is transparent and doesn't block time. Any higher values have an implementation-specific meaning. williamr@2: In the iCalendar specification (RFC 2445), the TRANSP property can be either OPAQUE (blocks time) or TRANSPARENT (doesn't block time). williamr@2: @publishedPartner williamr@4: @released williamr@2: */ williamr@2: enum TTransp williamr@2: { williamr@2: /** The entry blocks time. */ williamr@2: ETranspBusy, williamr@2: /** The entry doesn't block time. */ williamr@2: ETranspFree, williamr@2: /** The entry is tentative and blocks time. */ williamr@2: ETranspTentative, williamr@2: /** The entry is an out-of-office calendar event and blocks time. */ williamr@2: ETranspOutOfOffice, williamr@2: }; williamr@2: williamr@2: // Construction / Destruction williamr@2: IMPORT_C static CCalEntry* NewL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum); williamr@2: IMPORT_C static CCalEntry* NewL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum, williamr@2: const TCalTime& aRecurrenceId, CalCommon::TRecurrenceRange aRange); williamr@2: williamr@2: IMPORT_C ~CCalEntry(); williamr@2: williamr@2: // Date and Time williamr@2: IMPORT_C TCalTime StartTimeL() const; williamr@2: IMPORT_C TCalTime EndTimeL() const; williamr@2: IMPORT_C void SetStartAndEndTimeL(const TCalTime& aStartTime, const TCalTime& aEndTime); williamr@2: williamr@2: IMPORT_C void SetLastModifiedDateL(); williamr@2: IMPORT_C void SetLastModifiedDateL(const TCalTime& aModifiedTime); williamr@2: IMPORT_C TCalTime LastModifiedDateL() const; williamr@2: williamr@2: IMPORT_C void SetDTStampL(const TCalTime& aTime); williamr@2: IMPORT_C TCalTime DTStampL() const; williamr@2: williamr@2: IMPORT_C TCalTime CompletedTimeL() const; williamr@2: IMPORT_C void SetCompletedL(TBool aCompleted, const TCalTime& aTime); williamr@2: williamr@2: // Repeat rules / RDate / ExDate Methods williamr@2: IMPORT_C void SetRRuleL(const TCalRRule& aRule); williamr@2: IMPORT_C TBool GetRRuleL(TCalRRule& aRule) const; williamr@2: williamr@2: IMPORT_C void SetRDatesL(const RArray& aRDateList); williamr@2: IMPORT_C void GetRDatesL(RArray& aRDateList) const; williamr@2: williamr@2: IMPORT_C void SetExceptionDatesL(const RArray& aExDateList); williamr@2: IMPORT_C void GetExceptionDatesL(RArray& aExDateList) const; williamr@2: williamr@2: IMPORT_C void ClearRepeatingPropertiesL(); williamr@2: williamr@2: // Entry alarm williamr@2: IMPORT_C void SetAlarmL(CCalAlarm* aAlarm); williamr@2: IMPORT_C CCalAlarm* AlarmL() const; williamr@2: williamr@2: // Comparison williamr@2: IMPORT_C TBool CompareL(const CCalEntry& aEntry) const; williamr@2: williamr@2: // Copy williamr@2: IMPORT_C void CopyFromL(const CCalEntry& aOther); williamr@2: IMPORT_C void CopyFromL(const CCalEntry& aOther, TCopyType aCopyType); williamr@2: williamr@2: // Text Fields williamr@2: IMPORT_C void SetSummaryL(const TDesC& aSummary); williamr@2: IMPORT_C const TDesC& SummaryL() const; williamr@2: IMPORT_C void SetDescriptionL(const TDesC& aDescription); williamr@2: IMPORT_C const TDesC& DescriptionL() const; williamr@2: IMPORT_C void SetLocationL(const TDesC& aLocation); williamr@2: IMPORT_C const TDesC& LocationL() const; williamr@2: williamr@2: // Category list williamr@2: IMPORT_C void AddCategoryL(CCalCategory* aCategory); williamr@2: IMPORT_C void DeleteCategoryL(TInt aIndex); williamr@2: IMPORT_C const RPointerArray& CategoryListL(); williamr@2: williamr@2: // Attendee Methods williamr@2: IMPORT_C void AddAttendeeL(CCalAttendee* aAttendee); williamr@2: IMPORT_C void DeleteAttendeeL(TInt aIndex); williamr@2: IMPORT_C RPointerArray& AttendeesL() const; williamr@2: IMPORT_C void SetOrganizerL(CCalUser* aUser); williamr@2: IMPORT_C CCalUser* OrganizerL() const; williamr@2: IMPORT_C void SetPhoneOwnerL(const CCalUser* aOwner); williamr@2: IMPORT_C CCalUser* PhoneOwnerL() const; williamr@2: williamr@2: // Attachments williamr@2: IMPORT_C void AddAttachmentL(CCalAttachment& aAttachment); williamr@2: IMPORT_C void DeleteAttachmentL(const CCalAttachment& aAttachment); williamr@2: IMPORT_C CCalAttachment* AttachmentL(TInt aIndex) const; williamr@2: IMPORT_C TInt AttachmentCountL() const; williamr@2: // Other Attributes williamr@2: IMPORT_C TType EntryTypeL() const; williamr@2: IMPORT_C void SetStatusL(TStatus aStatus); williamr@2: IMPORT_C TStatus StatusL() const; williamr@2: williamr@2: IMPORT_C void SetReplicationStatusL(TReplicationStatus aReplicationStatus); williamr@2: IMPORT_C TReplicationStatus ReplicationStatusL() const; williamr@2: williamr@2: IMPORT_C void SetPriorityL(TUint aPriority); williamr@2: IMPORT_C TUint PriorityL() const; williamr@2: williamr@2: IMPORT_C void SetMethodL(TMethod aMethod); williamr@2: IMPORT_C TMethod MethodL() const; williamr@2: IMPORT_C void SetSequenceNumberL(TInt aSeq); williamr@2: IMPORT_C TInt SequenceNumberL() const; williamr@2: IMPORT_C const TDesC8& UidL() const; williamr@2: IMPORT_C TCalTime RecurrenceIdL() const; williamr@2: IMPORT_C CalCommon::TRecurrenceRange RecurrenceRangeL() const; williamr@2: williamr@2: IMPORT_C CTzRules* TzRulesL() const; williamr@2: IMPORT_C void SetTzRulesL(const CTzRules& aTzRule); williamr@2: IMPORT_C void SetTzRulesL(); williamr@2: williamr@2: IMPORT_C void SetLocalUidL(TCalLocalUid aLocalId); williamr@2: IMPORT_C TCalLocalUid LocalUidL() const; williamr@2: williamr@2: IMPORT_C TTransp TimeTransparencyL() const; williamr@2: IMPORT_C void SetTimeTransparencyL(TTransp aBusyStatus); williamr@2: williamr@2: IMPORT_C CCalGeoValue* GeoValueL() const; williamr@2: IMPORT_C void SetGeoValueL(const CCalGeoValue& aGeoValue); williamr@2: IMPORT_C void ClearGeoValueL(); williamr@2: williamr@2: IMPORT_C TCalTime NextInstanceForLocalUIDL(const TCalTime& aTime) const; williamr@2: IMPORT_C TCalTime PreviousInstanceForLocalUIDL(const TCalTime& aTime) const; williamr@4: williamr@2: IMPORT_C TCalTime FindRptUntilTimeL(TInt aCount); williamr@4: williamr@2: public: williamr@2: // Internal APIs williamr@2: static CCalEntry* NewL(CCalEntryImpl* aImpl); williamr@2: CCalEntryImpl* Impl() const; williamr@4: TUint8 ShortFileIdL(); williamr@4: williamr@2: private: williamr@2: void ConstructL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum, const TCalTime& aRecurrenceId, CalCommon::TRecurrenceRange aRange); williamr@2: void ConstructL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum); williamr@2: void ConstructL(CCalEntryImpl* aImpl); williamr@2: williamr@2: private: // member data williamr@2: CCalEntryImpl* iImpl; williamr@2: }; williamr@2: williamr@2: williamr@2: /** Class representing a uniquely identifiable calendar entry in a calendar file. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: NONSHARABLE_CLASS(CCalEntryId) : public CBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CCalEntryId* NewL(TDesC8* aFlatData); williamr@2: IMPORT_C ~CCalEntryId(); williamr@2: IMPORT_C TPtrC8 IdL(); williamr@2: IMPORT_C TPtrC StoreFileNameL(); williamr@2: IMPORT_C TCalTime RecurrenceIdL(); williamr@2: IMPORT_C TCalTime InstanceTimeL() const; williamr@2: IMPORT_C TCalLocalUid LocalUidL() const; williamr@2: private: williamr@2: CCalEntryId(); williamr@2: private: williamr@2: CCalEntryIdImpl* iImpl; williamr@2: }; williamr@2: williamr@2: williamr@2: /** Class representing the geographical location of a calendar entry. williamr@2: This corresponds to the GEO property as defined in vCalendar / iCalendar (RFC 2445). It contains a latitude and a longitude. williamr@4: @publishedAll williamr@4: @released williamr@2: */ williamr@2: NONSHARABLE_CLASS(CCalGeoValue) : public CBase williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CCalGeoValue* NewL(); williamr@2: IMPORT_C ~CCalGeoValue(); williamr@2: IMPORT_C void SetLatLongL(const TReal& aLatitude, const TReal& aLongitude); williamr@2: IMPORT_C TBool GetLatLong(TReal& aLatitude, TReal& aLongitude) const; williamr@2: private: williamr@2: CCalGeoValue(); williamr@2: private: williamr@2: TReal iLatitude; williamr@2: TReal iLongitude; williamr@2: }; williamr@2: williamr@2: #endif // __CALENTRY_H__ williamr@4: