diff -r a36b1e19a461 -r 989d2f495d90 serviceproviders/sapi_landmarks/inc/landmarkinterface.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/serviceproviders/sapi_landmarks/inc/landmarkinterface.h Fri Jul 03 15:51:24 2009 +0100 @@ -0,0 +1,464 @@ +/* +* Copyright (c) 2005-2006 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: CLandmarkInterface class +* +*/ + + +#ifndef __LANDMARKINTERFACE_H__ +#define __LANDMARKINTERFACE_H__ + +//INCLUDES +#include +#include +#include + +//FORWARD DECLARATION +class CLandmarkService; +class CLandmarkObserver; +class CLandmarkCallbackMap; + +/** +* CLandmarkInterface +* This class inherits from MLiwInterface and implements the +* ExecuteCmdL( const TDesC8& aCmdName, +* const CLiwGenericParamList& aInParamList, +* CLiwGenericParamList& aOutParamList, TUint aCmdOptions = 0, +* MLiwNotifyCallback* aCallback = 0) and +* Close() functions. The member functions of this class parses the input parameters, +* constructs proper structures and calls the corresponding service class functions +* based on the input arguments. +*/ +// CLASS DECLARATION +NONSHARABLE_CLASS(CLandmarkInterface): public CBase, public MLiwInterface + { + public: + /** + * TParamIndex + * Specifies whether the id passed is a landmark id or a category id. + */ + enum TParamIndex + { + EIndex0 = 0, + EIndex1, + EIndex2, + EIndex3 + }; + + public://New Methods + + /** + * NewL. + * Two-phased constructor. + * Create a CLandmarkInterface object. + * @return A pointer to the created instance of CLandmarkInterface. + */ + static CLandmarkInterface* NewL(); + + public: // from MLiwInterface + + // The consumer application should call this method to execute a service + // command directly on the interface. The service provider should + // provide a concrete implementation for the supported service + // command aCmdName. The consumer application should fill in the necessary + // parameters in \em aInParamList. + + void ExecuteCmdL( const TDesC8& aCmdName, + const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions = 0, + MLiwNotifyCallback* aCallback = 0); + + // The service provider should provide a concrete implementation + // for this method. The internal state of the service provider + // implemeting \c MLiwInterface can be reset within this method. + // The consumer application should call this method if there + // are no more service commands to be executed on the interface. + void Close(); + + /** + * Callback + * This function returns the callback for the corresponding asynchronous request whose + * transaction id is passed. + * + * @param aTransactionId Transaction id of asynchronous request whose callback is required.. + * @return The callback of the asynchronous request. + */ + MLiwNotifyCallback* Callback( TInt32 aTransactionId ); + + /** + * SetActiveL + * This function sets the requested database to active. The URI of the database should + * be passed in the input parameter list. + * + * @param aInParamList the input parameter list. + */ + void SetActiveL( const CLiwGenericParamList& aInParamList ); + + /** + * SapiError + * This function maps sapi error. + * + * @param aSymbianErr symbian error code. + * + */ + TInt SapiError ( TInt aSymbianErr ); + + private: + + /** + * ConstructL + * 2nd phase constructor. + * Perform the second phase construction of CLandmarkInterface object. + */ + void ConstructL(); + + /** + * C++ default constructor. + * By default Symbian OS constructor is private. + */ + CLandmarkInterface(); + + /** + * ~CLandmarkInterface + * Destructor. + */ + ~CLandmarkInterface(); + + private:// delegator functions + + /** + * SwitchCmdL + * This function delegates the control to other functions based on the command. + * + * @param aCmdName the name of the service command which the consumer wants to invoke. + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, can be empty list or may contain the errors. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void SwitchCmdL( const TDesC8& aCmdName, + const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * GetListL + * This function delegates the control to other functions based on the + * content type of the object requested for retrieval. + * + * @param aInParamList the input parameter list. This is parsed and appropriate + * functions are called based on the type of item to be retrieved (KContentType). + * @param [in,out] aOutParamList the output parameter list, may contain an iterable instance, an error or be empty. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void GetListL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * AddL + * This function delegates the control to other functions based on the + * content type of the object requested for addition to database. + * + * @param aInParamList the input parameter list. This is parsed and appropriate + * functions are called based on the type of item to be added (KContentType). + * @param [in,out] aOutParamList the output parameter list, may contain the iterable instance. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void AddL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * RemoveL + * This function deletes an item from database based on the type of item. + * + * @param aInParamList the input parameter list. This contains the details about the item to be removed. + * @param [in,out] aOutParamList the output parameter list, is an empty list. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void RemoveL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * ImportL + * This function imports landmarks from a file to the database. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, may contain the iterable instance. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void ImportL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * ExportL + * This function exports a set of landmarks from database to a file. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, is an empty list. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void ExportL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * OrganiseL + * This function links/unlinks a landmark category to a set of landmarks. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, is an empty list. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void OrganiseL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * Cancel + * This function cancels a previously requested aynchronous request + * based on transaction id. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, is an empty list. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void Cancel( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * NewTemplateL + * This function returns a template of the requested type. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, contains the template and error code. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void NewTemplateL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + private:// helper functions + + /** + * GetLandmarksL + * This function retrieves a set of landmarks based on a filter. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, may contain the iterable instance. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void GetLandmarksL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * GetCategoriesL + * This function retrieves a set of landmark categories based on a filter. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList the output parameter list, may contain the iterable instance. + * @param aCmdOptions Options for the command, see TLiwServiceCmdOptions in LiwCommon.hrh. + * @param aCallback callback to be registered by consumer application + * + * + * + * @see TLiwServiceCmdOptions + * @see CLiwGenericParamList + * @see MLiwNotifyCallback + * + */ + void GetCategoriesL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList, TUint aCmdOptions, + MLiwNotifyCallback* aCallback ); + + /** + * GetListDatabasesL + * This function retrieves a set of landmark databases based on a filter. + * + * @param aInParamList the input parameter list. + * @param [in,out] aOutParamList may contain the iterable instance. + * + * @see CLiwGenericParamList + * + */ + void GetListDatabasesL (const CLiwGenericParamList& aInParams, + CLiwGenericParamList& aOutParamList ); + + /** + * AddLandmarksL + * This function adds a landmark to a landmark database. + * + * @param aInParamList the input parameter list. + * + * @see CLiwGenericParamList + * + */ + void AddLandmarksL( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList ); + + /** + * AddCategoryL + * This function adds a landmark category to a landmark database. + * + * @param aInParamList the input parameter list. + * + * @see CLiwGenericParamList + * + */ + void AddCategoryL ( const CLiwGenericParamList& aInParamList, + CLiwGenericParamList& aOutParamList ); + + /** + * AddDatabaseL + * This function adds a landmark database. + * + * @param aInParamList the input parameter list. + * + * @see CLiwGenericParamList + * + */ + void AddDatabaseL ( const CLiwGenericParamList& aInParams ); + + void ErrorMessageL( const TDesC8& aServiceCmd, const TDesC8& aKey ); + + void ValidateParamL( const TDesC8& aServiceCmd, + const TDesC8& aKey, + const TLiwVariant& aVariant, + LIW::TVariantTypeId aType ); + + TBool ValidateParamL( const TDesC8& aServiceCmd, + const TDesC8& aKey, + const CLiwMap* aMap, + LIW::TVariantTypeId aType, + TBool isMandatory, + TLiwVariant& aOutVariant ); + + private:// Data + + /** + * iService + * The handle to the CLandmarkService object. + */ + CLandmarkService* iService; + + /** + * iObserver + * MLandmarkObserver instance. + */ + CLandmarkObserver* iObserver; + + /** + * iCallbackMap + * Array of CLandmarkCallbackMap objects. + */ + RPointerArray iCallbackMap; + + /** + * iErrMsg + * The pointer to the error message. + */ + HBufC* iErrMsg; + + /** + * iId + * The id of the added/modified landmark/category. + */ + HBufC* iId; + }; + +#endif // __LANDMARKINTERFACE_H__