/** Copyright (c) 2007 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 "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: Interface to Exporting the contents of a Calender**/#ifndef CALENDAREXPORTEXPORT_H_#define CALENDAREXPORTEXPORT_H_//System Includes#include <e32base.h>//Forward Declarationsclass CCalSession;class CCalEntryView;class CCalenExporter;class CCalendarSessionInfo;class MCalCallbackBase;class CAsyncRequestObserver;class CCalendarExportParams;/** * This class provides functionality for Calendar Export * provides Six versions of Export Functionality Sync and Async (3 versions for each) * @since S60_3_2_200726 */class CCalendarExport : public CCalendarASyncRequest/*, public CActive*/ { public: //*********************Public Members(Behaviours)******************************************/ /** * Static Method which either returns the Two Phase constructed Object or Leave * * @param CCalendarSessionInfo to set the iCalenderSessionInfo which is used to access various resources * like CCalSession, CCalEntryView etc * @param aFormat used to set the iFormat it can be either ICAL or VCAL, two popular Calendar formats * * @param MAsyncRequestObserver For ASyncronous usage of this Object this paramater is set / Default is NULL * Set in case of Asynchronous call only * @param MCalCallbackBase For Asyncronous usage of this Object this paramater is set * * @return CCalendarExport */ static CCalendarExport* NewL ( CCalendarSessionInfo* aCalSessionInfo, const TDesC8& aFormat, CCalendarExportParams* aParams, CAsyncRequestObserver* aAsyncRequestObserver = NULL, MCalCallbackBase* aCallBack = NULL ); /** * Destructor. */ ~CCalendarExport(); /** * Synchronous Version of Export which decides the flow basing on the inputs set at the time of Construction * of this object through NewL and generates corresponding entries in an Ouput Buffer * @since S60_3_2_200726 * @param aOutputBuffer This Buffer contains the Output (Exported from the calender) * * @return void */ void ExportL( HBufC8*& aOutputBuffer ); /** * ASynchronous Version of Export Exports entries basing on the input set at the time of construction of this object througn NewL * all the entries of the Calender(outputis passed through callback) * * @since S60_3_2_200726 * * @return void */ void ExportL(); private: //*********************Private Member(Behaviours)******************************************/ /** * Constructor. * @param CCalendarSessionInfo to set the iCalenderSessionInfo which is used to access various resources * like CCalSession, CCalEntryView etc * @param CAsyncRequestObserver For ASyncronous usage of this Object this paramater is set / Default is NULL * Set in case of Asynchronous call only * @param MCalCallbackBase For Asyncronous usage of this Object this paramater is set */ CCalendarExport( CCalendarSessionInfo* aCalSessionInfo, CAsyncRequestObserver* aAsyncRequestObserver = NULL, MCalCallbackBase* aCallBack = NULL ); /** * 2nd Phase of Two Phase Construction * * @param aFormat used to set the iFormat it can be either ICAL or VCAL, two popular Calendar formats * a local copy is made * NOTE: Ownership of any of the parameters is not taken through this function call * @return void */ void ConstructL( const TDesC8& aFormat, CCalendarExportParams* aParams ); /** * Internal Function ExportToBuffer which is called to actually export the data to Buffer * * @since S60_3_2_200726 * @param aCalEntryArray Calender Entries of the Items to be exported to the Output Buffer * * @param aOutputBuffer This Buffer contains the Output (Exported from the calender) * * @return void */ void ExportToBufferL( const RPointerArray<CCalEntry>& aCalEntryArray, HBufC8*& aOutputBuffer ); /** * Internal Function For fetching all CCalEntries of the Calender and call ExportToBuffer * (this is called in case of both Synchronous(EXPORTL where no Local or Global UIDs are specified)and from RUNL of Asynchronous) * @since S60_3_2_200726 * * @param aOutputBuffer This Buffer contains the Output (Exported from the calender) * * @return void */ void GetCalEntriesAndExportL(HBufC8*& aOutputBuffer); /** * Internal Function For Conversion of LocalUIDS to CCalEntry and call ExportToBuffer * (this is called in case of Asynchronous from RUNL) * @since S60_3_2_200726 * * @param aOutputBuffer This Buffer contains the Output (Exported from the calender) * * @return void */ void ConvertLUIDAndExportL(HBufC8*& aOutputBuffer); /** * Internal Function For Conversion of GlobalUIDS to CCalEntry and call ExportToBuffer * (this is called in case of Asynchronous from RUNL) * @since S60_3_2_200726 * * @param aOutputBuffer This Buffer contains the Output (Exported from the calender) * * @return void */ void ConvertGUIDAndExportL(HBufC8*& aOutputBuffer); /** * Inherited from CActive class...Active Object for Aynchronous Support */ virtual void DoCancel(); /** * Inherited from CActive class...Active Object for Aynchronous Support */ virtual void RunL(); /** * Service Functions to activate the Asynchronous Request by activating the Active Object using SetActive() * @param aReason Give the reason it can be KErrNone or any error * * @return void */ void ActivateRequest( TInt aReason ); /** * Service Functions to Enable Proper Completion of Asynchronous Request called at the end of RUNL to send output * @param aReason Give the reason it can be KErrNone or any error * * @return void */ void NotifyRequestResult( TInt aReason ); private: //*********************Private Member(Properties)******************************************/ /** * This is the handle to CCalendarSessionInfo Service class which is used to access various resources * like CCalSession, CCalEntryView etc * Pure USES A Relalationship...This class doesnot own this and So, it wont delete it */ CCalendarSessionInfo* iCalSessionInfo; /** * For Syncronous usage of this Object this paramater is set / Default is NULL * Own. This class is responsible for deleting it. HAS A Relationship */ MCalCallbackBase* iCallBack; /** * For Syncronous usage of this Object this paramater is set / Default is NULL * Own. This class is responsible for deleting it. HAS A Relationship */ CAsyncRequestObserver* iAsyncRequestObserver; /** * Handle to the Library Class Object which provies the Conversion functionality i.e.., export * Own. This class is responsible for deleting it. HAS A Relationship */ CCalenExporter *iCalenExporter; /** * Handle to the Library Class Object which provies the Conversion functionality i.e.., export * Own. This class is responsible for deleting it. HAS A Relationship */ HBufC8* iFormat; /** * Handle to the input params. This class takes the responsibility for deleting it. HAS A Relationship */ CCalendarExportParams* iParams; /** * Output Buffer used only in case of Asynchronous calls * Own. This class takes the responsibility for deleting it. HAS A Relationship */ HBufC8* iOutputBuffer; };#endif CALENDAREXPORTEXPORT_H_