epoc32/include/vcal.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
--- a/epoc32/include/vcal.h	Tue Nov 24 13:55:44 2009 +0000
+++ b/epoc32/include/vcal.h	Tue Mar 16 16:12:26 2010 +0000
@@ -1,1 +1,269 @@
-vcal.h
+// Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
+// which accompanies this distribution, and is available
+// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+ 
+#if !defined(__VCAL_H__)
+#define __VCAL_H__
+
+#if !defined(__VERSIT_H__)
+#include <versit.h>
+#endif
+
+#if !defined(__VRECUR_H__)
+#include <vrecur.h>
+#endif
+
+_LIT(KVersitTokenVCalVersionNo, "1.0");
+
+//
+// CParserVCal
+//
+class CParserVCal : public CVersitParser
+/** A vCalendar parser.
+
+Adds support for parsing vToDos and vEvents, and associated alarms 
+(see CParserPropertyValueAlarm) to the functionality of CVersitParser.
+
+Adds a constructor and overrides CVersitParser::InternalizeL() for streams, 
+ExternalizeL() for streams, RecognizeToken(), RecognizeEntityName() and MakeEntityL().
+
+The vCalendar data is read from or written to a stream or file, using the 
+InternalizeL() and ExternalizeL() functions. Most users of this class will 
+only need to use these functions.
+
+Note: if you are sequentially creating and destroying multiple 
+parsers, a major performance improvement may be achieved by using thread local 
+storage to store an instance of CVersitUnicodeUtils which persists and can be 
+used by all of the parsers.
+
+See CVersitTlsData for more information. 
+
+@publishedAll
+@released
+*/
+	{
+public:
+	IMPORT_C static CParserVCal* NewL();
+public: // from CVersitParser
+	IMPORT_C void InternalizeL(RReadStream& aStream);
+	IMPORT_C void ExternalizeL(RWriteStream& aStream);
+protected: // from CVersitParser
+	IMPORT_C CVersitParser* MakeEntityL(TInt aEntityUid,HBufC* aEntityName);
+public: // from CVersitParser
+	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
+	IMPORT_C TInt RecognizeEntityName() const;
+private:
+	CParserVCal();
+private: // from CVersitParser
+	IMPORT_C virtual void Reserved1();
+	IMPORT_C virtual void Reserved2();
+	};
+
+//
+// CVersitAlarm
+//
+class CVersitAlarm : public CBase
+/** An alarm for a vEvent or a vTodo. 
+
+Specifies the date/time for the alarm, the amount of time the alarm will be 
+snoozed (optional), the number of times that the alarm will repeat, the binary 
+data of the sound to be played when the alarm runs (optional), and some text 
+to associate with the alarm (optional).
+
+An object of this class is owned by the CParserPropertyValueAlarm class.
+
+This class supports the following types of alarm:
+
+- Audible Alarm
+
+- Display Alarm (displays message on the screen) 
+
+- Procedure Alarm (calls a procedure)
+
+- Mail Alarm (sends an email). 
+
+@publishedAll
+@released
+*/
+	{
+public:
+	IMPORT_C static CVersitAlarm* NewL(TVersitDateTime* aRunTime, TTime* aSnoozeTime, TInt aRepeatCount, const TDesC& aAudioContent, const TDesC& aNote);
+	IMPORT_C ~CVersitAlarm();
+private:
+	CVersitAlarm(TVersitDateTime* aRunTime, TTime* aSnoozeTime, TInt aRepeatCount);
+	void ConstructL(const TDesC& aAudioContent, const TDesC& aNote);
+public:	
+	/** The date/time for the alarm. */
+	TVersitDateTime* iRunTime;
+	/** The amount of time the alarm will be snoozed (optional). */
+	TTime* iSnoozeTime;
+	/** The number of times that the alarm will repeat. */
+	TInt iRepeatCount;
+	/** The binary data describing the sound to play for an AALARM (optional), or 
+	the string which specifies the address to send the e-mail to, for an MALARM. */
+	HBufC* iAudioContent;
+	/** The mesage to display on the screen for a DALARM (optional), or 
+	the body of the e-mail to be sent for an MALARM, or the name of the procedure 
+	to call for a PALARM. */
+	HBufC* iNote;//Empty except for MAlarm
+	};
+	
+class CVersitExtendedAlarm : public CBase
+/** An extended alarm for a vEvent or a vTodo. 
+
+Specifies the date/time for the alarm, the amount of time the alarm will be 
+snoozed (optional), the number of times that the alarm will repeat, and the 
+action for the alarm.
+An object of this class is owned by the CParserPropertyValueAlarm class.
+
+This class supports the following types of alarm:
+- X-EPOCALARM 
+
+@publishedPartner
+@released
+*/
+	{
+public:
+
+	/** Extended Alarm's disposition types.
+	*/
+	enum TDisposition
+		{
+		/** URL disposition
+		*/
+		EDispositionUrl = 0,
+		/** Inline disposition
+		*/
+		EDispositionInline = 1,
+		/** Unknown disposition
+		*/
+		EDispositionUnknown = 15
+		};
+	
+	IMPORT_C static CVersitExtendedAlarm* NewL(const TDesC8& aContent,const TDesC8& aContentMimeType, CVersitExtendedAlarm::TDisposition aDisposition);
+	IMPORT_C ~CVersitExtendedAlarm();
+private:
+	CVersitExtendedAlarm();
+	void ConstructL(const TDesC8& aContent, const TDesC8& aContentMimeType, CVersitExtendedAlarm::TDisposition aContentDisposition);
+public:	
+	/** The data describing the action for the alarm.*/
+	HBufC8* iContent;
+	/** The MIME type of the data describing the action for the alarm.*/
+	HBufC8* iMimeType;
+	/** The disposition of the data for the alarm action (i.e whether it is inline or an URI).*/
+	CVersitExtendedAlarm::TDisposition iDisposition;
+	};
+
+//
+// CParserVCalEntity
+//
+class CParserVCalEntity : public CRecurrenceParser
+/** A parser for vCalendar sub-entities.
+
+A vCalendar sub-entity is a vEvent or vToDo contained in a vCalendar. vEvents 
+and vToDos are derived from CRecurrenceParser, which provides recurrence functionality. 
+
+vEvents and vTodos may have alarm properties (see CParserPropertyValueAlarm). 
+
+@publishedAll
+@released
+*/
+	{
+public:
+	IMPORT_C static CParserVCalEntity* NewL();
+	IMPORT_C ~CParserVCalEntity();
+public: // from CVersitParser
+	IMPORT_C void ExternalizeL(RWriteStream& aStream);
+protected: // from CVersitParser
+	IMPORT_C CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid,HBufC16*& aValue);
+	IMPORT_C CVersitAlarm* MakePropertyValueAlarmL(TPtr16 aAlarmValue);
+	IMPORT_C CVersitExtendedAlarm* MakePropertyValueExtendedAlarmL(TPtr16 aAlarmValue);
+	IMPORT_C CVersitExtendedAlarm* MakePropertyValueExtendedAlarmL(CBufSeg& aAlarmValue);
+	IMPORT_C CVersitExtendedAlarm::TDisposition DecodeDisposition(const TDesC8& aContentDispositionToken) const;
+	IMPORT_C TUid RecognizeToken(const TDesC8& aToken) const;
+private:
+	CParserVCalEntity();
+private: // from CVersitParser
+	IMPORT_C virtual void Reserved1();
+	IMPORT_C virtual void Reserved2();
+	};
+
+
+//
+// CParserPropertyValueAlarm
+//
+class CParserPropertyValueAlarm : public CParserTimePropertyValue
+/** An alarm property value parser for a vCalendar entity.
+
+An alarm can be associated with a vEvent or a vTodo. The value for the alarm 
+is stored as a CVersitAlarm.
+
+Note: The UID for an alarm property value is KVCalPropertyAlarmUid. 
+
+@publishedAll
+@released
+*/
+	{
+public:
+	IMPORT_C CParserPropertyValueAlarm(CVersitAlarm* aValue);
+	IMPORT_C CParserPropertyValueAlarm();
+	IMPORT_C ~CParserPropertyValueAlarm();
+	inline CVersitAlarm* Value() const;
+public: // from CParserTimePropertyValue
+	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
+	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
+public: // from CParserPropertyValue
+	IMPORT_C void ExternalizeL(RWriteStream& aStream,const Versit::TEncodingAndCharset& aEncodingCharset,TInt aLengthOutput);
+	IMPORT_C TBool IsAsciiCharacterSetSufficient();
+private:
+	CVersitAlarm* iValue;
+	};
+
+
+//
+// CParserPropertyValueExtendedAlarm
+//
+class CParserPropertyValueExtendedAlarm : public CParserTimePropertyValue
+/** An extended alarm property value parser for a vCalendar entity.
+
+An alarm action can be attached with a vEvent or a vTodo. The value for the alarm 
+action is stored as a CVersitExtendedAlarm object. 
+
+Note: The UID for an extended alarm property value is KVCalPropertyExtendedAlarmUid. 
+
+@publishedAll
+@released
+*/
+	{
+public:
+	IMPORT_C CParserPropertyValueExtendedAlarm(CVersitExtendedAlarm* aValue);
+	IMPORT_C ~CParserPropertyValueExtendedAlarm();
+	inline CVersitExtendedAlarm* Value() const;
+public: // from CParserTimePropertyValue
+	IMPORT_C void ConvertAllDateTimesToUTCL(const TTimeIntervalSeconds& aIncrement,const CVersitDaylight* aDaylight);
+	IMPORT_C void ConvertAllUTCDateTimesToMachineLocalL(const TTimeIntervalSeconds& aIncrement);
+public: // from CParserPropertyValue
+	IMPORT_C void ExternalizeL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
+	IMPORT_C TBool IsAsciiCharacterSetSufficient();
+private:
+	void ExternalizeUrlL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
+	void ExternalizeInlineL(RWriteStream& aStream, const Versit::TEncodingAndCharset& aEncodingCharset, TInt aLengthOutput);
+	
+private:
+	CVersitExtendedAlarm* iValue;
+	};
+
+#include <vcal.inl>
+
+#endif