calendarengines/agnversit2/src/AgnVersit2.cpp
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:32:31 +0100
branchRCL_3
changeset 30 bd7edf625bdd
parent 0 f979ecb2b13e
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 2002-2004 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:   This file contains instantiation of iCal importer and
*                exporter.Importer and exporter does conversion between 
*                iCal entry and symbian agnda entry.
*
*/



// Class include.
#include "AgnVersit2.h"					//CAgnVersit2

// User includes.
#include "AgnVersit2Importer.h"			//CAgnVersit2Importer
#include "AgnVersit2Exporter.h"			//CAgnVersit2Exporter
#include "AgnVersit2StringProvider.h"	//CAgnVersit2StringProvider

#include "calendarengines_debug.h"

/**
Two stage constructor for AgnVersit2 objects. This is used during plugin
instantiation and should not be called directly from client applications.
@return A new CAgnVersit2 object.
@publishedAll
*/
CAgnVersit2* CAgnVersit2::NewL()
	{
	TRACE_ENTRY_POINT;
	
	CAgnVersit2* self = new (ELeave) CAgnVersit2;
	CleanupStack::PushL(self);
	self->ConstructL();
	CleanupStack::Pop(self);
	
	TRACE_EXIT_POINT;
	
	return self;
	}
	
/**
Destructor.
@internalTechnology
*/
CAgnVersit2::~CAgnVersit2()
	{
	TRACE_ENTRY_POINT;
	
	delete iImporter;
	delete iExporter;
	delete iStringProvider;
	
	TRACE_EXIT_POINT;
	}
	
/**
Takes an array of agenda entries and a stream of iCalendar formatted text, and
adds entries to the array representing the components in the stream. This
implements CAgnExternalInterface::ImportL.
@see CAgnExternalInterface::ImportL()
@param aEntries An array onto which new entries will be appended.
@param aReadStream A stream from which to read the iCalendar information. The
client is responsible for opening the stream before calling this function, and
is also responsible for closing it again.
@param aFlags not used in this implementation.
@param aObserver A mechanism for error reporting and handling.
@publishedAll
*/
void CAgnVersit2::ImportL( RPointerArray<CCalEntry>& aEntries,
                           RReadStream& aReadStream,
                           TUint /*aFlags*/,
                           MAgnImportObserver& aObserver )
	{
	TRACE_ENTRY_POINT;
	
	if (!iImporter)
		{
		iImporter =  CAgnVersit2Importer::NewL(*iStringProvider);
		}

	iImporter->ImportL(aEntries, aReadStream, aObserver);
	
	TRACE_EXIT_POINT;
	}
	
/**
This implements CAgnExternalInterface::ExportL.
@see CAgnExternalInterface::ExportL()
@param aEntry Calendar entry to be exported.
@param aWriteStream Stream to write output to. The client is responsible for
opening the stream before calling this function, and is also responsible for
closing it again.
@param aFlags Not used in this implementation.
@param aObserver Export observer to handle errors.
@publishedAll
*/
void CAgnVersit2::ExportL( const CCalEntry& aEntry,
                           RWriteStream& aWriteStream,
                           TUint aFlags,
                           MAgnExportObserver& aObserver )
	{
	TRACE_ENTRY_POINT;
	
	if (!iExporter)
		{
		iExporter = CAgnVersit2Exporter::NewL(*iStringProvider);
		}
	
	iExporter->ExportL(aEntry, aWriteStream, aFlags, aObserver);
	
	TRACE_EXIT_POINT;
	}

/**
This implements CAgnExternalInterface::ExportL.
@see CAgnExternalInterface::ExportL()
@param aEntries array of Calendar entries to be exported.
@param aWriteStream Stream to write output to. The client is responsible for
opening the stream before calling this function, and is also responsible for
closing it again.
@param aFlags Not used in this implementation.
@param aObserver Export observer to handle errors.
@publishedAll
*/
void CAgnVersit2::ExportL( RPointerArray<CCalEntry>& aEntries,
                           RWriteStream& aWriteStream,
                           TUint aFlags,
                           MAgnExportObserver& aObserver )
	{
	TRACE_ENTRY_POINT;
	
	if (!iExporter)
		{
		iExporter = CAgnVersit2Exporter::NewL(*iStringProvider);
		}
	
	iExporter->ExportL(aEntries, aWriteStream, aFlags, aObserver);	
	
	TRACE_EXIT_POINT;
	}
	
/**
Default constructor.
@internalTechnology
*/
CAgnVersit2::CAgnVersit2()
	{
	TRACE_ENTRY_POINT;
	TRACE_EXIT_POINT;
	}
	
/**
Second phase construction.
@internalTechnology
*/
void CAgnVersit2::ConstructL()
	{
	TRACE_ENTRY_POINT;
	
	iStringProvider = CAgnVersit2StringProvider::NewL();
	// Initialise the importer and exporter straight away in debug mode
	// This prevents problems when memory testing
	__DEBUG_ONLY(iImporter =  CAgnVersit2Importer::NewL(*iStringProvider));
	__DEBUG_ONLY(iExporter =  CAgnVersit2Exporter::NewL(*iStringProvider));
	
	TRACE_EXIT_POINT;
	}

// End of file.