messagingapp/msgappfw/server/inc/ccsplugininterface.h
changeset 23 238255e8b033
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingapp/msgappfw/server/inc/ccsplugininterface.h	Fri Apr 16 14:56:15 2010 +0300
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2007 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:  This defines the interface for E-com plugins
+*
+*/
+
+#ifndef __C_CS_PLUGIN_INTERFACE_H
+#define __C_CS_PLUGIN_INTERFACE_H
+
+// SYSTEM INCLUDE FILES
+
+// USER INCLUDES
+
+// FORWARD DECLARATION	
+class CCsPlugin;
+class CCsServer;
+// CLASS DECLARATION
+/**
+* Class is used to instantiate the required plugins when the 
+* conversation deatils has been asked. 
+* Acts as interface to all Plugins.
+*/
+
+class CCsPluginInterface: public CBase 
+{
+	public:
+
+		/** 
+		* NewL
+		* Symbian OS 2 phased constructor
+		* 
+		* @return	A pointer to the created instance of CCsPluginInterface.
+		*/
+		static CCsPluginInterface* NewL();
+
+		/** 
+		* NewLC
+		* Symbian OS 2 phased constructor
+		* 
+		* @return	A pointer to the created instance of CCsPluginInterface.
+		*/
+		static CCsPluginInterface* NewLC();
+
+		/**
+		* Destructor.
+		*/      
+		virtual ~CCsPluginInterface();
+
+		/**
+		* InstantiatePluginL
+		* Instantiates the required plug-ins known by the ecom framework.
+		* basically this function first calls ListAllImplementationsL()
+		* 
+		* @param aCsServer server instance
+		*/
+		void InstantiatePluginL(CCsServer* aCsServer);
+
+		/**
+		* UnloadPlugIns
+		* Unloads all plugins
+		* This should internally call  REComSession::DestroyedImplementation( iDtor_ID_Key )
+		* and then REComSession::FinalClose()
+		*/
+		void UnloadPlugIns(); 
+
+		/**
+		* ListAllImplementationsL
+		* Lists all implementations which satisfy this ecom interface
+		* 
+		* @param aImplInfoArray On return, contains the list of available implementations
+		*/   
+		inline void ListAllImplementationsL( 
+		        RImplInfoPtrArray& aImplInfoArray )
+		    {
+		    REComSession::ListImplementationsL( 
+		            KCsPluginInterfaceUid, 
+		            aImplInfoArray );
+		    }
+		
+		/**
+		 * GetConversationsL
+		 * Forwards the request to the plugin instance ,
+		 * to get the all conversations from the plugins
+		 */
+		void  GetConversationsL();
+
+		/**
+		 * GetPluginsCount
+		 * Gets the  plugins count
+		 * 
+		 * @return  Plugin count
+		 */
+		TInt  GetPluginsCount();
+
+	private: 
+
+	  /** 
+	   * Performs the first phase of two phase construction.
+	   */
+	  CCsPluginInterface();  
+
+		/** 
+		* Symbian OS 2 phased constructor.
+		*/
+		void ConstructL();
+
+		/**
+		* InstantiatePlugInFromImpUidL
+		* Instantiates a CS plug-in, knowing the implementation uid
+		* 
+		* @param aImpUid imp uID
+		* @param aCsServer, instance of server class
+		*/
+		CCsPlugin* InstantiatePlugInFromImpUidL( 
+		        const TUid& aImpUid, 
+		        CCsServer* aCsServer );
+
+
+	private: 
+	    
+	    /**
+	     * iDtor_ID_Key
+	     * Unique Key, handle by ECom plugin
+	     */
+	    TUid iDtor_ID_Key;
+
+		/**
+		 * iCsPluginInstances
+		 * Array of all the plugin instances
+		 */
+		RPointerArray<CCsPlugin>  iCsPluginInstances; 
+
+		/**
+		 * iPluginInUse
+		 * Uid of the plugin in use.
+		 */
+		TUid iPluginInUse;
+};
+
+#endif // __C_CS_PLUGIN_INTERFACE_H
+
+//End of File
\ No newline at end of file