/*
* 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:
*
* ChspsMaintenanceHandler is a server-side implementation of MhspsMaintenanceService API-definition of
* HSPS Theme Management Services.
* Theme Maintenance Service is intended to serve HSPS applications as well as S60 legacy
* applications - especially Personalisation Application - with Theme Maintenance Services.
* Theme maintenance can take place after a set of themes are installed by HSPS Theme
* Installation Service. Maintenance services includes theme listings, theme activation,
* theme removal, and default theme restoring functionality.
*
* Maintenance functions deploy Definition Repository and Symbian Central Repository.
* Definition Repository keeps Application Themes in save place and Central Repository keeps the
* information about which theme is active for what application. Information in Central Repository
* is stored in pairs of application UID and active theme UID.
* ChspsMaintenanceHandler utilizes ChspsODT class to exchange the information of Application Themes.
* DOM-document member of ChspsODT is not attached in theme maintenance operations, only the theme
* header. For more information, see HSPS Theme Management Service APIs documentation.
*
*
*/
#ifndef __hspsMAINTENANCEHANDLER_H__
#define __hspsMAINTENANCEHANDLER_H__
#ifdef HSPS_LOG_ACTIVE
class ChspsLogBus;
#endif
class MhspsMaintenanceService;
class ChspsDefinitionRepository;
class ChspsSecurityEnforcer;
class ChspsODT;
class CRepository;
class ChspsThemeServer;
class ChspsThemeServerSession;
class ChspsResult;
class ChspsDomNode;
/**
* Class ChspsMaintenanceHandler.
* ChspsMaintenanceHandler performs all theme maintenance related functionality for hspsThemeServer.
* Maintenance services includes theme listing, theme activation, theme removal and default theme
* restoring operations.
*
* Class inheritance:
* ==================
* ChspsMaintenanceHandler derives CTimer for active timer functionality. It implements
* MhspsMaintenanceService-interface from HSPS Theme Management Service APIs.
* For more information, see HSPS Theme Management Service API documentation.
*
* Functionality:
* ==============
* Maintenance functions are presented in high-level and low-level parametrization mode.
* This is the same approach that was introduced with HSPS Theme Installation Service
* - to support user-intefaces with human-readable high-level elements and on the other hand,
* machine-originated users with low-level data.
* Most of the maintenance functions are synchronous, only one is asynchronous; hspsGetNextHeader().
* Others functions are straightforward to use but hspsGetListHeaders(). This will be explained next; synchronous
* call hspsGetListHeaders() initiates the theme header listing by passing search mask to HSPS
* Theme Server's Maintenance Service. This search mask is called a query. It also passes a list
* object in where maintenance service should append theme-header objects (type of ChspsODT-class
* without DOM-document) when one is retrieved asychronously. Search mask should be filled with
* proper parameters matching the need in hand. If no parameters are given, all headers of
* Application Themes available in Definition Repository will be delivered, otherwise,
* only sub-set of theme-headers will be delivered.
* After the query-call hspsGetListHeaders(), the delivering of the theme-headers is asynchronous.
* Asynchronous service must be initiated by calling hspsGetNextHeader() after checking that any
* theme matching on current query is found. This action is called a subscription.
* To receive theme listing, the client application must implement
* MhspsThemeManagementServiceObserver-interface and start to listen call-back messages.
* The headers matching on query will be delivered immediately. Query remains until
* hspsCancelGetListHeaders() is called by client. If a new Application Theme exist in repository,
* it will be delivered. As mentioned, when hspsGetListHeaders() returns, the return value must
* be checked. Return value could be one of the following:
* - EhspsGetListHeadersSuccess - there is at least one Application Theme available matching on
* query. Call first hspsGetNextHeader() to get the headers. Same call
* will set the subscribtion of new ones possible coming available
* later on.
* - EhspsGetListHeadersEmpty - there is no themes matching on the query available at the time,
* however, some might be exist later in due to installations.
* Client application should retain the subcription.
* - EhspsGetListHeadersFailed - service request failed in some reason. Possible reasons are for
* e.g. the missing rights to list headers queried.
*
* In the near future, there will be s.c. Additional Return Code Support feature available in
* HSPS. This code will express for e.g. the number of headers to be delivered or possible system
* error code in failed cases.
*
* By MhspsServiceObserver::HandlehspsServiceMessage() call-back function implementation, client
* application must listen the following ThspsServiceCompletedMessage-messages:
* - EhspsGetListHeadersUpdate - header list on the client side has a new object appended at the end
* of the list,
* - EhspsGetListHeadersRestart - header list on server side has changed so much that the client must
* empty the list printed on screen. New list will be delivered
* immediately. The subscription stands.
* - EhspsGetListHeadersEmpty - header list on server side is now empty. The client must empty
* the list on screen if printed. The subscription stands.
* - EhspsGetListHeadersFailed - operation has failed. Client should cancel request and restart,
* perhaps.
*
* Maintenanace functions may also return one of the following codes:
* - EhspsServiceRequestSheduled, or
* - EhspsServiceRequestError.
*
* For explanation of the meanings of these messages, see ThspsServiceCompletedMessage-documentation.
*
* @ingroup group_hspsserversession
* @lib hspsThemeServer.exe
* @since S60 3.1
*/
class ChspsMaintenanceHandler : public CTimer, public MhspsMaintenanceService,
public MhspsDefinitionRepositoryObserver
{
public: // Constructors and destructor
/**
* NewL.
* Two-phased constructor.
* @since S60 5.0
* @param aThemeServer Server instance
* @param aSecureId Identifies the client application which uses the handler
*/
static ChspsMaintenanceHandler* NewL(
ChspsThemeServer& aThemeServer,
const TUint aSecureId = 0 );
/**
* NewLC.
* Two-phased constructor.
* @since S60 5.0
* @param aThemeServer Server instance
* @param aSecureId Identifies the client application which uses the handler
*/
static ChspsMaintenanceHandler* NewLC(
ChspsThemeServer& aThemeServer,
const TUint aSecureId = 0 );
/**
* Destructor.
*/
virtual ~ChspsMaintenanceHandler();
public: // New functions
/**
* ServiceGetListHeadersL
* @since S60 3.1
* @param aMessage contains the data received from the client
*/
void ServiceGetListHeadersL(const RMessage2& aMessage);
/**
* ServiceGetNextHeaderL
* @since S60 3.1
* @param aMessage contains the data received from the client
*/
void ServiceGetNextHeaderL(const RMessage2& aMessage);
/**
* ServiceSetActiveThemeL
* @since S60 3.1
* @param aMessage contains the data received from the client
*/
void ServiceSetActiveThemeL(const RMessage2& aMessage);
/**
* ServiceRestoreDefaultL
* @since S60 3.1
* @param aMessage contains the data received from the client
*/
void ServiceRestoreDefaultL(const RMessage2& aMessage);
/**
* ServiceRemoveThemeL
* @since S60 3.1
* @param aMessage contains the data received from the client
*/
void ServiceRemoveThemeL(const RMessage2& aMessage);
/**
* ServiceAddPluginL
* @since S60 5.0
* @param aMessage contains the data received from the client
*/
void ServiceAddPluginL(const RMessage2& aMessage);
/**
* ServiceRemovePluginL
* @since S60 5.0
* @param aMessage contains the data received from the client
*/
void ServiceRemovePluginL( const RMessage2& aMessage );
/**
* ServiceSetActivePluginL
* @since S60 5.0
* @param aMessage contains the data received from the client
*/
void ServiceSetActivePluginL( const RMessage2& aMessage );
/**
* ServiceReplacePluginL
* @since S60 5.0
* @param aMessage contains the data received from the client
*/
void ServiceReplacePluginL( const RMessage2& aMessage );
/**
* ServiceSetPluginSettingsL
* @since S60 5.0
* @param aMessage contains the data received from the client
*/
void ServiceSetPluginSettingsL( const RMessage2& aMessage );
/*
* ServiceGetPluginOdtL
* @since S60 5.0
* @param aMessage contains
*/
void ServiceGetPluginOdtL( const RMessage2& aMessage );
/**
* ServiceMovePluginsL
* @since S60 5.0
* @param aMessage contains the data received from the client
*/
void ServiceMovePluginsL( const RMessage2& aMessage );
/**
* ServiceSetConfStateL
* @since S60 5.0
* @param aMessage contains the data received from the client
*/
void ServiceSetConfStateL( const RMessage2& aMessage );
/**
* ServiceRestoreActiveAppConfL
* @since S60 5.0
* @param aMessage contains the data received from the client
*/
void ServiceRestoreActiveAppConfL( const RMessage2& aMessage );
#ifdef HSPS_LOG_ACTIVE
/**
* Set log bus.
*/
void SetLogBus( ChspsLogBus* aLogBus );
#endif
/**
* SetServerSession.
* @since S60 5.0
* @param @param aServerSession Pointer to owning server session
*/
void SetServerSession( ChspsThemeServerSession* aServerSession );
/**
* ServiceRestoreConfigurationsL
* @since S60 5.2
* @param aMessage contains the data received from the client
*/
void ServiceRestoreConfigurationsL( const RMessage2& aMessage );
public: // Functions from base classes
/**
* From MhspsMaintenanceService hspsGetListHeaders
* @since S60 3.1
* @param aSearchMask is ChspsODT-object which attributes are filled to present search
* parameters for theme set queried by client. This parametrisation follows
* the high-level schema.
* @param aHeaderList is an list object able to carry ChspsODT-objects.
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsGetListHeaders(const TDesC8& aSearchMaskData,
CArrayPtrSeg<HBufC8>& aHeaderDataList);
/**
* From MhspsMaintenanceService hspsGetNextHeader
* @since S60 3.1
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsGetNextHeader();
/**
* From MhspsMaintenanceService hspsCancelGetListHeaders
* @since S60 3.1
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsCancelGetListHeaders();
/**
* From MhspsMaintenanceService hspsSetActiveTheme
* @since S60 3.1
* @param aSetMask represents parameters by which the new theme activation will be done.
There must be sufficient set of parameters presented, at least a theme UID.
* @param aOdt is an empty ODT-object which will contain the ODT of activated
* theme on the return of the call. This parametrisation follows the high-level
* schema. There must be sufficient set of parameters presented, at least a theme UID.
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsSetActiveTheme( const ChspsODT& aSetMask, ChspsODT& aOdt );
/**
* From MhspsMaintenanceService hspsRestoreDefault
* @since S60 3.1
* @param aSetMask is an ODT-header parametrized enough to express the theme to be made
* active.
* @param aHeader is an empty ODT-header object that will contain the header of the theme
* actually made active if the request was successful.
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsRestoreDefault( const ChspsODT& aSetMask, ChspsODT& aHeader );
/**
* From MhspsMaintenanceService hspsRemoveThemeL
* @since S60 3.1
* @param aSetMask is an ODT-header parametrized enough to express the theme to be removed.
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsRemoveThemeL( const ChspsODT& aSetMask );
/**
* From MhspsMaintenanceService hspsGetListHeaders
* @since S60 3.1
* @param aSearchMaskData is serialized ChspsODT-object. Before serializing, attributes
* in ChspsODT-object were filled to present a search parameters for theme set queried.
* Serialized data parametrisation follows the low-level schema.
* @param aHeaderList is an list object able to carry serialized ChspsODT-objects.
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsGetListHeaders(const ChspsODT& /*aSearchMask*/
, CArrayPtrFlat<ChspsODT>& /*aHeaderList*/);
/**
* From MhspsMaintenanceService hspsSetActiveTheme
* @since S60 3.1
* @param aSetMaskData is externalized version of ChspsODT-object presenting parameters by
* which the new theme activation will be done. There must be sufficient set of
* parameters presented, at least a theme UID. This parametrisation follows the
* low-level schema.
* @param aHeaderData is an empty description for externalized ODT-object data.
* When internalized, this object will contain the header of newly activated theme
* as a result of the call.
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsSetActiveTheme(const TDesC8& /*aSetMaskData*/
, TDes8& /*aHeaderData*/);
/**
* From MhspsMaintenanceService hspsAddPlugin
* Not used - see ServiceAddPluginL instead which has a diffrent input
* @since S60 5.0
*/
ThspsServiceCompletedMessage hspsAddPlugin(
const TInt /*aAppUid*/,
const TInt /*aParentPluginId*/,
const TInt /*aPluginUid*/,
const TInt /*aPosition*/,
TInt& /*aAddedPluginId*/ );
/**
* From MhspsMaintenanceService hspsRemovePlugin
* Not used - see ServiceRemovePluginL instead which has a diffrent input
*/
ThspsServiceCompletedMessage hspsRemovePlugin(
const TInt /*aAppUid*/,
const TInt /*aPluginId*/ );
/**
* From MhspsMaintenanceService hspsSetActivePlugin
* Not used - see ServiceRemovePluginL instead which has a diffrent input
*/
ThspsServiceCompletedMessage hspsSetActivePlugin(
const TInt aAppUid,
const TInt aPluginId
);
/**
* From MhspsMaintenanceService hspsReplacePlugin
* Not used - see ServiceReplacePluginL instead which has a diffrent input
*/
ThspsServiceCompletedMessage hspsReplacePlugin(
const TInt /*aAppUid*/,
const TInt /*aPluginId*/,
const TInt /*aConfUid*/ );
/**
* From MhspsMaintenanceService hspsSetSettings
* Not used - see ServiceRemovePluginL instead which has a diffrent input
*/
ThspsServiceCompletedMessage hspsSetPluginSettings(
const ChspsODT& /*aHeader*/,
const TInt /*aPluginId*/,
ChspsDomDocument& /*aDom*/,
const TBool /*aPluginStoringStatus*/);
/**
* From MhspsMaintenanceService hspsMovePluginsL
* Not used - see ServiceMovePluginsL instead which has a diffrent input
*/
ThspsServiceCompletedMessage hspsMovePluginsL(
const TInt /*aAppUid*/,
const TInt /*aConfId*/,
const CArrayFixFlat<TInt>& /*aPluginIdList*/ );
TInt UpdatePluginListL(
ChspsODT& aAppODT,
const TInt aConfigurationId,
const CArrayFixFlat<TInt>& aPluginIdList );
/**
* From MhspsMaintenanceService hspsSetConfState
* Not used - see ServiceSetConfStateL instead which has a diffrent input
*/
ThspsServiceCompletedMessage hspsSetConfState(
const TInt /*aAppUid*/,
const TInt /*aConfId*/,
const ThspsConfigurationState /*aState*/,
const ThspsConfStateChangeFilter /*aFilter*/ );
/**
* From MhspsMaintenanceService hspsRestoreActiveAppConf
* Not used - see ServiceRestoreActiveAppConfL instead which has a diffrent input
*/
ThspsServiceCompletedMessage hspsRestoreActiveAppConf(
const TInt /*aAppUid*/,
const TInt /*aConfUid*/ );
/**
* Updates plugin configuration in all application configuration
*
* @since S60 5.0
* @param apluginUid identifies the plugin configuration
* @return ThspsServiceCompletedMessage expressing the result of the call.
*/
ThspsServiceCompletedMessage hspsPluginUpdateL(
const ChspsODT& aOdt );
public: // from MhspsDefinitioRepositoryObserver
TBool HandleDefinitionRespositoryEvent( ThspsRepositoryInfo aRepositoryInfo );
protected: // Functions from base classes
ChspsMaintenanceHandler( ChspsThemeServer& aThemeServer, const TUint aSecureId );
/**
* By default Symbian 2nd phase constructor is private.
*/
void ConstructL();
/**
* From CActive, RunL.
* Callback function.
* Invoked to handle responses from the server.
*/
void RunL();
/**
* From CActive, DoCancel.
* Cancels any outstanding operation.
*/
void DoCancel();
/**
* From CActive Called when asynchronous request has failed
* @since S60 3.1
*/
TInt RunError( TInt aError );
private:
/**
* C++ default constructor.
*/
void GetHeaderListL( CArrayPtrSeg<HBufC8>& aHeaderDataList, const ChspsODT& aSearchMask );
ThspsServiceCompletedMessage GetHeaderListUpdateL();
void RestoredDefaultL( const ChspsODT& aSetMask, ChspsODT& aHeader );
void RemoveThemeL( const ChspsODT& aSetMask );
TBool CompareHeadersL(const TDesC8& aOldHeaderData, const TDesC8& aNewHeaderData);
TBool ComparePaths(const ChspsODT& aOldHeader, const ChspsODT& aNewHeader);
TBool FilterHeader(const ChspsODT& aMask, const ChspsODT& aHeader);
// Completes the request message
void CompleteRequest(const ThspsServiceCompletedMessage aReturnMessage,
RMessagePtr2& aMessagePtr, const TDesC8& aHeaderData = KNullDesC8 );
/**
* Finds last id value from the provided DOM.
* @since S60 5.0
* @param aDom is the application configuration in XML format
* @param aLastUsedConfId is the largest used configurtion id
* @param aLastUsedPluginId is the largest used plugin id
*/
void GetUsedIdsL(
ChspsDomDocument& aDom,
TInt& aLastUsedConfId,
TInt& aLastUsedPluginId
);
/**
* Appends an application configuration with an instance of a plugin configuration.
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginODT is an ODT instance of the plugin configuration
* @param aConfigurationId is an id of the configuration being modified, identifies a plugins list
* @param aNewPosition is an index of the new position in the plugins list
* @param aLastConfId is a value of the last configuration id
* @param aLastPluginId is a value of the last plugin id
* @return KErrNone if the operation succeeded
*/
TInt AppendConfigurationL(
ChspsODT& aAppODT,
const ChspsODT& aPluginODT,
const TInt aConfigurationId,
const TInt aNewPosition,
TInt& aLastConfId,
TInt& aLastPluginId
);
/**
* Finds the plugins node of the provided plugin node.
* @since S60 5.0
* @param aNode is the plugins node to be searched
* @return plugins node or NULL if the node couldn't be found
*/
ChspsDomNode* FindPluginsNode(
ChspsDomNode& aNode
);
/**
* Appends a plugins list with a new plugin configuration instance.
* @since S60 5.0
* @param aAppODT is the application configuration being modified
* @param aPluginsNode is the plugins node where the new plugin instance should be added to
* @param aPluginODT is an ODT instance of the plugin configuration to be added
* @param aNewPosition is an index of the new position in the plugins list
* @param aNewPluginId is an id of the new plugin instance
* @return KErrNone if the operation succeeded
*/
TInt AppendPluginConfigurationL(
ChspsODT& aAppODT,
ChspsDomNode& aPluginsNode,
const ChspsODT& aPluginODT,
const TInt aNewPosition,
const TInt aNewPluginId
);
/**
* Finds plugin nodes from the plugin configuration being added,
* appends referred configurations into the main plugin configuration,
* and updates the plugin nodes with unique id attribute values.
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginODT is an instance of the plugin configuration being added
* @param aLastConfId is a value of the last configuration id
* @param aLastPluginId is a value of the last plugin id
* @return KErrNone
*/
TInt HandlePluginReferencesL(
ChspsODT& aAppODT,
ChspsODT& aPluginODT,
TInt& aLastConfId,
TInt& aLastPluginId
);
/**
* Checks if the provided plugin configuration is a collection of plugin
* configurations, e.g. view configuration.
* Alternatively, we could check the type from header cache
* @since S60 5.2
* @param aPluginNode Plugin node
* @return True if it is a view configuration
*/
TBool IsViewConfiguration(
ChspsDomNode& aPluginNode );
/**
* Removes an plugin instance from the provided application configuration
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginId is an ID of the plugin instance to be removed
* @return KErrNone if succeeded
*/
TInt RemoveConfigurationL(
ChspsODT& aAppODT,
const TInt aPluginId );
/**
* Removes an plugin instance from the provided application configuration
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginNode is a node of the plugin instance to be removed
* @return KErrNone if succeeded
*/
TInt RemoveConfigurationL(
ChspsODT& aAppODT,
ChspsDomNode& aPluginNode );
/**
* Finds a plugin node with the provided id which is also a children of
* the provided plugins node
* @since S60 5.0
* @param aPluginsNode is an instance of the plugins node
* @param aPluginId is an ID of the plugin instance to be found within the plugins node
* @return Pointer to the plugin node or NULL
*/
ChspsDomNode* FindChildPluginNode(
ChspsDomNode& aPluginsNode,
const TInt aPluginId );
/**
* Returns a count of plugin instances.
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginUid is an UID of the plugin instances to be found
* @param aInstanceCount is the return value
*/
void GetPluginInstanceCountL(
const ChspsODT& aAppODT,
const TInt aPluginUid,
TInt& aInstanceCount );
/**
* Removes plugin resources from the provided ODT
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginUid is an UID of the plugin instance
* @return KErrNone if succeeded
*/
TInt RemovePluginResourcesL(
ChspsODT& aAppODT,
const TInt aPluginUid );
/**
* Adds plugin resouces to the provided ODT
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginUid is an UID of the plugin instance
*/
void AddPluginResourcesL(
ChspsODT& aAppODT,
const TInt aPluginUid );
/**
* Sets Plugin settings
* @since S60 5.0
* @param aOdt is an instance of the the application configuration
* @param aPluginId is an ID of the plugin instance to be found
* @param aDom is a Dom Document of the settings that is going to set/update
* @return KErrNone if succeeded
*/
TInt hspsSetPluginSettingsL(
ChspsODT& aOdt,
TInt aPluginId,
ChspsDomDocument& aDom);
/**
* Saves Plugin settings
* @since S60 5.0
* @param aODT is an instance of the the plugin configuration
* @param aDom is a Dom Document of the settings that is going to saved
* @return KErrNone if succeeded
*/
TInt hspsSavePluginSettingsL(
ChspsODT& aOdt,
ChspsDomDocument& aDom );
/**
* Finds a item node with the provided item id
* @since S60 5.0
* @param aNodeIdentifier An Tag.
* @param aDomNode A Dom node where the target node is searched from.
* @return Result node.
*/
ChspsDomNode& FindNodeByTagL(
const TDesC8& aNodeTag,
ChspsDomNode& aDomNode );
/**
* Gets configuration node with the provided plugin id
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginId is an ID of the plugin instance to be found
* @param aPluginUid is an UID of the plugin instance
* @param aPluginname is a name of the plugin instance
* @return Error code
*/
TInt GetConfigurationNodeDataL(
ChspsODT& aAppODT,
const TInt aPluginId,
TInt& aPluginUid,
TDes& aPluginName );
/**
* Set configuration node state attribute value
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aConfId is an ID of the configuration node to be found
* @param aState is a new value of the configuration node state attribute
* @return void
*/
void SetConfStateL(
ChspsODT& aAppODT,
TInt aConfId,
ThspsConfigurationState aState,
ThspsConfStateChangeFilter aFilter );
/**
* Restores default configuration defined for the application
* @since S60 5.0
* @param aHeader ODT header which defines the restored configuration
* @param aOdt restored application configuration
*/
void RestoreDefaultAppConfL(
ChspsODT*& aHeader,
ChspsODT& aOdt );
/**
* HandleDefinitionRespositoryEventL
*
* @since S60 5.0
*/
TBool HandleDefinitionRespositoryEventL( ThspsRepositoryInfo aRepositoryInfo );
/**
* RemovePluginFromAppConfs
*
* @since S60 5.0
*/
void RemovePluginFromAppConfsL(
const ChspsODT& aOdt,
RArray<ThspsRepositoryInfo>& aNotificationParams);
/**
* InvalidateUninstalledPluginInstancesL
* Removes uninstalled plugin instances from an inactive
* application configuration by changing them to error state.
* @since S60 5.2
* @param aAppODT application configuration to be updated
* @param aPluginUid plugin to be uninstalled
* @param aPluginIds an array on plugin ids to be processed
* @return ETrue if the ODT was updated.
*/
TBool InvalidateUninstalledPluginInstancesL(
ChspsODT& aAppODT,
const TInt aPluginUid,
const RArray<TInt>& aPluginIds );
/**
* UpdatePluginFromAppConfsL
*
* @since S60 5.0
*/
void UpdatePluginFromAppConfsL( ChspsODT& aOdt,
RArray<ThspsRepositoryInfo>& aNotificationParams );
/**
* UpdatePluginConfigurationL
*
* @since S60 5.0
*/
TInt UpdatePluginConfigurationL(
ChspsODT& aOdt,
ChspsODT& aPluginOdt,
RArray<TInt>& aPluginIds );
/**
* Replaces plugin configuration in the provided
* application configuration
* @since S60 5.0
* @param aAppODT is an instance of the the application configuration
* @param aPluginId is an id of the plugin to be replaced
* @param aPluginODT is an instance of the plugin configuration to be added
*/
TInt ReplaceConfigurationL(
ChspsODT& aAppODT,
const TInt aPluginId,
const ChspsODT& aPluginODT );
/**
* Returns position of a plugin in the plugins list
* @since S60 5.0
* @param aPluginNode is a plugin to be found
* @return position of -1
*/
TInt FindPluginPosition(
ChspsDomNode& aPluginNode );
/**
* Copies logo icons to Homescreen's private folder
* @since S60 5.1
* @param aAppUid Identifies the client process
*/
void CopyIconsToHomescreenL(
const TUint aAppUid );
/**
* Appends missing plugin with a dummy configuration where status="Error"
* @since S60 5.0
* @param aAppDom is a DOM of an application configuration
* @param aMissingPluginNode is a plug-in node which was not found from the Plugin Repository
* @param aPluginUid is an UID of the missing plugin
*/
void AddErrorConfigurationL(
ChspsDomDocument& aAppDom,
ChspsDomNode& aMissingPluginNode,
const TInt aPluginUid );
/**
* Removes all plugins from the plugins node and related
* resources from the resource array.
* @since S60 5.2
* @param aAppODT Application configuration
* @return error code
*/
TInt RestoreActiveViewL(
ChspsODT& aAppODT );
/**
* Finds a plugin node which is the active view configuration.
* @since S60 5.2
* @param aAppODT Application configuration
* @return Active plugin node or NULL
*/
ChspsDomNode* FindActiveView(
ChspsODT& aAppODT );
/**
* Removes all plugin configurations from the provided
* plugin node (view configuration).
* @since S60 5.2
* @param aAppODT Application configuration
* @param aActivePluginNode Plugin node to be modified
* @return error code
*/
TInt RemovePluginConfigurationsL(
ChspsODT& aAppODT,
ChspsDomNode& aActivePluginNode );
/**
* Removes all unlocked views and reset the active view.
* Can leave if DOM is corrupted (objects are not found) or in OOM cases.
* @since S60 5.2
* @param aAppODT Application configuration
*/
void RemoveUnlockedViewsL(
ChspsODT& aAppODT );
/**
* Checks whether the plugin configuration was locked.
* @since S60 5.2
* @param aConfNode Configuration node
* @return True if it was locked
*/
TBool IsConfigurationLocked(
ChspsDomNode& aConfNode );
private: // Data
RMessagePtr2 iMessagePtr;
ChspsResult* iResult;
TBuf8<KMaxResultDataLength8> iResultData;
ThspsServiceRequestMessage iRequestMessage;
ThspsServiceCompletedMessage iCompletedMessage;
CArrayPtrSeg<HBufC8>* iHeaderDataList;
TBool iSubscription;
TInt iDeliveryCount;
ChspsODT* iSearchMask;
ChspsODT* iSetMask;
TLanguage iLanguage;
ChspsThemeServer& iThemeServer;
// Identifies the client application
TUint iSecureId;
// Reference to central repository
CRepository& iCentralRepository;
// Reference to definition repository
ChspsDefinitionRepository& iDefinitionRepository;
// Reference to security enforcer
ChspsSecurityEnforcer& iSecurityEnforcer;
CArrayPtrSeg<ChspsODT>& iHeaderListCache;
ChspsThemeServerSession* iServerSession; // Not owned.
CFileMan* iFileMan;
#ifdef HSPS_LOG_ACTIVE
/**
* Log bus.
*/
ChspsLogBus* iLogBus;
#endif
};
#endif //__hspsMAINTENANCEHANDLER_H__
// End of File