// VCAL.H
//
// Copyright (c) 1997-1999 Symbian Ltd.  All rights reserved.
//
 
#if !defined(__VCAL_H__)
#define __VCAL_H__

#if !defined(__VERSIT_H__)
#include "versit.h"
#endif

#if !defined(__VRECUR_H__)
#include "vrecur.h"
#endif

#define KVersitTokenVCalVersionNo _L("1.0")

//
// CParserVCal
//

class CParserVCal : public CVersitParser
	{
public:
	IMPORT_C CParserVCal();
public: // from CVersitParser
	IMPORT_C void InternalizeL(RReadStream& aStream);
	IMPORT_C void ExternalizeL(RWriteStream& aStream);
protected: // from CVersitParser
	IMPORT_C CVersitParser* MakeEntityL(const TUid& aEntityUid,const TDesC& aEntityName);
	IMPORT_C CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid);
	IMPORT_C TUid RecognizeCurrentTokenL() const;
	};

//
// CParserVCalEntity
//
class CVersitAlarm;

class CParserVCalEntity : public CRecurrenceParser
	{
public:
	IMPORT_C CParserVCalEntity();
	IMPORT_C ~CParserVCalEntity();
public: // from CVersitParser
	IMPORT_C void ExternalizeL(RWriteStream& aStream);
protected: // from CVersitParser
	IMPORT_C CParserPropertyValue* MakePropertyValueL(const TUid& aPropertyUid);
	IMPORT_C CVersitAlarm* MakePropertyValueAlarmL();
	IMPORT_C TUid RecognizeCurrentTokenL() const;
	};

//
// CVersitAlarm
//

class CVersitAlarm
	{
public:
	IMPORT_C CVersitAlarm(TVersitDateTime* aRunTime,TTime* aSnoozeTime,TInt aRepeatCount,const TDesC& aAudioContent,const TDesC& aNote);

	IMPORT_C static CVersitAlarm* NewL(TVersitDateTime* aRunTime, TTime* aSnoozeTime, TInt aRepeatCount, const TDesC& aAudioContent, const TDesC& aNote);
	IMPORT_C static CVersitAlarm* NewLC(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:	
	TVersitDateTime* iRunTime;
	TTime* iSnoozeTime;
	TInt iRepeatCount;
	HBufC* iAudioContent;
	HBufC* iNote;//Empty except for MAlarm
	};

//
// CParserPropertyValueAlarm
//

class CParserPropertyValueAlarm : public CParserTimePropertyValue
	{
public:
	IMPORT_C CParserPropertyValueAlarm(CVersitAlarm* aValue);
	IMPORT_C ~CParserPropertyValueAlarm();
	inline CVersitAlarm* Value() const;
public: //framework
	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 TUid& /*aEncodingUid*/);
private:
	CVersitAlarm* iValue;
	};

inline CVersitAlarm* CParserPropertyValueAlarm::Value() const
	{return iValue;}

#endif
