pimappservices/calendarvcalplugin/Inc/agmvcal.h
changeset 0 f979ecb2b13e
child 18 c198609911f9
equal deleted inserted replaced
-1:000000000000 0:f979ecb2b13e
       
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @internalComponent 
       
    19 */
       
    20 
       
    21 #ifndef __AGMVCAL_H__
       
    22 #define __AGMVCAL_H__
       
    23 
       
    24 
       
    25 #include <vcal.h>
       
    26 #include <apgdoor.h>
       
    27 #include <concnf.h>
       
    28 #include <confndr.h>
       
    29 #include <conlist.h>
       
    30 
       
    31 #include <tz.h>
       
    32 #include <tzconverter.h>
       
    33 #include <calcategory.h>
       
    34 #include <calentry.h>
       
    35 
       
    36 // Maximum characters in a GEO value should be 11 = -NNN.NNNNNN
       
    37 const TUint KGEOMaxWidthOfGeoValue = 11;
       
    38 
       
    39 const TUid KUidApaDoorStateStream={0x1000012a};
       
    40 //const TUid KUidApaDoorDocStream={0x10000144};
       
    41 const TUid KPlainTextToWordConverterUid={0x10001823};
       
    42 const TUid KWordToPlainTextConverterUid={0x10001824};
       
    43 const TUid KUidEtextToText={0x100040C8};
       
    44 const TUid KUidTextToEtext={0x100040C7};
       
    45 const TUid KUidTextToEtextNoTrim={0x10281B4C};
       
    46 const TInt KConverterBufferSize = 1024;
       
    47 
       
    48 // Extended VCal fields
       
    49 
       
    50 _LIT(KVCalTokenENTRYTYPE,"AGENDAENTRYTYPE"); // for externalizing
       
    51 _LIT(KVCalTokenXDASHENTRYTYPE,"X-EPOCAGENDAENTRYTYPE"); // for internalizing
       
    52 _LIT8(KVCalToken8ENTRYTYPE,"AGENDAENTRYTYPE"); // for externalizing
       
    53 _LIT8(KVCalToken8XDASHENTRYTYPE,"X-EPOCAGENDAENTRYTYPE"); // for internalizing
       
    54 
       
    55 _LIT(KVCalTokenTypeAPPT,"APPOINTMENT");
       
    56 _LIT(KVCalTokenTypeANNIV,"ANNIVERSARY");
       
    57 _LIT(KVCalTokenTypeEVENT,"EVENT");
       
    58 _LIT(KVCalTokenTypeTODO,"TODO");
       
    59 _LIT(KVCalTokenTypeREMINDER,"REMINDER");
       
    60 
       
    61 _LIT(KVCalTokenPUBLIC,"PUBLIC");
       
    62 _LIT(KVCalTokenPRIVATE,"PRIVATE");
       
    63 _LIT(KVCalTokenCONFIDENTIAL,"CONFIDENTIAL");
       
    64 
       
    65 _LIT(KVCalTokenTYPE,"TYPE");
       
    66 _LIT8(KVCalToken8TYPE,"TYPE");
       
    67 _LIT8(KVCalToken8RANGE,"RANGE");
       
    68 _LIT(KVCalValueEPOCSOUND,"X-EPOCSOUND");
       
    69 _LIT8(KVCalValue8EPOCSOUND,"X-EPOCSOUND");
       
    70 _LIT8(KVCalAlarmActionType, "X-CONTENTTYPE");
       
    71 _LIT8(KVCalAlarmActionTypeValue, "VALUE");
       
    72 _LIT8(KVCalContentValueUrl, "URL");
       
    73 _LIT8(KVCalContentValueInline, "INLINE");
       
    74 _LIT8(KVCalContentValueContentId, "CONTENT-ID");
       
    75 _LIT8(KVCalContentValueContentIdShort, "CID");
       
    76 _LIT8(KVCalAttachFileDate, "X-FILEDATE");
       
    77 
       
    78 
       
    79 //Recurence ID range
       
    80 _LIT8(KVCalRecurrenceIDRange8THISONLY,"THISONLY");
       
    81 _LIT8(KVCalRecurrenceIDRange8THISANDFUTURE,"THISANDFUTURE");
       
    82 _LIT8(KVCalRecurrenceIDRange8THISANDPRIOR,"THISANDPRIOR");
       
    83 
       
    84 // Attendee defines
       
    85 _LIT8(KICalAttendee8XDASHPHONEOWNER, 			"X-PHONEOWNER");
       
    86 
       
    87 _LIT(KVCalAttendeeROLE,"ROLE");
       
    88 _LIT(KVCalAttendeeSTATUS,"STATUS");
       
    89 _LIT(KVCalAttendeeRSVP,"RSVP");
       
    90 _LIT(KVCalAttendeeEXPECT,"EXPECT");
       
    91 _LIT8(KVCalAttendee8ROLE,"ROLE");
       
    92 _LIT8(KVCalAttendee8STATUS,"STATUS");
       
    93 _LIT8(KVCalAttendee8RSVP,"RSVP");
       
    94 _LIT8(KVCalAttendee8EXPECT,"EXPECT");
       
    95 
       
    96 _LIT(KVCalAttendeeRoleATTENDEE,"ATTENDEE");
       
    97 _LIT(KVCalAttendeeRoleORGANIZER,"ORGANIZER");
       
    98 _LIT(KVCalAttendeeRoleOWNER,"OWNER");
       
    99 _LIT(KVCalAttendeeRoleDELEGATE,"DELEGATE");
       
   100 _LIT8(KVCalAttendeeRole8ATTENDEE,"ATTENDEE");
       
   101 _LIT8(KVCalAttendeeRole8ORGANIZER,"ORGANIZER");
       
   102 _LIT8(KVCalAttendeeRole8OWNER,"OWNER");
       
   103 _LIT8(KVCalAttendeeRole8DELEGATE,"DELEGATE");
       
   104 
       
   105 _LIT(KVCalAttendeeStatusACCEPTED,"ACCEPTED");
       
   106 _LIT(KVCalAttendeeStatusNEEDSACTION,"NEEDS ACTION");
       
   107 _LIT(KVCalAttendeeStatusSENT,"SENT");
       
   108 _LIT(KVCalAttendeeStatusTENTATIVE,"TENTATIVE");
       
   109 _LIT(KVCalAttendeeStatusCONFIRMED,"CONFIRMED");
       
   110 _LIT(KVCalAttendeeStatusDECLINED,"DECLINED");
       
   111 _LIT(KVCalAttendeeStatusCOMPLETED,"COMPLETED");
       
   112 _LIT(KVCalAttendeeStatusDELEGATED,"DELEGATED");
       
   113 _LIT(KVCalAttendeeStatusXDASHRECEIVED,"X-RECEIVED"); // Epoc extension for received vCalendars
       
   114 _LIT8(KVCalAttendeeStatus8ACCEPTED,"ACCEPTED");
       
   115 _LIT8(KVCalAttendeeStatus8NEEDSACTION,"NEEDS ACTION");
       
   116 _LIT8(KVCalAttendeeStatus8SENT,"SENT");
       
   117 _LIT8(KVCalAttendeeStatus8TENTATIVE,"TENTATIVE");
       
   118 _LIT8(KVCalAttendeeStatus8CONFIRMED,"CONFIRMED");
       
   119 _LIT8(KVCalAttendeeStatus8DECLINED,"DECLINED");
       
   120 _LIT8(KVCalAttendeeStatus8COMPLETED,"COMPLETED");
       
   121 _LIT8(KVCalAttendeeStatus8DELEGATED,"DELEGATED");
       
   122 _LIT8(KVCalAttendeeStatus8XDASHRECEIVED,"X-RECEIVED"); // Epoc extension for received vCalendars
       
   123 
       
   124 //	iCal standard requires a hyphen for NEEDS ACTION value
       
   125 _LIT(KICalAttendeeCalStatusNEEDSACTION,"NEEDS-ACTION");
       
   126 _LIT8(KICalAttendeeCalStatus8NEEDSACTION,"NEEDS-ACTION");
       
   127 
       
   128 // iCal flags that we want to preserve in serialization
       
   129 _LIT(KICalAttendeeCalStatus,"X-STATUS");
       
   130 _LIT(KICalAttendeeCalRole,"X-ROLE");
       
   131 _LIT(KICalAttendeeCommonName,"X-CN");
       
   132 _LIT(KICalAttendeeSentBy,"X-SENTBY");
       
   133 _LIT8(KICalAttendeeCalStatus8,"X-STATUS");
       
   134 _LIT8(KICalAttendeeCalRole8,"X-ROLE");
       
   135 _LIT8(KICalAttendeeCommonName8,"X-CN");
       
   136 _LIT8(KICalAttendeeSentBy8,"X-SENTBY");
       
   137 
       
   138 // CalRole values
       
   139 _LIT(KICalAttendeeCalRoleOPTIONAL, "OPT-PARTICIPANT");
       
   140 _LIT(KICalAttendeeCalRoleNONPARTICIPANT, "NON-PARTICIPANT");
       
   141 _LIT(KICalAttendeeCalRoleREQUIRED, "REQ-PARTICIPANT");
       
   142 _LIT(KICalAttendeeCalRoleCHAIR, "CHAIR");
       
   143 _LIT8(KICalAttendeeCalRole8OPTIONAL, "OPT-PARTICIPANT");
       
   144 _LIT8(KICalAttendeeCalRole8NONPARTICIPANT, "NON-PARTICIPANT");
       
   145 _LIT8(KICalAttendeeCalRole8REQUIRED, "REQ-PARTICIPANT");
       
   146 _LIT8(KICalAttendeeCalRole8CHAIR, "CHAIR");
       
   147 //	the new ones
       
   148 _LIT(KICalAttendeeCalStatusINPROCESS, "IN-PROCESS");
       
   149 _LIT8(KICalAttendeeCalStatus8INPROCESS, "IN-PROCESS");
       
   150 
       
   151 _LIT(KVCalAttendeeRsvpYES,"YES");
       
   152 _LIT(KVCalAttendeeRsvpNO,"NO");
       
   153 _LIT8(KVCalAttendeeRsvp8YES,"YES");
       
   154 _LIT8(KVCalAttendeeRsvp8NO,"NO");
       
   155 
       
   156 _LIT(KVCalAttendeeExpectFYI,"FYI");
       
   157 _LIT(KVCalAttendeeExpectREQUIRE,"REQUIRE");
       
   158 _LIT(KVCalAttendeeExpectREQUEST,"REQUEST");
       
   159 _LIT(KVCalAttendeeExpectIMMEDIATE,"IMMEDIATE");
       
   160 _LIT8(KVCalAttendeeExpect8FYI,"FYI");
       
   161 _LIT8(KVCalAttendeeExpect8REQUIRE,"REQUIRE");
       
   162 _LIT8(KVCalAttendeeExpect8REQUEST,"REQUEST");
       
   163 _LIT8(KVCalAttendeeExpect8IMMEDIATE,"IMMEDIATE");
       
   164 
       
   165 // Categories property definitions
       
   166 _LIT(KVCalCategoriesAPPOINTMENT,"APPOINTMENT");
       
   167 _LIT(KVCalCategoriesBUSINESS,"BUSINESS");
       
   168 _LIT(KVCalCategoriesEDUCATION,"EDUCATION");
       
   169 _LIT(KVCalCategoriesHOLIDAY,"HOLIDAY");
       
   170 _LIT(KVCalCategoriesMEETING,"MEETING");
       
   171 _LIT(KVCalCategoriesMISCELLANEOUS,"MISCELLANEOUS");
       
   172 _LIT(KVCalCategoriesPERSONAL,"PERSONAL");
       
   173 _LIT(KVCalCategoriesPHONECALL,"PHONECALL");
       
   174 _LIT(KVCalCategoriesSICKDAY,"SICKDAY");
       
   175 _LIT(KVCalCategoriesSPECIALOCCASION,"SPECIALOCCASION");
       
   176 _LIT(KVCalCategoriesTRAVEL,"TRAVEL");
       
   177 _LIT(KVCalCategoriesVACATION,"VACATION");
       
   178 _LIT(KVCalTokenXDash,"X-"); // same as KVersitTokenXDash but not explicitly narrow
       
   179 
       
   180 // Status property
       
   181 _LIT(KVCalTokenVarCOMPLETED, "COMPLETED");
       
   182 _LIT(KVCalTokenVarSTATUS,	 "STATUS");
       
   183 _LIT(KVCalStatusACCEPTED, "ACCEPTED");
       
   184 _LIT(KVCalStatusSENT,		"SENT");
       
   185 _LIT(KVCalStatusNEEDSACTION, "NEEDS ACTION");
       
   186 _LIT(KVCalStatusTENTATIVE, "TENTATIVE");
       
   187 _LIT(KVCalStatusCONFIRMED, "CONFIRMED");
       
   188 _LIT(KVCalStatusDECLINED, "DECLINED");
       
   189 _LIT(KVCalStatusCOMPLETED, "COMPLETED");
       
   190 _LIT(KVCalStatusDELEGATED, "DELEGATED");
       
   191 
       
   192 _LIT8(KVCalTokenCOMPLETED, "COMPLETED");
       
   193 _LIT8(KVCalTokenSTATUS,	 "STATUS");
       
   194 
       
   195 // X-Method property values
       
   196 _LIT(KVCalTokenMethodStatusENone,  "NONE");
       
   197 _LIT(KVCalTokenMethodStatusEPublish, "PUBLISH");
       
   198 _LIT(KVCalTokenMethodStatusERequest, "REQUEST");
       
   199 _LIT(KVCalTokenMethodStatusEReply, 	 "REPLY");
       
   200 _LIT(KVCalTokenMethodStatusEAdd, "ADD");
       
   201 _LIT(KVCalTokenMethodStatusECancel, "CANCEL");
       
   202 _LIT(KVCalTokenMethodStatusERefresh, "REFRESH");
       
   203 _LIT(KVCalTokenMethodStatusECounter, "COUNTER");
       
   204 _LIT(KVCalTokenMethodStatusEDeclineCounter, "DECLINECOUNTER");
       
   205 
       
   206 class CCalContent;
       
   207 class CTzRules;
       
   208 class CVTzActualisedRules;
       
   209 class TCalRRule;
       
   210 
       
   211 class AgnConvertUtil
       
   212 /** 
       
   213 @internalComponent
       
   214 @released 
       
   215 */
       
   216 	{
       
   217 public:
       
   218 	static HBufC* EncodeL(const TDesC& aText,TUid aConversion);
       
   219 	};
       
   220 
       
   221 // Agenda Entry to VCal conversion
       
   222 
       
   223 NONSHARABLE_CLASS(CAgendaEntryToVCalConverter) : public CBase
       
   224 /** 
       
   225 @internalComponent
       
   226 @released 
       
   227 */
       
   228 	{
       
   229 public:
       
   230 	void ExportEntryL(CCalEntry* aEntry, CVersitParser& aParser);
       
   231 	void SetTzConverter(RTz* aTzConverter) {iTzConverter = aTzConverter;}
       
   232 	void AddTimeZonePropertiesL(CVersitParser& aParser, CCalEntry* aEntry);
       
   233 	void NextVCalendarL(); // resets iAddedTzProperty
       
   234 
       
   235 	~CAgendaEntryToVCalConverter();
       
   236 
       
   237 private:
       
   238 	void AddEntryPropertiesL(CCalEntry* aEntry, CVersitParser& aParser);
       
   239 	void AddEventPropertiesL(CVersitParser& aParser, CCalEntry* aEntry);
       
   240 	void AddTodoPropertiesL(CVersitParser& aParser, CCalEntry* aEntry);
       
   241 	
       
   242  	void AddTzPropertyL(CVersitParser& aParser, TTimeIntervalSeconds aStdOffsetInSeconds);
       
   243  	void AddDaylightPropertiesL(CVersitParser& aParser, const CTzRules* aRules, TInt aStdOffset, TTime aRepeatStartTime, TTime aRepeatEndTime);
       
   244  	void AddDaylightPropertyL(CVersitParser& aParser, TTimeIntervalSeconds aOffsetInSeconds,
       
   245  									 	TTimeWithReference aStartTime, TTimeWithReference aEndTime);
       
   246 
       
   247 	void AddIntegerPropertyL(CVersitParser& aParser, const TDesC8& aToken, TCalLocalUid aUid);
       
   248 	void AddDateTimePropertyL(CVersitParser& aParser, const TDesC8& aToken, const TTime& aTime, const TVersitDateTime::TRelativeTime aRelativeTime, TVersitDateTime::TVersitDateTimeFlags aTimeFlag);
       
   249 	void AddDesPropertyL(CVersitParser& aParser, const TDesC8& aToken, const TDesC& aDes);
       
   250 
       
   251 	void AddAlarmPropertyL(CVersitParser& aParser, const TDesC8& aToken, const TTime& aAlarmTime, const TDesC& aAlarmName);
       
   252 	void AddExtendedAlarmPropertyL(CVersitParser& aParser, const TDesC8& aToken, const CCalContent& aAlarmAction);
       
   253 
       
   254 	void AddAttendeePropertyL(CVersitParser& aParser, CCalUser* aAttendee, TBool isPhoneOwner, TBool isOrganizer);
       
   255 	void AddAttendeeParameterL(CArrayPtr<CParserParam>* aArrayOfParams, CCalAttendee* aAttendee);
       
   256 
       
   257 	void AddRepeatPropertiesL(CVersitParser& aParser, TCalRRule& aRpt, CTzRules* aEntryTzRule);
       
   258 	void AddRepeatExceptionPropertiesL(CVersitParser& aParser, RArray<TCalTime>& aExceptions);
       
   259 	
       
   260 	void AddRDatePropertyL(CVersitParser& aParser, RArray<TCalTime>& aRdates);
       
   261 	CStreamDictionary* CreateDictionaryLC(CEmbeddedStore& aEmbeddedStore, TStreamId& aId);
       
   262 	void AddCategoryPropertyL(CVersitParser& aParser, const RPointerArray<CCalCategory>& aCategories);
       
   263 	void AddAttachmentPropertyL(CVersitParser& aParser, CCalAttachment& aAttachment);
       
   264 
       
   265 	// Repeat properties
       
   266 	CVersitRecurrence* CreateWeeklyRepeatL(TCalRRule& aRpt, TInt aDuration, TVersitDateTime* aEndTime);
       
   267 	CVersitRecurrence* CreateMonthlyRepeatL(TCalRRule& aRpt, TInt aDuration, TVersitDateTime* aEndTime);
       
   268 	CVersitRecurrence* CreateYearlyRepeatL(TCalRRule& aRpt, TInt aDuration, TVersitDateTime* aEndTime);
       
   269 	static void ResetAndDestroyArrayOfParams(TAny* aObject);
       
   270 	static void ResetAndDestroyArrayOfVersitDateTime(TAny* aObject);
       
   271 
       
   272 	// Additional functions for compliance with vCal specs 1.0
       
   273 	void AddStatusPropertyL(CVersitParser& aParser, CCalEntry* aEntry);
       
   274 	
       
   275 private:
       
   276 	CParserVCal *iVCal;
       
   277 	RTz* iTzConverter;			//RTz* is owned by TAgnVCalConverter
       
   278 	TVersitDateTime::TRelativeTime iTimeType;
       
   279 	TVersitDateTime::TVersitDateTimeFlags iTimeFlag;
       
   280 	TDateTime iStartTime;
       
   281 	TBool	iAddedTzProperty;
       
   282 	};
       
   283 
       
   284 
       
   285 // VCal to Agenda Entry conversion
       
   286 
       
   287 NONSHARABLE_CLASS(CVCalToAgendaEntryConverter) : public CBase
       
   288 /** 
       
   289 @internalComponent
       
   290 @released 
       
   291 */
       
   292 	{
       
   293 public:
       
   294 	void ImportVCalL(CVersitParser& aParser, RPointerArray<CCalEntry>& aEntryArray);
       
   295 	void SetTzConverter(RTz* aTzConverter);
       
   296 	void SetTzRules(CTzRules* aTzRules);
       
   297 	~CVCalToAgendaEntryConverter();
       
   298 
       
   299 	void SetImportVCalendarValues(TBool aImportVCalendar);
       
   300 
       
   301 	static TBool IsValidTime(const TTime& aTime);
       
   302 private:
       
   303 	CCalEntry::TType GetEntryTypeL(CVersitParser& aParser);
       
   304 	TBool GetStartAndEndDatesL(CVersitParser& aParser, TTime& aStartDate, TTime& aEndDate, TVersitDateTime::TRelativeTime& aRelativeTime);
       
   305 
       
   306 	TBool ImportEventPropertiesL(CVersitParser& aParser);
       
   307 	TBool ImportTodoPropertiesL(CVersitParser& aParser);
       
   308 
       
   309 	TBool ImportDateTimePropertyL(CVersitParser& aParser, const TDesC8& aToken, TTime& aValue, TVersitDateTime::TRelativeTime& aRelativeTime);
       
   310 
       
   311 	TBool ImportIntegerPropertyL(CVersitParser& aParser, const TDesC8& aToken, TInt& aValue);
       
   312 	HBufC* ImportDesPropertyL(CVersitParser& aParser, const TDesC8& aToken);
       
   313 
       
   314 	TBool ImportAlarmPropertyL(CVersitParser& aParser, TTime& aEntryTime, TVersitDateTime::TRelativeTime& aRelativeTime);
       
   315 
       
   316 	TBool ImportExtendedAlarmPropertyL(CCalAlarm* aAlarm, CVersitParser& aParser, const TDesC8& aToken);
       
   317 
       
   318 	void ImportAttendeePropertiesL(CVersitParser& aParser, const TDesC8& aToken);
       
   319 	void ImportCategoriesPropertyL(CVersitParser& aParser, const TDesC8& aToken);
       
   320 	void ImportRDatePropertyL(CVersitParser& aParser, const TDesC8& aToken);
       
   321 
       
   322 	void ImportRepeatRuleL(CVersitParser& aParser, const TDesC8& aToken, const TTime& aStartDate,TVersitDateTime::TRelativeTime aRelativeTime);
       
   323 	void ImportRepeatPropertyL(CVersitParser& aParser, const TDesC8& aToken, const TTime& aRepeatTime, TVersitDateTime::TRelativeTime aRelativeTime);
       
   324 	
       
   325 	void ImportWeeklyRepeatPropertiesL(CVersitRecurrenceWeekly* aRepeat, TCalRRule& aRpt, TDay aDefaultDayOfWeek);
       
   326 	void ImportMonthlyByDayRepeatPropertiesL(CVersitRecurrenceMonthlyByDay* aRepeat, TCalRRule& aRpt, TInt aDefaultDayOfMonth);
       
   327 	void ImportMonthlyByPosRepeatPropertiesL(CVersitRecurrenceMonthlyByPos* aRepeat, TCalRRule& aRpt, const TTime& aStartDate);
       
   328 	void ImportRepeatExceptionPropertiesL(CVersitParser& aParser, const TDesC8& aToken);
       
   329 	void ImportAttachmentPropertyL(CVersitParser& aParser);
       
   330 	TInt CalculateInstancesPerRepeatL(const TCalRRule& aRRule) const;
       
   331 
       
   332 	TBool FindCategoryPropertyL(CArrayPtrFlat<CCalCategory>* aCategoryList, CCalCategory::TCalCategoryType aCategoryType);
       
   333 	void UpdateCategoriesPropertyL(CVersitParser& aParser);
       
   334 	void UpdateAttendeePropertiesL(CVersitParser& aParser);
       
   335 	
       
   336 	TCalTime::TTimeMode GetTimeModeL(CVersitParser& aParser);
       
   337 	
       
   338 	// Additional functions for compliance with vCal spec 1.0 and iCalendar spec
       
   339 	void ImportStatusPropertyL(CVersitParser& aParser, CCalEntry::TStatus& aStatus);
       
   340 	void ImportICalStatusPropertyL(CVersitParser& aParser, CCalEntry::TStatus& aStatus);
       
   341 	void ImportVCalStatusPropertyL(CVersitParser& aParser, CCalEntry::TStatus& aStatus);
       
   342 private:
       
   343 	CCalEntry*	iEntry; //for convenience
       
   344 	RTz* iTzConverter; // It is used to convert time between UTC and Symstem local time. RTz* is owned by TAgnVCalConverter
       
   345 	TVersitDateTime::TRelativeTime iTimeType;
       
   346 	CTzRules* iTzZone; // It is imported from the vcs file used to convert time between UTC and event local time.
       
   347 	TBool iVcalTokenTypeReminder;
       
   348 	TBool iImportVCalendarValues;
       
   349 	};
       
   350 
       
   351 /** Template class for cleanup that needs ResetAndDestroy to be called 
       
   352 @internalComponent
       
   353 */
       
   354 template<class T> class CalCleanup
       
   355 	{
       
   356 public:
       
   357 	static void PushResetAndDestroyL(T& aRef);
       
   358 	static void PushResetAndDestroyPointerL(T& aRef);
       
   359 	static void PushResetL(T& aRef);
       
   360 	
       
   361 private:
       
   362 	static void ResetAndDestroy(TAny* aPtr);
       
   363 	static void ResetAndDestroyPointer(TAny* aPtr);
       
   364 	static void Reset(TAny* aPtr);
       
   365 	};
       
   366 
       
   367 const TInt KMaxTimeStringSize = 40;
       
   368 #endif