pimappsupport/vcardandvcal/inc/VCAL.H
changeset 0 f979ecb2b13e
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 #if !defined(__VCAL_H__)
       
    17 #define __VCAL_H__
       
    18 
       
    19 #if !defined(__VERSIT_H__)
       
    20 #include <versit.h>
       
    21 #endif
       
    22 
       
    23 #if !defined(__VRECUR_H__)
       
    24 #include <vrecur.h>
       
    25 #endif
       
    26 
       
    27 
       
    28 /** This constant is for internal use only.
       
    29 @internalTechnology
       
    30 */
       
    31 _LIT(KVersitTokenVCalVersionNo, "1.0");
       
    32 
       
    33 
       
    34 //
       
    35 // CParserVCal
       
    36 //
       
    37 class CParserVCal : public CVersitParser
       
    38 /** A vCalendar parser.
       
    39 
       
    40 Adds support for parsing vToDos and vEvents, and associated alarms 
       
    41 (see CParserPropertyValueAlarm) to the functionality of CVersitParser.
       
    42 
       
    43 Adds a constructor and overrides CVersitParser::InternalizeL() for streams, 
       
    44 ExternalizeL() for streams, RecognizeToken(), RecognizeEntityName() and MakeEntityL().
       
    45 
       
    46 The vCalendar data is read from or written to a stream or file, using the 
       
    47 InternalizeL() and ExternalizeL() functions. Most users of this class will 
       
    48 only need to use these functions.
       
    49 
       
    50 Note: if you are sequentially creating and destroying multiple 
       
    51 parsers, a major performance improvement may be achieved by using thread local 
       
    52 storage to store an instance of CVersitUnicodeUtils which persists and can be 
       
    53 used by all of the parsers.
       
    54 
       
    55 See CVersitTlsData for more information. 
       
    56 
       
    57 @publishedAll
       
    58 @released
       
    59 */
       
    60 	{
       
    61 public:
       
    62 	IMPORT_C static CParserVCal* NewL();
       
    63 public: // from CVersitParser
       
    64 	IMPORT_C void InternalizeL(RReadStream& aStream);
       
    65 	IMPORT_C void ExternalizeL(RWriteStream& aStream);
       
    66 protected: // from CVersitParser
       
    67 	IMPORT_C CVersitParser* MakeEntityL(TInt aEntityUid,HBufC* aEntityName);
       
    68 public: // from CVersitParser
       
    69 	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
       
    70 	IMPORT_C TInt RecognizeEntityName() const;
       
    71 private:
       
    72 	CParserVCal();
       
    73 private: // from CVersitParser
       
    74 	IMPORT_C virtual void Reserved1();
       
    75 	IMPORT_C virtual void Reserved2();
       
    76 	};
       
    77 
       
    78 //
       
    79 // CVersitAlarm
       
    80 //
       
    81 class CVersitAlarm : public CBase
       
    82 /** An alarm for a vEvent or a vTodo. 
       
    83 
       
    84 Specifies the date/time for the alarm, the amount of time the alarm will be 
       
    85 snoozed (optional), the number of times that the alarm will repeat, the binary 
       
    86 data of the sound to be played when the alarm runs (optional), and some text 
       
    87 to associate with the alarm (optional).
       
    88 
       
    89 An object of this class is owned by the CParserPropertyValueAlarm class.
       
    90 
       
    91 This class supports the following types of alarm:
       
    92 
       
    93 - Audible Alarm
       
    94 
       
    95 - Display Alarm (displays message on the screen) 
       
    96 
       
    97 - Procedure Alarm (calls a procedure)
       
    98 
       
    99 - Mail Alarm (sends an email). 
       
   100 
       
   101 @publishedAll
       
   102 @released
       
   103 */
       
   104 	{
       
   105 public:
       
   106 	IMPORT_C static CVersitAlarm* NewL(TVersitDateTime* aRunTime, TTime* aSnoozeTime, TInt aRepeatCount, const TDesC& aAudioContent, const TDesC& aNote);
       
   107 	IMPORT_C ~CVersitAlarm();
       
   108 private:
       
   109 	CVersitAlarm(TInt aRepeatCount);
       
   110 	void ConstructL(const TDesC& aAudioContent, const TDesC& aNote, TVersitDateTime* aRunTime, TTime* aSnoozeTime);
       
   111 public:	
       
   112 	/** The date/time for the alarm. */
       
   113 	TVersitDateTime* iRunTime;
       
   114 	/** The amount of time the alarm will be snoozed (optional). */
       
   115 	TTime* iSnoozeTime;
       
   116 	/** The number of times that the alarm will repeat. */
       
   117 	TInt iRepeatCount;
       
   118 	/** The binary data describing the sound to play for an AALARM (optional), or 
       
   119 	the string which specifies the address to send the e-mail to, for an MALARM. */
       
   120 	HBufC* iAudioContent;
       
   121 	/** The mesage to display on the screen for a DALARM (optional), or 
       
   122 	the body of the e-mail to be sent for an MALARM, or the name of the procedure 
       
   123 	to call for a PALARM. */
       
   124 	HBufC* iNote;//Empty except for MAlarm
       
   125 	};
       
   126 	
       
   127 class CVersitExtendedAlarm : public CBase
       
   128 /** An extended alarm for a vEvent or a vTodo. 
       
   129 
       
   130 Specifies the date/time for the alarm, the amount of time the alarm will be 
       
   131 snoozed (optional), the number of times that the alarm will repeat, and the 
       
   132 action for the alarm.
       
   133 An object of this class is owned by the CParserPropertyValueAlarm class.
       
   134 
       
   135 This class supports the following types of alarm:
       
   136 - X-EPOCALARM 
       
   137 
       
   138 @publishedAll
       
   139 @released
       
   140 */
       
   141 	{
       
   142 public:
       
   143 
       
   144 	/** Extended Alarm's disposition types.
       
   145 	*/
       
   146 	enum TDisposition
       
   147 		{
       
   148 		/** URL disposition
       
   149 		*/
       
   150 		EDispositionUrl = 0,
       
   151 		/** Inline disposition
       
   152 		*/
       
   153 		EDispositionInline = 1,
       
   154 		/** Unknown disposition
       
   155 		*/
       
   156 		EDispositionUnknown = 15
       
   157 		};
       
   158 	
       
   159 	IMPORT_C static CVersitExtendedAlarm* NewL(const TDesC8& aContent,const TDesC8& aContentMimeType, CVersitExtendedAlarm::TDisposition aDisposition);
       
   160 	IMPORT_C ~CVersitExtendedAlarm();
       
   161 private:
       
   162 	CVersitExtendedAlarm();
       
   163 	void ConstructL(const TDesC8& aContent, const TDesC8& aContentMimeType, CVersitExtendedAlarm::TDisposition aContentDisposition);
       
   164 public:	
       
   165 	/** The data describing the action for the alarm.*/
       
   166 	HBufC8* iContent;
       
   167 	/** The MIME type of the data describing the action for the alarm.*/
       
   168 	HBufC8* iMimeType;
       
   169 	/** The disposition of the data for the alarm action (i.e whether it is inline or an URI).*/
       
   170 	CVersitExtendedAlarm::TDisposition iDisposition;
       
   171 	};
       
   172 
       
   173 //
       
   174 // CParserVCalEntity
       
   175 //
       
   176 class CParserVCalEntity : public CRecurrenceParser
       
   177 /** A parser for vCalendar sub-entities.
       
   178 
       
   179 A vCalendar sub-entity is a vEvent or vToDo contained in a vCalendar. vEvents 
       
   180 and vToDos are derived from CRecurrenceParser, which provides recurrence functionality. 
       
   181 
       
   182 vEvents and vTodos may have alarm properties (see CParserPropertyValueAlarm). 
       
   183 
       
   184 @publishedAll
       
   185 @released
       
   186 */
       
   187 	{
       
   188 public:
       
   189 	IMPORT_C static CParserVCalEntity* NewL();
       
   190 	IMPORT_C ~CParserVCalEntity();
       
   191 public: // from CVersitParser
       
   192 	IMPORT_C void ExternalizeL(RWriteStream& aStream);
       
   193 protected: // from CVersitParser
       
   194 	IMPORT_C CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
       
   195 	IMPORT_C CVersitAlarm* MakePropertyValueAlarmL(TPtr16 aAlarmValue);
       
   196 	IMPORT_C CVersitExtendedAlarm* MakePropertyValueExtendedAlarmL(TPtr16 aAlarmValue);
       
   197 	IMPORT_C CVersitExtendedAlarm* MakePropertyValueExtendedAlarmL(CBufSeg& aAlarmValue);
       
   198 	IMPORT_C CVersitExtendedAlarm::TDisposition DecodeDisposition(const TDesC8& aContentDispositionToken) const;
       
   199 	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
       
   200 private:
       
   201 	CParserVCalEntity();
       
   202 private: // from CVersitParser
       
   203 	IMPORT_C virtual void Reserved1();
       
   204 	IMPORT_C virtual void Reserved2();
       
   205 	};
       
   206 
       
   207 
       
   208 //
       
   209 // CParserPropertyValueAlarm
       
   210 //
       
   211 class CParserPropertyValueAlarm : public CParserTimePropertyValue
       
   212 /** An alarm property value parser for a vCalendar entity.
       
   213 
       
   214 An alarm can be associated with a vEvent or a vTodo. The value for the alarm 
       
   215 is stored as a CVersitAlarm.
       
   216 
       
   217 Note: The UID for an alarm property value is KVCalPropertyAlarmUid. 
       
   218 
       
   219 @publishedAll
       
   220 @released
       
   221 */
       
   222 	{
       
   223 public:
       
   224 	IMPORT_C CParserPropertyValueAlarm(CVersitAlarm* aValue);
       
   225 	IMPORT_C CParserPropertyValueAlarm();
       
   226 	IMPORT_C ~CParserPropertyValueAlarm();
       
   227 	inline CVersitAlarm* Value() const;
       
   228 public: // from CParserTimePropertyValue
       
   229 	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
       
   230 	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
       
   231 public: // from CParserPropertyValue
       
   232 	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
       
   233 	IMPORT_C TBool IsAsciiCharacterSetSufficient();
       
   234 private:
       
   235 	CVersitAlarm* iValue;
       
   236 	};
       
   237 
       
   238 
       
   239 //
       
   240 // CParserPropertyValueExtendedAlarm
       
   241 //
       
   242 class CParserPropertyValueExtendedAlarm : public CParserTimePropertyValue
       
   243 /** An extended alarm property value parser for a vCalendar entity.
       
   244 
       
   245 An alarm action can be attached with a vEvent or a vTodo. The value for the alarm 
       
   246 action is stored as a CVersitExtendedAlarm object. 
       
   247 
       
   248 Note: The UID for an extended alarm property value is KVCalPropertyExtendedAlarmUid. 
       
   249 
       
   250 @publishedAll
       
   251 @released
       
   252 */
       
   253 	{
       
   254 public:
       
   255 	IMPORT_C CParserPropertyValueExtendedAlarm(CVersitExtendedAlarm* aValue);
       
   256 	IMPORT_C ~CParserPropertyValueExtendedAlarm();
       
   257 	inline CVersitExtendedAlarm* Value() const;
       
   258 public: // from CParserTimePropertyValue
       
   259 	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
       
   260 	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
       
   261 public: // from CParserPropertyValue
       
   262 	IMPORT_C void ExternalizeL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
       
   263 	IMPORT_C TBool IsAsciiCharacterSetSufficient();
       
   264 private:
       
   265 	void ExternalizeUrlL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
       
   266 	void ExternalizeInlineL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
       
   267 	
       
   268 private:
       
   269 	CVersitExtendedAlarm* iValue;
       
   270 	};
       
   271 
       
   272 #include <vcal.inl>
       
   273 
       
   274 #endif