epoc32/include/app/calentry.h
author William Roberts <williamr@symbian.org>
Wed, 31 Mar 2010 12:33:34 +0100
branchSymbian3
changeset 4 837f303aceeb
parent 3 e1b950c65cb4
permissions -rw-r--r--
Current Symbian^3 public API header files (from PDK 3.0.h)
This is the epoc32/include tree with the "platform" subtrees removed, and
all but a selected few mbg and rsg files removed.
williamr@2
     1
// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
williamr@2
     2
// All rights reserved.
williamr@2
     3
// This component and the accompanying materials are made available
williamr@4
     4
// under the terms of "Eclipse Public License v1.0"
williamr@2
     5
// which accompanies this distribution, and is available
williamr@4
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
williamr@2
     7
//
williamr@2
     8
// Initial Contributors:
williamr@2
     9
// Nokia Corporation - initial contribution.
williamr@2
    10
//
williamr@2
    11
// Contributors:
williamr@2
    12
//
williamr@2
    13
// Description:
williamr@2
    14
//
williamr@2
    15
williamr@2
    16
#ifndef __CALENTRY_H__
williamr@2
    17
#define __CALENTRY_H__
williamr@2
    18
williamr@2
    19
#include <calcommon.h>
williamr@2
    20
williamr@4
    21
/** Minimum latitude in degrees.
williamr@4
    22
@see CCalGeoValue::SetLatLongL
williamr@4
    23
@publishedAll
williamr@4
    24
@released
williamr@4
    25
*/
williamr@2
    26
const TReal KCalGEOMinLatitude = -90;
williamr@4
    27
williamr@4
    28
/** Maximum latitude in degrees.
williamr@4
    29
@see CCalGeoValue::SetLatLongL
williamr@4
    30
@publishedAll
williamr@4
    31
@released
williamr@4
    32
*/
williamr@2
    33
const TReal KCalGEOMaxLatitude  = 90;
williamr@4
    34
williamr@4
    35
/** Minimum longitude in degrees.
williamr@4
    36
@see CCalGeoValue::SetLatLongL
williamr@4
    37
@publishedAll
williamr@4
    38
@released
williamr@4
    39
*/
williamr@2
    40
const TReal KCalGEOMinLongitude = -180;
williamr@4
    41
williamr@4
    42
/** Maximum longitude in degrees.
williamr@4
    43
@see CCalGeoValue::SetLatLongL
williamr@4
    44
@publishedAll
williamr@4
    45
@released
williamr@4
    46
*/
williamr@2
    47
const TReal KCalGEOMaxLongitude  = 180;
williamr@2
    48
williamr@4
    49
/** Maximum number of decimal places for longitude and latitude values.
williamr@4
    50
The position specified to CCalGeoValue::SetLatLongL will be truncated 
williamr@4
    51
to KGEOMaxDecimalPoint decimal places
williamr@4
    52
@see CCalGeoValue::SetLatLongL
williamr@4
    53
@publishedAll
williamr@4
    54
@released
williamr@4
    55
*/
williamr@2
    56
const TUint KCalGEOMaxDecimalPlaces = 6;
williamr@2
    57
williamr@2
    58
class CCalAlarm;
williamr@2
    59
class CCalAttachment;
williamr@2
    60
class CCalAttendee;
williamr@2
    61
class CCalCategory;
williamr@2
    62
class CCalEntryImpl;
williamr@2
    63
class CCalGeoValue;
williamr@2
    64
class CCalUser;
williamr@2
    65
class CTzRules;
williamr@2
    66
class TCalRRule;
williamr@2
    67
class CCalEntryIdImpl;
williamr@2
    68
williamr@2
    69
/** Class representing a calendar entry. This can be an appointment, to-do
williamr@2
    70
item, reminder, event or anniversary.
williamr@2
    71
williamr@2
    72
CCalEntry contains information about a calendar entry, including
williamr@2
    73
a repeat definition, synchronisation information, and group scheduling data.
williamr@2
    74
williamr@2
    75
A repeating calendar entry has more than one occurrence. Instances are
williamr@2
    76
represented by the CCalInstance class.
williamr@2
    77
williamr@2
    78
Synchronisation information includes a record of the date/time the entry was
williamr@2
    79
last modified. This can be found by calling the LastModifiedDateL() function.
williamr@2
    80
williamr@2
    81
@publishedAll
williamr@2
    82
@released
williamr@2
    83
*/
williamr@2
    84
NONSHARABLE_CLASS(CCalEntry) : public CBase
williamr@2
    85
	{
williamr@2
    86
public:
williamr@2
    87
	/** Defines the type of the calendar entry.
williamr@2
    88
	@publishedAll
williamr@2
    89
	@released
williamr@2
    90
	*/
williamr@2
    91
	enum TType
williamr@2
    92
		{
williamr@2
    93
		/** An appointment, which has a start time and end time. */
williamr@2
    94
		EAppt,
williamr@2
    95
		/** 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
    96
		ETodo,
williamr@2
    97
		/** An event, which has a start time and end time. */
williamr@2
    98
		EEvent,
williamr@2
    99
		/** A reminder, which has a start time only. */
williamr@2
   100
		EReminder,
williamr@2
   101
		/** An anniversary, which has a start time and end time. */
williamr@2
   102
		EAnniv
williamr@2
   103
		};
williamr@2
   104
williamr@2
   105
	/** Defines the possible status values of the entry.
williamr@2
   106
	There are values here to support both iCalendar (RFC 2445) and vCalendar v1.0 STATUS properties.
williamr@2
   107
	Enumerated values for vCalendar v1.0 contain the prefix 'EVCal'.
williamr@2
   108
	@publishedAll
williamr@2
   109
	@released
williamr@2
   110
	*/
williamr@2
   111
	enum TStatus
williamr@2
   112
		{
williamr@2
   113
		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The event is tentative. */
williamr@2
   114
		ETentative,
williamr@2
   115
		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The event has been confirmed. */
williamr@2
   116
		EConfirmed,
williamr@2
   117
		/** Used to support iCalendar (RFC 2445). The event has been cancelled. */
williamr@2
   118
		ECancelled,
williamr@2
   119
		/** Used to support iCalendar (RFC 2445). The to-do entry needs action. */
williamr@2
   120
		ETodoNeedsAction,
williamr@2
   121
		/** Used to support iCalendar (RFC 2445) and vCalendar 1.0. The to-do entry has been completed. */
williamr@2
   122
		ETodoCompleted,
williamr@2
   123
		/** Used to support iCalendar (RFC 2445). The to-do entry is in progress. */
williamr@2
   124
		ETodoInProcess,
williamr@2
   125
		/** No status is set. */
williamr@2
   126
		ENullStatus,
williamr@2
   127
		
williamr@2
   128
		/** Used to support vCalendar 1.0. The entry has been accepted. */
williamr@2
   129
		EVCalAccepted,
williamr@2
   130
		/** Used to support vCalendar 1.0. The entry needs action. */
williamr@2
   131
		EVCalNeedsAction, 
williamr@2
   132
		/** Used to support vCalendar 1.0. The entry has been sent. */
williamr@2
   133
		EVCalSent, 
williamr@2
   134
		/** Used to support vCalendar 1.0. The entry has been declined. */
williamr@2
   135
		EVCalDeclined,
williamr@2
   136
		/** Used to support vCalendar 1.0. The entry has been delegated. */
williamr@2
   137
		EVCalDelegated,
williamr@2
   138
		};
williamr@2
   139
williamr@2
   140
	/** Replication status.
williamr@2
   141
	@publishedAll
williamr@2
   142
	@released
williamr@2
   143
	*/
williamr@2
   144
	enum TReplicationStatus
williamr@2
   145
		{
williamr@2
   146
		/** No restriction on access. */
williamr@2
   147
		EOpen,
williamr@2
   148
		/** Data is private (no access). */
williamr@2
   149
		EPrivate,
williamr@2
   150
		/** Data is confidential (restricted access). */
williamr@2
   151
		ERestricted
williamr@2
   152
		};
williamr@2
   153
williamr@2
   154
	/** The method property of a Group Scheduling entry.
williamr@2
   155
	@publishedAll
williamr@2
   156
	@released
williamr@2
   157
	*/
williamr@2
   158
	enum TMethod
williamr@2
   159
		{
williamr@2
   160
		/** The RFC2445-defined method value 'None'. */
williamr@2
   161
		EMethodNone,
williamr@2
   162
		/** The RFC2445-defined method value 'Publish'. */
williamr@2
   163
		EMethodPublish,
williamr@2
   164
		/** The RFC2445-defined method value 'Request'. */
williamr@2
   165
		EMethodRequest,
williamr@2
   166
		/** The RFC2445-defined method value 'Reply'. */
williamr@2
   167
		EMethodReply,
williamr@2
   168
		/** The RFC2445-defined method value 'Add'. */
williamr@2
   169
		EMethodAdd,
williamr@2
   170
		/** The RFC2445-defined method value 'Cancel'. */
williamr@2
   171
		EMethodCancel,
williamr@2
   172
		/** The RFC2445-defined method value 'Refresh'. */
williamr@2
   173
		EMethodRefresh,
williamr@2
   174
		/** The RFC2445-defined method value 'Counter'. */
williamr@2
   175
		EMethodCounter,
williamr@2
   176
		/** The RFC2445-defined method value 'DeclineCounter'. */
williamr@2
   177
		EMethodDeclineCounter
williamr@2
   178
		};
williamr@2
   179
williamr@2
   180
	/** Specify which entry details are to be copied in CCalEntry::CopyFromL functions.
williamr@2
   181
	@publishedAll
williamr@2
   182
	@released
williamr@2
   183
	*/
williamr@2
   184
	enum TCopyType
williamr@2
   185
		{
williamr@2
   186
		/** Copy the ID of the entry */
williamr@2
   187
		ECopyAll,
williamr@2
   188
		/** Dont copy ID of the entry */
williamr@2
   189
		EDontCopyId
williamr@2
   190
		};
williamr@2
   191
williamr@2
   192
	/** The busy status of an entry and corresponds to the TRANSP property in the iCalendar (RFC 2445) and vCalendar specifications.
williamr@2
   193
	In the vCalendar specification, the TRANSP property can be any positive integer value. 0 is opaque and blocks time, 1 
williamr@2
   194
	is transparent and doesn't block time. Any higher values have an implementation-specific meaning.
williamr@2
   195
	In the iCalendar specification (RFC 2445), the TRANSP property can be either OPAQUE (blocks time) or TRANSPARENT (doesn't block time).
williamr@2
   196
	@publishedPartner
williamr@4
   197
	@released
williamr@2
   198
	*/
williamr@2
   199
	enum TTransp
williamr@2
   200
		{
williamr@2
   201
		/** The entry blocks time. */
williamr@2
   202
		ETranspBusy,
williamr@2
   203
		/** The entry doesn't block time. */
williamr@2
   204
		ETranspFree,
williamr@2
   205
		/** The entry is tentative and blocks time. */
williamr@2
   206
		ETranspTentative,
williamr@2
   207
		/** The entry is an out-of-office calendar event and blocks time. */
williamr@2
   208
		ETranspOutOfOffice,
williamr@2
   209
		};
williamr@2
   210
williamr@2
   211
	// Construction / Destruction
williamr@2
   212
	IMPORT_C static CCalEntry* NewL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum);
williamr@2
   213
	IMPORT_C static CCalEntry* NewL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum,
williamr@2
   214
					const TCalTime& aRecurrenceId, CalCommon::TRecurrenceRange aRange);
williamr@2
   215
williamr@2
   216
	IMPORT_C ~CCalEntry();
williamr@2
   217
williamr@2
   218
	// Date and Time
williamr@2
   219
	IMPORT_C TCalTime StartTimeL() const;
williamr@2
   220
	IMPORT_C TCalTime EndTimeL() const;
williamr@2
   221
	IMPORT_C void SetStartAndEndTimeL(const TCalTime& aStartTime, const TCalTime& aEndTime);
williamr@2
   222
williamr@2
   223
	IMPORT_C void SetLastModifiedDateL();
williamr@2
   224
	IMPORT_C void SetLastModifiedDateL(const TCalTime& aModifiedTime);
williamr@2
   225
	IMPORT_C TCalTime LastModifiedDateL() const;
williamr@2
   226
williamr@2
   227
	IMPORT_C void SetDTStampL(const TCalTime& aTime);
williamr@2
   228
	IMPORT_C TCalTime DTStampL() const;
williamr@2
   229
williamr@2
   230
	IMPORT_C TCalTime CompletedTimeL() const;
williamr@2
   231
	IMPORT_C void SetCompletedL(TBool aCompleted, const TCalTime& aTime);
williamr@2
   232
williamr@2
   233
	// Repeat rules / RDate / ExDate Methods
williamr@2
   234
	IMPORT_C void SetRRuleL(const TCalRRule& aRule);
williamr@2
   235
	IMPORT_C TBool GetRRuleL(TCalRRule& aRule) const;
williamr@2
   236
williamr@2
   237
	IMPORT_C void SetRDatesL(const RArray<TCalTime>& aRDateList);
williamr@2
   238
	IMPORT_C void GetRDatesL(RArray<TCalTime>& aRDateList) const;
williamr@2
   239
williamr@2
   240
	IMPORT_C void SetExceptionDatesL(const RArray<TCalTime>& aExDateList);
williamr@2
   241
	IMPORT_C void GetExceptionDatesL(RArray<TCalTime>& aExDateList) const;
williamr@2
   242
williamr@2
   243
	IMPORT_C void ClearRepeatingPropertiesL();
williamr@2
   244
	
williamr@2
   245
	// Entry alarm
williamr@2
   246
	IMPORT_C void SetAlarmL(CCalAlarm* aAlarm);
williamr@2
   247
	IMPORT_C CCalAlarm* AlarmL() const;
williamr@2
   248
williamr@2
   249
	// Comparison
williamr@2
   250
	IMPORT_C TBool CompareL(const CCalEntry& aEntry) const;
williamr@2
   251
williamr@2
   252
 	// Copy
williamr@2
   253
 	IMPORT_C void CopyFromL(const CCalEntry& aOther);
williamr@2
   254
	IMPORT_C void CopyFromL(const CCalEntry& aOther, TCopyType aCopyType);
williamr@2
   255
williamr@2
   256
	// Text Fields
williamr@2
   257
	IMPORT_C void SetSummaryL(const TDesC& aSummary);
williamr@2
   258
	IMPORT_C const TDesC& SummaryL() const;
williamr@2
   259
	IMPORT_C void SetDescriptionL(const TDesC& aDescription);
williamr@2
   260
	IMPORT_C const TDesC& DescriptionL() const;
williamr@2
   261
	IMPORT_C void SetLocationL(const TDesC& aLocation);
williamr@2
   262
	IMPORT_C const TDesC& LocationL() const;
williamr@2
   263
williamr@2
   264
	// Category list
williamr@2
   265
	IMPORT_C void AddCategoryL(CCalCategory* aCategory);
williamr@2
   266
	IMPORT_C void DeleteCategoryL(TInt aIndex);
williamr@2
   267
	IMPORT_C const RPointerArray<CCalCategory>& CategoryListL();
williamr@2
   268
williamr@2
   269
	//	Attendee Methods
williamr@2
   270
	IMPORT_C void AddAttendeeL(CCalAttendee* aAttendee);
williamr@2
   271
	IMPORT_C void DeleteAttendeeL(TInt aIndex);
williamr@2
   272
	IMPORT_C RPointerArray<CCalAttendee>& AttendeesL() const;
williamr@2
   273
	IMPORT_C void SetOrganizerL(CCalUser* aUser);
williamr@2
   274
	IMPORT_C CCalUser* OrganizerL() const;
williamr@2
   275
	IMPORT_C void SetPhoneOwnerL(const CCalUser* aOwner);
williamr@2
   276
	IMPORT_C CCalUser* PhoneOwnerL() const;
williamr@2
   277
williamr@2
   278
	// Attachments
williamr@2
   279
	IMPORT_C void AddAttachmentL(CCalAttachment& aAttachment);
williamr@2
   280
	IMPORT_C void DeleteAttachmentL(const CCalAttachment& aAttachment);
williamr@2
   281
	IMPORT_C CCalAttachment* AttachmentL(TInt aIndex) const;
williamr@2
   282
	IMPORT_C TInt AttachmentCountL() const;
williamr@2
   283
	// Other Attributes
williamr@2
   284
	IMPORT_C TType EntryTypeL() const;
williamr@2
   285
	IMPORT_C void SetStatusL(TStatus aStatus);
williamr@2
   286
	IMPORT_C TStatus StatusL() const;
williamr@2
   287
williamr@2
   288
	IMPORT_C void SetReplicationStatusL(TReplicationStatus aReplicationStatus);
williamr@2
   289
	IMPORT_C TReplicationStatus ReplicationStatusL() const;
williamr@2
   290
williamr@2
   291
	IMPORT_C void SetPriorityL(TUint aPriority);
williamr@2
   292
	IMPORT_C TUint PriorityL() const;
williamr@2
   293
williamr@2
   294
	IMPORT_C void SetMethodL(TMethod aMethod);
williamr@2
   295
	IMPORT_C TMethod MethodL() const;
williamr@2
   296
	IMPORT_C void SetSequenceNumberL(TInt aSeq);
williamr@2
   297
	IMPORT_C TInt SequenceNumberL() const;
williamr@2
   298
	IMPORT_C const TDesC8& UidL() const;
williamr@2
   299
	IMPORT_C TCalTime RecurrenceIdL() const;
williamr@2
   300
	IMPORT_C CalCommon::TRecurrenceRange RecurrenceRangeL() const;
williamr@2
   301
williamr@2
   302
	IMPORT_C CTzRules* TzRulesL() const;
williamr@2
   303
	IMPORT_C void SetTzRulesL(const CTzRules& aTzRule);
williamr@2
   304
	IMPORT_C void SetTzRulesL();
williamr@2
   305
williamr@2
   306
	IMPORT_C void SetLocalUidL(TCalLocalUid aLocalId);
williamr@2
   307
	IMPORT_C TCalLocalUid LocalUidL() const;
williamr@2
   308
williamr@2
   309
	IMPORT_C TTransp TimeTransparencyL() const;
williamr@2
   310
	IMPORT_C void SetTimeTransparencyL(TTransp aBusyStatus);
williamr@2
   311
williamr@2
   312
	IMPORT_C CCalGeoValue* GeoValueL() const;
williamr@2
   313
	IMPORT_C void SetGeoValueL(const CCalGeoValue& aGeoValue);
williamr@2
   314
	IMPORT_C void ClearGeoValueL();
williamr@2
   315
williamr@2
   316
	IMPORT_C TCalTime NextInstanceForLocalUIDL(const TCalTime& aTime) const;
williamr@2
   317
	IMPORT_C TCalTime PreviousInstanceForLocalUIDL(const TCalTime& aTime) const;
williamr@4
   318
williamr@2
   319
	IMPORT_C TCalTime FindRptUntilTimeL(TInt aCount);
williamr@4
   320
    
williamr@2
   321
public:
williamr@2
   322
	// Internal APIs
williamr@2
   323
	static CCalEntry* NewL(CCalEntryImpl* aImpl);
williamr@2
   324
	CCalEntryImpl* Impl() const;
williamr@4
   325
	TUint8 ShortFileIdL();
williamr@4
   326
williamr@2
   327
private:
williamr@2
   328
	void ConstructL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum, const TCalTime& aRecurrenceId, CalCommon::TRecurrenceRange aRange);
williamr@2
   329
	void ConstructL(TType aType, HBufC8* aUid, TMethod aMethod, TUint aSeqNum);
williamr@2
   330
	void ConstructL(CCalEntryImpl* aImpl);
williamr@2
   331
williamr@2
   332
private: // member data
williamr@2
   333
	CCalEntryImpl* iImpl;
williamr@2
   334
	};
williamr@2
   335
williamr@2
   336
williamr@2
   337
/** Class representing a uniquely identifiable calendar entry in a calendar file.
williamr@2
   338
williamr@2
   339
@publishedAll
williamr@2
   340
@released
williamr@2
   341
*/
williamr@2
   342
NONSHARABLE_CLASS(CCalEntryId) : public CBase
williamr@2
   343
	{
williamr@2
   344
public:
williamr@2
   345
	IMPORT_C static CCalEntryId* NewL(TDesC8* aFlatData);
williamr@2
   346
	IMPORT_C ~CCalEntryId();
williamr@2
   347
	IMPORT_C TPtrC8 IdL();
williamr@2
   348
	IMPORT_C TPtrC StoreFileNameL();
williamr@2
   349
	IMPORT_C TCalTime RecurrenceIdL();
williamr@2
   350
	IMPORT_C TCalTime InstanceTimeL() const;
williamr@2
   351
	IMPORT_C TCalLocalUid LocalUidL() const;
williamr@2
   352
private:
williamr@2
   353
	CCalEntryId();
williamr@2
   354
private:
williamr@2
   355
	CCalEntryIdImpl* iImpl;
williamr@2
   356
	};
williamr@2
   357
williamr@2
   358
williamr@2
   359
/** Class representing the geographical location of a calendar entry.
williamr@2
   360
This corresponds to the GEO property as defined in vCalendar / iCalendar (RFC 2445). It contains a latitude and a longitude.
williamr@4
   361
@publishedAll
williamr@4
   362
@released
williamr@2
   363
*/
williamr@2
   364
NONSHARABLE_CLASS(CCalGeoValue) : public CBase
williamr@2
   365
	{
williamr@2
   366
public:
williamr@2
   367
	IMPORT_C static CCalGeoValue* NewL();
williamr@2
   368
	IMPORT_C ~CCalGeoValue();
williamr@2
   369
	IMPORT_C void SetLatLongL(const TReal& aLatitude, const TReal& aLongitude);
williamr@2
   370
	IMPORT_C TBool GetLatLong(TReal& aLatitude, TReal& aLongitude) const;
williamr@2
   371
private:
williamr@2
   372
	CCalGeoValue();
williamr@2
   373
private:
williamr@2
   374
	TReal iLatitude;
williamr@2
   375
	TReal iLongitude;
williamr@2
   376
	};
williamr@2
   377
williamr@2
   378
#endif // __CALENTRY_H__
williamr@4
   379