contextframework/cfw/inc/cfoperationpluginservices/cfoperationpluginmanager.h
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contextframework/cfw/inc/cfoperationpluginservices/cfoperationpluginmanager.h	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,155 @@
+/*
+* Copyright (c) 2007-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:  CFContextSourceManager class declaration.
+*
+*/
+
+
+
+#ifndef C_CFOPERATIONPLUGINMANAGER_H
+#define C_CFOPERATIONPLUGINMANAGER_H
+
+#include "cfecompluginmanager.h"
+#include "cfpluginoperation.h"
+#include "cfstarterobserver.h"
+#include "cfoperationplugin.h"
+#include "cfstateobserver.h"
+
+class CCFOperationPlugIn;
+class MCFOperationServices;
+class TCFOperationPluginInfo;
+class CImplementationInformation;
+class MCFScriptEngineInterface;
+
+/**
+ *  Operation plug-in manager.
+ *
+ *  Operation plug-in manager is responsible for loading all the
+ *  operation plug-ins that are currently installed.
+ *
+ *  @lib cfscriptengine.lib
+ *  @since S60 4.0
+ */
+NONSHARABLE_CLASS( CCFOperationPluginManager ) : public CCFEComPluginManager,
+    public MCFPlugInOperation,
+    public MCFStarterObserver,
+    public MCFStateObserver
+    {
+    public:
+
+        // Two phased constrcutors
+        IMPORT_C static CCFOperationPluginManager* NewL(
+            MCFScriptEngineInterface& aScriptEngine );
+        IMPORT_C static CCFOperationPluginManager* NewLC(
+            MCFScriptEngineInterface& aScriptEngine );
+
+        // Destructor
+        IMPORT_C virtual ~CCFOperationPluginManager();
+
+    public: // From MCFPlugInOperation
+
+        /**
+        * Parses a xml node and returns a pointer to CCFScriptRoot instance.
+        * @since S60 5.0
+        * @param aParent is the parsed parent node for the aNode.
+        * @param aNode is the node to be parsed.
+        * @param aOperationServices is the operation services reference to be
+        *   used by the new script root node.
+        * @param aUid Implementation uid of the provider.
+        * @return a ptr to CCFScriptRoot instance parsed from the given node,
+        *   note that the ownership is transferred to the caller. Returns NULL
+        *   if the node cannot be parsed.
+        */
+        CCFScriptRoot* ParseScriptRootL( CCFOperationNode* aParent,
+                CMDXMLNode& aNode,
+                MCFOperationServices& aOperationServices,
+                TUid& aUid );
+
+        /**
+        * Parse DOM-node into an operation node.
+        *
+        * @since S60 5.0
+        * @param aParent Parent node.
+        * @param aDOMNode DOM-node to be parsed.
+        * @param aOperationServices Operation services instance to be used
+        *   by the new operation node.
+        * @param aUid Implementation uid of the provider.
+        * @return Pointer to Operation node. The ownership of the node is
+        *   transferred to the caller. NULL must be returned, if the DOM-node
+        *   cannot be parsed.
+        */
+        CCFOperationNode* ParseL( CCFOperationNode* aParent,
+            CMDXMLNode& aDOMNode,
+            MCFOperationServices& aOperationServices,
+            TUid& aUid );
+
+    public: // From base classes
+
+        // from MCFStateObserver
+        void UpdatePlugInsL();
+
+    private: // From base classes
+
+        // @see MCFInitialize
+        void InitializePhaseL( CCFPhaseBase::TCFPhaseId aPhase );
+        
+        // @see MCFStarterObserver
+        void SetEventHandler( MCFStarterEventHandler& /*aEventHandler*/ );
+
+    private:
+
+        CCFOperationPluginManager( MCFScriptEngineInterface& aScriptEngine );
+        void ConstructL();
+
+    private: // New methods
+
+        // Loads and initialized plug-in
+    	CCFOperationPlugIn* CreateAndInitializePlugInL(
+            const TUid& aImplementationUid,
+            TOperationPluginInitParams& aParams );
+
+        // Init starting phase
+        void InitDeviceStartingPhaseL();
+
+        // Init loading plugins phase
+        void InitLoadingPluginsPhaseL();
+
+        // Loads plug-ins and appends it into array
+        void LoadPluginL( CImplementationInformation& aImplInfo );
+
+        // Releases operation plug-in
+        void ReleasePlugIn( CCFOperationPlugIn*& aPlugIn );
+
+        // Finalizes node parsing
+        CCFOperationNode* DoParseL( CCFOperationNode* aParent,
+            CMDXMLNode& aDOMNode,
+            MCFOperationServices& aOperationServices,
+            TUid& aUid );
+
+        // Finalizes script root parsing
+        CCFScriptRoot* DoParseScriptRootL( CCFOperationNode* aParent,
+            CMDXMLNode& aDOMNode,
+            MCFOperationServices& aOperationServices,
+            TUid& aUid );
+
+    private: // data
+
+        // Own: Context source plugin info array
+        RArray<TCFOperationPluginInfo> iPlugIns;
+
+        // Ref: Reference to script engine
+        MCFScriptEngineInterface& iScriptEngine;
+    };
+
+#endif