pimappservices/calendarvcalplugin/Inc/agnversit.h
changeset 0 f979ecb2b13e
child 12 38571fd2a704
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pimappservices/calendarvcalplugin/Inc/agnversit.h	Tue Feb 02 10:12:19 2010 +0200
@@ -0,0 +1,136 @@
+// Copyright (c) 2002-2009 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:
+//
+
+/**
+ @file
+ @internalComponent 
+*/
+
+#ifndef __AGNVERSIT_H__
+#define __AGNVERSIT_H__
+
+#include <e32base.h>
+#include <e32std.h>
+#include <vcal.h>
+#include <tz.h>
+#include "calversit.h"
+#include <caldataexchange.h>
+
+#include "agmvcal.h"
+
+class TTzRule;
+class CAgnVCalConverter;
+
+class CCalImportExportActive : public CActive 
+	{
+public:
+	CCalImportExportActive(CAgnVCalConverter& aConverter);
+	~CCalImportExportActive();
+	void Start();
+
+	// from CActive
+	void RunL();
+	void DoCancel();
+	TInt RunError(TInt aError);
+private:
+	CAgnVCalConverter& iConverter;
+	};
+
+class CAgnVCalConverter : public CAgnVersit
+	{
+public:
+
+	enum TState
+		{
+		EIdle,
+		EImporting,
+		EExporting,
+		};
+
+	static CAgnVCalConverter* NewL();
+
+//from MAgnVersit
+	void ImportVCalL(TInt aFlags, RReadStream& aReadStream, RPointerArray<CCalEntry>& aEntryArray);
+	void ExportVCalL(RWriteStream& aWriteStream, const RPointerArray<CCalEntry>& aEntryArray, const Versit::TVersitCharSet aCharSet);
+
+	~CAgnVCalConverter();
+	
+	void ImportVCalAsyncL(TInt aFlags, RReadStream& aReadStream, RPointerArray<CCalEntry>& aEntryArray, MCalDataExchangeCallBack& aObserver);
+	void ExportVCalAsyncL(RWriteStream& aWriteStream, RPointerArray<CCalEntry>& aCalEntryArray, MCalDataExchangeCallBack& aObserver, const Versit::TVersitCharSet aCharSet);
+//To be called by CCalImportExportActive
+	void NextExportStepL();
+	void NextImportStepL();
+	void CancelImportExport(TInt aError = KErrNone);
+	CAgnVCalConverter::TState AsyncState() const;
+private:
+	void ConstructL();
+
+	CTzRules* ImportTzRulesL(CParserVCal& aCalParser) const;
+	CTzRules* DaylightRulesL(CParserVCal& aCalParser, TTimeIntervalMinutes aStdOffset) const;
+	TTzRule TzRuleL(TTimeIntervalMinutes aOldTzOffset, TTimeIntervalMinutes aNewTzOffset, TTime aStartTime, TTime aEndTime) const;
+	TTimeIntervalMinutes StandardTimeOffsetL(CParserVCal& aCalParser) const;
+	TBool ValidDaylightProperty(CParserProperty& aDaylightProperty) const;
+	void ConvertEntryToVCalAndExportL(CParserVCal* aVcal, const RPointerArray<CCalEntry>& aEntryArray, RWriteStream& aWriteStream);
+	void ExportEntryBySameTzL(RWriteStream& aWriteStream);
+	void ExportEntryWithoutTzRuleL(RWriteStream& aWriteStream);
+	void FindEntryWithoutTzRuleL(RPointerArray<CCalEntry>& aSameTzEntry);
+	void FindSameTzEntryL(RPointerArray<CCalEntry>& aSameTzEntry);
+	void CheckCompletion();
+	void InitialiseSameTzEntryArrayL();
+private:
+	TBool iTzConnected;
+	RTz iTzServer;
+
+	// for asynchronous import / export
+	MCalDataExchangeCallBack* 	iObserver;
+
+	CCalImportExportActive*		iImportExportActive;
+	RPointerArray<CCalEntry>* 	iEntryArray;		//Not owned
+	RPointerArray<CCalEntry>* 	iSametzEntries;		//Not owned. The entries with same tz rule or do have tz rules
+	RPointerArray<CParserVCal>* iVCalArray;			//Array of vCal used when importing asynchronously. 
+	RArray<TInt> 				iEntryIndexToExport;//Each of its element is the index of the entries in the array of iEntryArray
+	
+	CVCalToAgendaEntryConverter* 	iImportConverter;
+	CAgendaEntryToVCalConverter* 	iExportConverter;
+	Versit::TVersitCharSet 			iCharSet;
+
+	RWriteStream* 	iWriteStream;
+	CParserVCal* 	iVCal;
+	TState 			iAsyncState;
+
+	TInt 			iTotalNumEntry;		//The number of entries
+	TInt 			iTotalCounter;		//The counter out of total entries
+	TInt 			iSameTzCounter;		//The counter out of number of entries with the particular tz
+	TInt 			iMaxNumEntryInStep;	//The maxum number of entries to import\export in one step
+	};
+
+/**
+@internalComponent
+@released 
+*/
+enum TAgnVersitPanic
+	{
+	EAgnVersitPanicNotNull,
+	EAgnVersitPanicNoEntryArray,
+	EAgnVersitPanicNoAAlarmProps,
+	EAgnVersitPanicWrongTimeType,
+	EAgnVersitWrongAttribute,
+	EAgnVersitPanicWrongArgument,
+	EAgnVersitPanicImportExportFailure
+	};
+
+extern void Panic(TAgnVersitPanic aPanic);
+
+#endif