contentctrl_plat/ds_agenda_handler_plugin_api/inc/nsmlagendaadapterhandler.h
author Pat Downey <patd@symbian.org>
Wed, 01 Sep 2010 12:30:02 +0100
branchRCL_3
changeset 52 4f0867e42d62
parent 1 95fdac6ccb5c
permissions -rw-r--r--
Revert incorrect RCL_3 drop: Revision: 201033 Kit: 201035

/*
* Copyright (c) 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:  
*
*/

#ifndef C_NSMLAGENDA_ADAPTERHANDLERPLUGIN_H
#define C_NSMLAGENDA_ADAPTERHANDLERPLUGIN_H

// SYSTEM INCLUDES
#include <e32base.h>
#include <s32mem.h>
#include <ecom.h>
#include <SmlDataFormat.h>
#include <nsmlchangefinder.h>
#include <calcalendarinfo.h>
#include <e32cmn.h>

// Constants
const TUid KAgendaAdapterHandlerInterfaceUid = { 0x20029F14 };

/**
* Interface definition for ECoM plug-in adapters
*/
class CNSmlAgendaAdapterHandler: public CBase
    {
	public:
	    /**
        * Ecom interface static factory method implementation.
        * @param aImpUid Ecom's implementation uid
        * @return A pointer to the created instance of CNSmlAgendaAdapterHandler
        */
		static inline CNSmlAgendaAdapterHandler* NewL(TUid aImpUid);

		/**
		* Destructor
		*/
		virtual ~CNSmlAgendaAdapterHandler();

	public:
	    /**
        * Determines the Server supported folder properties
        * 
        * @param aServerDataStoreFormat Class structure of server device information
        *         
        */
	    virtual void CheckServerSupportForFolder( const CSmlDataStoreFormat& aServerDataStoreFormat ) = 0;
	    
	    /**
        * Retrieve the folder from the Organizer db
        * 
        * @param aUid variable specifing which Folder to be fetched
        * @param aStream on return will have the Folder details
        *         
        */
	    virtual void FetchFolderL( const TSmlDbItemUid aUid, RBufWriteStream& aStream ) = 0;
	    
	    /**
        * Determine the list of folders in the Organizer db owned by the calling application
        * 
        * @param aFolderUidArray array on return will have UID's of owned folders
        *         
        */
	    virtual void SynchronizableCalendarIdsL( CArrayFixFlat<TUint>* aFolderUidArray ) = 0;
	    
	    /**
        * Create a folder on to Organizer db
        * 
        * @param aStream containing the folder details to be created with
        * @return TCalLocalUid of the newly created folder
        *         
        */
	    virtual TCalLocalUid CreateFolderL( RBufReadStream& aStream ) = 0;
	    
	    /**
        * Replace the existing folder with updated info
        * 
        * @param aUid determines folder to act upon
        * @param aStream containing the folder information to be updated
        * @param aSyncStatus updated folders current syncstatus
        *         
        */
	    virtual void ReplaceFolderL( const TCalLocalUid& aUid, RBufReadStream& aStream, TBool& aSyncStatus ) = 0;
	    
	    /**
        * Retrieves the foldername 
        * 
        * @param aUid of the folder whose name to be determined
        * @return HBufC* name of the folder
        *         
        */
	    virtual HBufC* FolderNameL( TSmlDbItemUid aUid ) = 0;
	    
	    /**
        * Retrieve the calendar sync capability supported by the device
        * 
        * @param aStringPool 
        * @return CSmlDataStoreFormat* Class structure of supported capabilities
        *         
        */	 
	    virtual CSmlDataStoreFormat* StoreFormatL( RStringPool& aStringPool ) = 0;
	    
	    /**
        * Create a snap shot item
        * 
        * @param aUid of folder whose snapshot to be created
        * @retrun TNSmlSnapshotItem class 
        *         
        */
	    virtual TNSmlSnapshotItem CreateFolderSnapShotItemL( const TCalLocalUid& aUid ) = 0;
	    
	    /**
        * Determine the folder owner
        * 
        * @return TInt uid of the owner application
        *         
        */	    
	    virtual TInt DeviceSyncOwner() = 0;
	    
	    /**
        * Determines the sync status of the folder
        * 
        * @param aUid determine the folder whose sync status to be retrieved
        * @return TBool sync status
        *         
        */
	    virtual TBool FolderSyncStatusL( TSmlDbItemUid aUid ) = 0;
	    
	    /**
        * Determines the sync status of the folder
        * 
        * @param aFolderName determine the folder whose sync status to be retrieved
        * @return TBool sync status
        *         
        */	    
	    virtual TBool FolderSyncStatusL( HBufC* aFolderName ) = 0; 
	    
	public:
	    /**
        * Variable to hold the Plugin's Opaque Data
        */
	    HBufC8* iOpaqueData;
   
	private:    
		/**
		* Used internally to create ECOM implementation
	    */
  	   	TUid iDtor_ID_Key;  	   
    
    };

#include "nsmlagendaadapterhandler.inl"

#endif		// C_NSMLAGENDA_ADAPTERHANDLERPLUGIN_H

// End of File