syncmlfw/syncmlnotifier/inc/SyncMLPreSyncPluginInterface.h
branchRCL_3
changeset 26 19bba8228ff0
parent 0 b497e44ab2fc
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/syncmlfw/syncmlnotifier/inc/SyncMLPreSyncPluginInterface.h	Wed Sep 01 12:27:42 2010 +0100
@@ -0,0 +1,138 @@
+/*
+* 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: Implementation of syncmlnotifier component
+* 	This is part of syncmlnotifier.
+*
+*/
+
+#ifndef SYNCMLPRESYNCPLUGININTERFACE_H
+#define SYNCMLPRESYNCPLUGININTERFACE_H
+
+// INCLUDE FILES
+#include <s32mem.h>
+#include <coemain.h>
+#include <ecom/ecom.h>
+#include <ecom/implementationinformation.h>
+#include <SyncMLDef.h>
+
+class CPreSyncPlugin;
+
+/**
+* Class is used to instantiate the required plugins when the search has been
+* asked. Acts as interface to all Plugins.
+*/
+
+class CPreSyncPluginInterface: public CBase 
+{
+	public:
+
+		/** 
+		* Symbian OS 2 phased constructor.
+		* @return	A pointer to the created instance of CPreSyncPluginInterface.
+		*/
+		static CPreSyncPluginInterface* NewL();
+
+		/** 
+		* Symbian OS 2 phased constructor.
+		* @return	A pointer to the created instance of CPreSyncPluginInterface.
+		*/
+		static CPreSyncPluginInterface* NewLC();
+
+		/**
+		* Destructor.
+		*/      
+		virtual ~CPreSyncPluginInterface();
+
+		/**
+		* Instantiates the required search plug-ins known by the ecom framework.
+		* basically this function first calls ListAllImplementationsL()
+		* and then checks them one by one to match the algorithm name
+		*/
+		void InstantiatePluginL();
+		
+		CPreSyncPlugin* InstantiateRoamingPluginLC( TSmlProfileId aProfileId );
+
+		/**
+		* Unloads all plugins
+		* This should internally call  REComSession::DestroyedImplementation( iDtor_ID_Key )
+		* and then REComSession::FinalClose()
+		*/
+		void UnloadPlugIns(); 
+
+		/**
+		* Lists all implementations which satisfy this ecom interface
+		*
+		* @param aImplInfoArray On return, contains the list of available implementations
+		* 
+		*/   
+		void ListAllImplementationsL( RImplInfoPtrArray& aImplInfoArray );
+		
+
+		/**
+		* Forwards the request to check if language is supported
+		* to the algorithm instance
+		*/
+		TBool IsDefault();   
+		              
+		/**
+		* Forwards the request to recover data fields order for a URI
+		* to the algorithm instance
+		*/
+		TBool IsProfileYours(TSmlProfileId aProfileId);
+
+		/**
+		* Forwards the request to recover sort order for a URI
+		* to the algorithm instance
+		*/
+		void Handle(TSmlProfileId aProfileId); 
+
+	private: 
+
+		/** 
+		* Performs the first phase of two phase construction.
+		*/
+		CPreSyncPluginInterface();  
+
+		/** 
+		* Symbian OS 2 phased constructor.
+		*/
+		void ConstructL();
+
+		/**
+		* Instantiates a PCS plug-in, knowing the implementation uid.
+		* @param aImpUid imp uID
+		*/
+		CPreSyncPlugin* InstantiatePlugInFromImpUidL( const TUid& aImpUid );
+
+
+	private: 
+
+	    /** iDtor_ID_Key Instance identifier key. When instance of an
+	         *               implementation is created by ECOM framework, the
+	         *               framework will assign UID for it. The UID is used in
+	         *               destructor to notify framework that this instance is
+	         *               being destroyed and resources can be released.
+	         */
+	    TUid iDtor_ID_Key;
+
+		// List of plugins that this interface will interact with
+		RPointerArray<CPreSyncPlugin>  iPluginInstances; 
+
+		// Uid of the algorithm in use
+		TUid iPluginInUse;
+};
+
+#endif // SYNCMLPRESYNCPLUGININTERFACE_H
+
+//End of File