|
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 |