diff -r 000000000000 -r f72a12da539e idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h Thu Dec 17 08:40:49 2009 +0200 @@ -0,0 +1,355 @@ +/* +* Copyright (c) 2008 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: Encapsulates hsps liw service +* +*/ + + + +#ifndef C_CHSPSWRAPPER_H +#define C_CHSPSWRAPPER_H + +#include +#include // for MLiwNotifyCallback + +class CLiwServiceHandler; +class MLiwInterface; +class CLiwCriteriaItem; +class CLiwMap; +class CLiwList; +class MDesC8Array; +class CLiwDefaultMap; +class CLiwDefaultList; +class MLiwNotifyCallback; +class CLiwGenericParamList; + +namespace hspswrapper{ + + +class CHspsConfiguration; +class CItemMap; +class CPluginInfo; +class CAddPluginResult; +class CPropertyMap; + +/** + * Observer class for hspswrapper + * + * @code + * + * @endcode + * + * @lib hspswrapper.lib + * @since S60 v5.0 + */ +class MHspsWrapperObserver + { +public: + /** + * Handle HSPS wrappper notifications + * + * @param aEvent Event + * @param aAppConfUid App configuration uid + * @param aPluginName Plugin name + * @param aOrigUid Originator uid + * @param aPluginUid Plugin uid + * @param aPluginId Plugin id + */ + virtual TInt HandleNotifyL( const TDesC8& aEvent, + const TDesC8& aAppConfUid, + const TDesC8& aPluginName, + const TDesC8& aOrigUid, + const TDesC8& aPluginUid, + const TDesC8& aPluginId ) = 0; +protected: + /** + * Destructor. Protected to prevent deletion through this interface. + */ + ~MHspsWrapperObserver() { } + }; + +/** + * Return value from add plugin + * + * @code + * + * @endcode + * + * @lib hspswrapper.lib + * @since S60 v5.0 + */ +class CAddPluginResult: public CBase + { +public: + IMPORT_C static CAddPluginResult* NewL(); + IMPORT_C ~CAddPluginResult(); + /** + * Set plugin id + * + * @param aPluginId Plugin id + */ + IMPORT_C void SetPluginIdL(const TDesC8& aPluginId); + /** + * Get plugin id + * + * @return Plugin id or KNullDesC8 + */ + IMPORT_C const TDesC8& PluginId()const; + + /** + * Set operation status + * + * @param aStatus Operation status + */ + IMPORT_C void SetStatus(TInt aStatus); + /** + * Get operation status + * + * @return KErrNotFound, if operation fails + */ + IMPORT_C TInt Status()const; +private: + CAddPluginResult(); +private: + /** + * Status of operation. KErrNotFound, if operation fails + */ + TInt iStatus; + /** + * Own. Id of the added plugin in the configuration + */ + HBufC8* iPluginId; + }; + + +/** + * Wrapper for hsps liw service + * + * + * @code + * + * @endcode + * + * @lib hspswrapper.lib + * @since S60 v5.0 + */ +class CHspsWrapper : public CBase, public MLiwNotifyCallback + { +public: + /** + * Two-phased constructor. + * @param aAppUid Application uid in integer format + * @param aObserver Observer + */ + IMPORT_C static CHspsWrapper* NewL(const TDesC8& aAppUid, + MHspsWrapperObserver* aObserver = NULL); + /** + * Two-phased constructor. + * @param aAppUid Application uid in integer format + * @param aObserver Observer + */ + IMPORT_C static CHspsWrapper* NewLC(const TDesC8& aAppUid, + MHspsWrapperObserver* aObserver = NULL); + /** + * Destructor. + */ + IMPORT_C virtual ~CHspsWrapper(); + + /** + * Fetch active application configuration from hsps and + * creates CHspsConfiguration out of liw message + * + * @return Configuration. Caller has ownership. + */ + IMPORT_C CHspsConfiguration* GetAppConfigurationL(); + + /** + * Fetch root configurations from hsps. On return aConfs holds + * configuration info instancies. Caller takes ownership of + * configuration info instancies. + * + * @param aPlugins Array to hold configuration info instancies + */ + IMPORT_C void GetAppConfigurationsL( RPointerArray& aPlugins ); + + /** + * Sets root configuration to active. + * + * @param aConfigurationUid Configuration uid to be activated + * @return Operation status. KErrNone (success), KErrNotFound + */ + IMPORT_C TInt SetAppConfigurationL(const TDesC8& aConfigurationUid ); + + /** + * Fetch plugin configuration from hsps and + * creates CHspsConfiguration out of liw message + * + * @param aPluginId Id of plugin configuration + * @return Configuration. Caller has ownership. + */ + IMPORT_C CHspsConfiguration* GetPluginConfigurationL(const TDesC8& aPluginId); + /** + * Fetch plugins from hsps. On return aPlugins holds plugin info + * instancies. Caller takes ownership of plugin info instancies. + * + * @param aPlugins Array to hold plugin info instancies + * @param aPluginInterface Plugin interface id + * @param aPluginType view, widget or template + */ + IMPORT_C void GetPluginsL( RPointerArray& aPlugins, + const TDesC8& aPluginInterface, + const TDesC8& aPluginType); + + /** + * Add plugin to hsps. + * + * @param aTargetConfiguration Id of configuration where the new plugin is attached + * @param aPluginUid Plugin uid which is added + * @param aPos Position in configuration's plugin list + */ + IMPORT_C CAddPluginResult* AddPluginL(const TDesC8& aTargetConfiguration, const TDesC8& aPluginUid); + + /** + * Remove plugin from the active configuration. + * + * @param aPluginId Plugin id to be removed + * @return Operation status. KErrNone (success), KErrNotFound + */ + IMPORT_C TInt RemovePluginL(const TDesC8& aPluginId); + + /** + * Sets plugin active into active configuration. + * + * @param aPluginId Plugin id to be activated + * @return Operation status. KErrNone (success), KErrNotFound + */ + IMPORT_C TInt SetActivePluginL(const TDesC8& aPluginId); + + /** + * Replace plugin in the active configuration. + * + * @param aPluginId Plugin id to be replaced + * @param aConfUid Configuration uid of the new plugin + * @return Operation status. KErrNone (success), KErrNotFound + */ + IMPORT_C TInt ReplacePluginL( + const TDesC8& aPluginId, + const TDesC8& aConfUid ); + + /** + * Move plugin inside configuration. + * + * @param aConfId Configuration + * @param aPluginIds List of plugins included in the configuration in new order + * @return Operation status. KErrNone (success), KErrArgument, KErrNotFound + */ + IMPORT_C TInt MovePluginsL(const TDesC8& aConfId, const MDesC8Array& aPluginIds); + + /** + * Stores defined plugin’s settings. + * Plugin is identified with unique plugin ID used in application’s configuration + * + * @param aPluginId Pluging’s ID which settings are stored + * @param aSettings List of item maps + * @return Operation status. KErrNone (success), KErrNotFound + */ + IMPORT_C TInt SetPluginSettingsL(const TDesC8& aPluginId, const RPointerArray& aSettings); + + /** + * Add plugin to hsps. + * + * @param aTargetConfiguration Id of configuration where the new plugin is attached + * @param aPluginUid Plugin uid which is added + * @param aIndex Position to which plugin is added + */ + IMPORT_C CAddPluginResult* AddPluginL(const TDesC8& aTargetConfiguration, const TDesC8& aPluginUid, const TInt aIndex); + + /** + * Set plugin configure state to hsps. + * + * @param aConfId Configuration id of a plugin that should be confirmed. + * @param aState State of the plugin + * @param aIncludePlugins ETrue if aState is set to child plugins, EFalse default. + * @return Operation status. KErrNone (success), KErrNotFound + */ + IMPORT_C TInt SetConfStateL( const TDesC8& aConfId, const TDesC8& aState, TBool aIncludePlugins = EFalse ); + + /** + * Returns SAPI service handler. + */ + IMPORT_C CLiwServiceHandler* ServiceHandler() const; + + /** + * Returns HSPS SAPI service + */ + IMPORT_C CLiwCriteriaItem* HspsService() const; + + /** + * Returns HSPS services interface + */ + IMPORT_C MLiwInterface* HspsInterface() const; + +protected: + CHspsWrapper(MHspsWrapperObserver* aObserver); + void ConstructL(const TDesC8& aAppUid); + + void ProcessConfigurationMapL(const CLiwMap& aSource, CHspsConfiguration& aTarget); + void ProcessConfigurationPluginsL(const CLiwList& aPluginsList, CHspsConfiguration& aTarget); + void ProcessConfigurationSettingsL(const CLiwList& aItemList, CHspsConfiguration& aTarget); + void ProcessConfigurationResourcesL(const CLiwList& aObjectList, CHspsConfiguration& aTarget); + void ProcessConfItemPropertiesL(const CLiwList& aPropertyMapList,CItemMap& aItemMap); + void ProcessPluginsL(const CLiwList& aPluginInfoMapList, RPointerArray& aPlugins); + void FillMapFromItemL( CLiwDefaultMap& aMap, const CItemMap& aItemMap ); + void FillMapFromPropertiesL( CLiwDefaultList& aInPropertyMapList, const RPointerArray& aProperties ); + +protected: // from MLiwNotifyCallback + + /** + * Handle HSPS notifications + * + * @param aCmdId Command id + * @param aEventId Event id + * @param aEventParamList Event parameters + * @param aInParamList In parameters + */ + TInt HandleNotifyL(TInt aCmdId, TInt aEventId, + CLiwGenericParamList& aEventParamList, + const CLiwGenericParamList& aInParamList); + +private: // data + + /** + * Owned. SAPI service handler. + */ + CLiwServiceHandler* iServiceHandler; + /** + * Owned. HSPS SAPI service. + */ + CLiwCriteriaItem* iHspsService; + /** + * Owned. Provides hsps services. + */ + MLiwInterface* iHspsInterface; + /** + * Not owned. Wrapper observer + */ + MHspsWrapperObserver* iObserver; + /* + * Asynchronous service request tarnsaction id + */ + TInt iTransactionId; + }; +} + +#endif // C_CHSPSWRAPPER_H