idlehomescreen/sapiwrapper/hspswrapper/inc/hspswrapper.h
changeset 0 f72a12da539e
child 1 5315654608de
--- /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 <e32base.h>
+#include <LiwCommon.h>      // 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<CPluginInfo>& 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<CPluginInfo>& 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<CItemMap>& 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<CPluginInfo>& aPlugins);
+    void FillMapFromItemL( CLiwDefaultMap& aMap, const CItemMap& aItemMap );
+    void FillMapFromPropertiesL( CLiwDefaultList& aInPropertyMapList, const RPointerArray<CPropertyMap>& 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