calendarengines/agnversit2/inc/AgnVersit2Exporter.h
author William Roberts <williamr@symbian.org>
Sun, 14 Mar 2010 13:09:26 +0000
branchCompilerCompatibility
changeset 11 7d78dc22f397
parent 0 f979ecb2b13e
permissions -rw-r--r--
Automatic merge from PDK_3.0.h

#ifndef AGNVERSIT2EXPORTER_H
#define AGNVERSIT2EXPORTER_H/*
* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Nokia Corporation - initial contribution.
*
* Contributors:
*
* Description:   Implements the export functionality of CAgnVersit2
*
*/



// Agenda includes.
#include <calentry.h>	// for CCalEntry::TReplicationStatus
#include <caluser.h>	// for CCalAttendee::TCalRole

// Forward class declarations.
class CAgnVersit2StringProvider;
class CICal;
class CICalComponent;
class CICalProperty;
class CTzRules;
class MAgnExportObserver;
class RWriteStream;


/**
Implementation class for CAgnVersit2::ExportL.
@internalTechnology
*/
class CAgnVersit2Exporter : public CBase
	{
public:		// Construction/destruction.
	static CAgnVersit2Exporter* NewL(CAgnVersit2StringProvider& aStringProvider);
	static CAgnVersit2Exporter* NewLC(CAgnVersit2StringProvider& aStringProvider);

	~CAgnVersit2Exporter();

public:		// Methods.
	void ExportL(const CCalEntry& aEntry,RWriteStream& aWriteStream, TUint aExportFlags,MAgnExportObserver& aObserver);
	void ExportL(RPointerArray<CCalEntry>& aEntries,RWriteStream& aWriteStream, TUint aExportFlags,MAgnExportObserver& aObserver);
	

private:	// Construction.
	CAgnVersit2Exporter(CAgnVersit2StringProvider& aStringProvider);
		
	void ConstructL();
	
private:	// Methods.
	CICal* AddICalLC(const CCalEntry& aEntry) const;
	
	// Add Component methods.
	void AddAnnivL(CICalComponent& aAnniv, const CCalEntry& aEntry) const;
	void AddAlarmL(CICalComponent& aComponent, const CCalEntry& aEntry) const;
	void AddApptL(CICalComponent& aAppt, const CCalEntry& aEntry) const;
	void AddComponentL(CICal& aICal, const CCalEntry& aEntry) const;
	void AddEventL(CICalComponent& aEvent, const CCalEntry& aEntry) const;
	void AddReminderL(CICalComponent& aReminder, const CCalEntry& aEntry) const;
	void AddTimezoneL(CICal& aICal, const CCalEntry& aEntry);
	void AddTodoL(CICalComponent& aTodo, const CCalEntry& aEntry) const;
	
	// Add Property methods.
	void AddAttendeePropertiesL(CICalComponent& aComponent, const CCalEntry& aEntry) const;
	void AddCategoriesPropertyL(CICalComponent& aComponent, const CCalEntry& aEntry)const ;
	void AddClassPropertyL(CICalComponent& aComponent, const CCalEntry& aEntry) const;
	void AddExceptionDatePropertyL(CICalComponent& aComponent, const CCalEntry& aEntry) const;
	void AddIntegerPropertyL(CICalComponent& aComponent, TInt aInt, const TDesC& aProperty) const;
	void AddOrganizerPropertyL(CICalComponent& aComponent, const CCalEntry& aEntry) const;
	void AddTextPropertyL(CICalComponent& aComponent, const TDesC& aText, const TDesC& aProperty) const;
	void AddRDatePropertyL(CICalComponent& aComponent, const CCalEntry& aEntry) const;
	void AddRRulePropertyL(CICalComponent& aComponent, const CCalEntry& aEntry)const;
	CICalProperty& AddDateTimePropertyL(CICalComponent& aComponent, const TCalTime& aTime, const TDesC& aProperty) const;
	CICalProperty& AddFloatingDateTimePropertyL(CICalComponent& aComponent,	const TTime& aFloatingTime, const TDesC& aProperty) const;
	CICalProperty& AddUtcDateTimePropertyL(CICalComponent& aComponent, const TTime& aUtcTime, const TDesC& aProperty) const;
	
	// Helper methods.
	static const TDesC& ClassStringL(const CCalEntry::TReplicationStatus aStatus);
	const TDesC& CategoryStringL(const CCalCategory& aCategory) const;
	static const TDesC& RoleFromEnum(CCalAttendee::TCalRole aRole);
	static const TDesC& StatusFromEnum(CCalAttendee::TCalStatus aStatus);
	static const TDesC& DayFromInt(TUint8 aDayInt);
	static const TDesC&  DayFromTDay(TDay aDay);
	static TInt WeekNumFromDayOfMonth(TInt aDayOfMonth);
	
private:	// Members.
	MAgnExportObserver* iObserver;
	CAgnVersit2StringProvider& iStringProvider;
	RPointerArray<HBufC> iTzNameArray;
	RPointerArray<CTzRules> iTimeZoneArray;
	TUint iExportProperties;
	TInt iTimezoneIndex;
	};
	
#endif // AGNVERSIT2EXPORTER_H

// End of file.