diff -r 0efa10d348c0 -r a5a39a295112 homescreensrv_plat/hs_settings_api/inc/hspluginsettings.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreensrv_plat/hs_settings_api/inc/hspluginsettings.h Wed Sep 01 12:22:09 2010 +0100 @@ -0,0 +1,260 @@ +/* +* 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_CHomeScreenSettingsIf_H +#define C_CHomeScreenSettingsIf_H + +#include +#include // for MLiwNotifyCallback +#include +#include + +class CLiwServiceHandler; +class MLiwInterface; +class CLiwCriteriaItem; +class CLiwMap; +class CLiwList; +class MDesC8Array; +class CLiwDefaultMap; +class CLiwDefaultList; +class MLiwNotifyCallback; +class CLiwGenericParamList; + + +namespace HSPluginSettingsIf{ + +class CHspsConfiguration; +class CItemMap; +class CPropertyMap; +class MHomescreenSettingsObserver; + +/** + * Wrapper for hsps liw service + * + * + * @code + * + * @endcode + * + * @lib HomeScreenSettingsIf.lib + * @since S60 v5.0 + */ +NONSHARABLE_CLASS( CHomescreenSettings ) : + public CBase, + public MLiwNotifyCallback, + public MHomescreenSettingsIf + { +public: // static methods + /** + * Get instance to settings API. + * + * InitializeL must be called before calling this method. + * Otherwise NULL is returned. InitializeL and Instance + * must be called within same thread since TLS is used + * to storage instance data. + * + * @return CHomescreenSettings* Pointer to settings api. + * Can return NULL in case of + * error. + */ + IMPORT_C static CHomescreenSettings* Instance(); + + /** + * Initialize settings api. + * + * There must be one UnInitialize call for each Initialize call + * in order to prevent memory leaking. + * (Implementation contains reference counting) + */ + IMPORT_C static void InitializeL( const TDesC8& aAppUid ); + + /** + * Uninitialize settings api. + * + * There must be one UnInitialize call for each Initialize call + * in order to prevent memory leaking. + * (Implementation contains reference counting) + */ + IMPORT_C static void UnInitialize(); + +public: + /** + * Add observer + * + * @param aObserver Observer to be added. + */ + IMPORT_C void AddObserverL( MHomeScreenSettingsObserver* aObserver ); + + /** + * Remove observer + * + * @param aObserver Observer to be removed. + */ + IMPORT_C void RemoveObserver( MHomeScreenSettingsObserver* aObserver ); + +public: + /** + * From MHomescreenSettingsIf + * 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 GetSettingsL( + const TDesC8& aPluginId, + RPointerArray& aSettings ); + + /** + * From MHomescreenSettingsIf + * 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 + * @param aStoringParam parameter to tell whether plugin configuration need to be saved also if parameter is ETrue. + * @return Operation status. KErrNone (success), KErrNotFound + */ + IMPORT_C TInt SetSettingsL( + const TDesC8& aPluginId, + const RPointerArray& aSettings, + const TBool aStoringParam ); + +protected: + /** + * Two-phased constructor. + * + * @param aAppUid Application uid in integer format + */ + static CHomescreenSettings* NewL( const TDesC8& aAppUid ); + + /** + * Two-phased constructor. + * + * @param aAppUid Application uid in integer format + */ + static CHomescreenSettings* NewLC( + const TDesC8& aAppUid ); + + /** + * Destructor. + */ + virtual ~CHomescreenSettings(); + + /** + * Constructor. + */ + CHomescreenSettings(); + + /** + * Second phase constructor + * + * @param aAppUid Application uid in integer format + */ + void ConstructL( const TDesC8& aAppUid ); + + /** + * Processes all items configuration setting + * @param aItemList item list + * @param aTarget output hsps configuration + */ + void ProcessConfigurationSettingsL( + const CLiwList& aItemList, + CHspsConfiguration& aTarget ); + + /** + * Processes all items' properties configuration + * + * @param aPropertyMapList input properties + * @param aItemMap output item + */ + void ProcessConfItemPropertiesL( + const CLiwList& aPropertyMapList, + CItemMap& aItemMap ); + + /** + * Fills liw map from given item + * @param aMap liw item map to fill in + * @param aItemMap item map + */ + void FillMapFromItemL( CLiwDefaultMap& aMap, const CItemMap& aItemMap ); + + /** + * Fills liw map from given item properties + * @param aMap liw map to fill in + * @param aItemMap item properiteis map + */ + void FillMapFromPropertiesL( + CLiwDefaultList& aInPropertyMapList, + const RPointerArray& aProperties ); + + /** + * Sets plugin settings + * @param aPluginId plugin id + * @param aSettings array of items to set + * @param aStoringParam parameter to tell whether plugin configuration need to be saved. + * @return + */ + TInt SetPluginSettingsL( + const TDesC8& aPluginId, + const RPointerArray& aSettings, + const TDesC8& aStoringParam ); + +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; + + /* + * Asynchronous service request tarnsaction id + */ + TInt iTransactionId; + + /* + * List of observers. Items not owned! + */ + RPointerArray iObservers; + }; + +} //namespace HSPluginSettingsIf + +#endif // C_CHomeScreenSettingsIf_H