idlefw/inc/framework/aipluginfactory.h
changeset 0 79c6a41cd166
child 8 d0529222e3f0
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlefw/inc/framework/aipluginfactory.h	Thu Dec 17 08:54:17 2009 +0200
@@ -0,0 +1,144 @@
+/*
+* Copyright (c) 2005-2006 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:  Content plugin manager class for Active idle framework.
+*
+*/
+
+
+
+#ifndef C_AIPLUGINASYNCFACTORY_H
+#define C_AIPLUGINASYNCFACTORY_H
+
+#include "aicontentpublisher.h"
+#include "aipropertyextension.h"
+#include "aifwdefs.h"
+#include <e32base.h>
+
+class MAiContentObserver;
+class MAiEventHandlerExtension;
+class MAiContentItemIterator;
+class CAiContentPublisher;
+class CAiUiController;
+class CAiPluginActivityRegistry;
+class CImplementationInformation;
+class CAiContentPluginManager;
+class MAiPluginTool;
+class MAiPluginLifecycleObserver;
+
+/**
+ * @ingroup group_aifw
+ * 
+ *  Content plugin factory class for Active idle framework.
+ *
+ *  @lib aifw
+ *  @since S60 3.2
+ */
+NONSHARABLE_CLASS( CAiPluginFactory ) : public CBase
+	{
+	public:
+	
+// Constructor and destructor
+		
+		static CAiPluginFactory* NewL( RPointerArray<CAiContentPublisher>& aPlugins,
+		                                    CAiContentPluginManager& aManager );
+		
+		virtual ~CAiPluginFactory();
+
+// New functions
+		
+        /**
+         * Create plugin
+         *
+         * @since S60 5.0
+         * @param aPublisherInfo plugin to load.
+         * @param aControllerArray array of active UI controllers.
+         */
+		void CreatePluginL( const TAiPublisherInfo& aPublisherInfo,						
+						     RPointerArray<CAiUiController>& aControllerArray );						
+
+        /**
+         * Destroy plugin
+         *
+         * @since S60 5.0
+         * @param aPublisherInfo plugin to destroy.
+         * @param aControllerArray array of active UI controllers.
+         */
+		void DestroyPluginL( const TAiPublisherInfo& aPublisherInfo,		    
+                             RPointerArray<CAiUiController>& aControllerArray );
+
+        /**
+         * Destroys all plugins
+         * 
+         * @since S60 5.0         
+         */
+		void DestroyPlugins();
+		
+		
+        void AddLifecycleObserverL( MAiPluginLifecycleObserver& aObserver );
+
+        /**
+         * Finds plugin by publisher info.
+         *
+         * @since S60 5.0
+         * @param aInfo publisher info.
+         * @return Pointer to plugin, NULL if not found.
+         */        
+        CAiContentPublisher* PluginByInfoL( const TAiPublisherInfo& aInfo ) const;
+
+        /**
+         * Finds plugin by name.
+         *
+         * @since S60 5.0
+         * @param aInfo publisher info.
+         * @return Pointer to plugin, NULL if not found.
+         */                
+        CAiContentPublisher* PluginByNameL( const TDesC& aName ) const;
+						
+	private:	
+
+// Constructors
+		
+		CAiPluginFactory( RPointerArray<CAiContentPublisher>& aPlugins,
+		                       CAiContentPluginManager& aManager );
+		
+		void ConstructL();
+										
+// New functions
+		
+		CAiContentPublisher* CreatePluginLC( const TAiPublisherInfo& aPluginInfo );
+								
+		void SubscribeContentObserversL( CAiContentPublisher& aContentPublisher,		    
+            const TAiPublisherInfo& aPublisherInfo,
+		    RPointerArray<CAiUiController>& aControllerArray );
+		                              
+        void ConfigurePluginL( RPointerArray<CAiUiController>& aControllerArray,
+                               CAiContentPublisher& aContentPublisher,
+                               const TAiPublisherInfo& aPubInfo );		                           
+        
+	private:     // Data	
+	    // Array of loaded data plugins, Not owned
+	    RPointerArray<CAiContentPublisher>& iPlugins;
+	    // Content plugin manager, Not owned	    		
+        CAiContentPluginManager& iManager;
+        // Ecom implementation info, Owned
+		RImplInfoPtrArray iEComPlugins;		
+		// Plugin tool from utility lib, Owned
+		MAiPluginTool* iPluginTool;      
+        // Life cycle observers, Owned
+		RPointerArray<MAiPluginLifecycleObserver> iLifecycleObservers;		
+    };
+
+#endif // C_AIPLUGINASYNCFACTORY_H
+
+// End of File.