diff -r 000000000000 -r a2952bb97e68 mpx/collectionframework/collectionengine/inc/mpxcollectionpluginhandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mpx/collectionframework/collectionengine/inc/mpxcollectionpluginhandler.h Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,171 @@ +/* +* Copyright (c) 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: Plugin handler +* +*/ + + +#ifndef CMPXCOLLECTIONPLUGINHANDLER_H +#define CMPXCOLLECTIONPLUGINHANDLER_H + +#include +#include + +class CMPXCollectionPlugin; +class MMPXCollectionPluginObserver; + +/** +* Processes plug-ins +*/ +NONSHARABLE_CLASS(CMPXCollectionPluginHandler) : public CMPXPluginHandlerBase + { +public: + /** + * Two-phased constructor. + * + * @param aPluginObserver plugin observer + * @param aObserver plugin handler observer + * @return Constructed object + */ + static CMPXCollectionPluginHandler* NewL(MMPXCollectionPluginObserver& aPluginObserver, + MMPXPluginHandlerObserver& aObserver); + + /** + * Destructor + */ + ~CMPXCollectionPluginHandler(); + +public: + /** + * Returns currently loaded plug-in, or NULL if none + * + * @return plugin object interface + */ + inline CMPXCollectionPlugin* Plugin(); + + /** + * Get all currently loaded plugins + * @return array of loaded plugins + */ + TArray LoadedPlugins(); + + /** + * Remove task for one client which is the observer of tasks + * @aCallback the observer of the tasks to be removed + */ + void RemoveTask(TAny* aCallback); + + /** + * Retrieve the list of non cachable attributes for a plugin + * @param aPlugin UID of the plugin + */ + const TArray NonCacheableAttributesL( const TUid& aPluginId ); + + /** + * Check if a plugin is cachable in the collection cache + * @param aPlugin + */ + TBool PluginCachable( const TUid& aPluginId ); + + /** + * Returns the loaded plugin by implementation uid. + * + * @param aUid implementation uid of the plugin + * @return plugin pointer if plugin already loaded or NULL if not loaded + */ + CMPXCollectionPlugin* LoadedPlugin(const TUid& aUid); + +private: + + /** + * From Base CMPXPluginHandlerBase + * Resolves a plugin + */ + void ResolvePluginL(); + + /** + * From Base CMPXPluginHandlerBase + * Constructs the collection plugin info + */ + CMPXPluginInfo* ConstructPluginInfoLC( const CImplementationInformation& aData ); + + /** + * @see CMPXPluginHandlerBase + */ + TBool IsPluginLoaded(const TUid& aPluginUid); + + /** + * @see CMPXPluginHandlerBase + */ + void LoadPluginL(const TUid& aPluginUid); + + + /** + * From Base CMPXPluginHandlerBase + * Unloads a plugin + * @param aUid identifies the plugin + */ + void UnloadPlugin(const TUid& aUid); + + + /** + * Create the plugin object given UID + * + * @param UID of the plugin + * @return plugin object + */ + CMPXCollectionPlugin* CreateCollectionPluginL(const TUid& aUid); + + /** + * Returns the loaded plugin index corresponding to the UID. + * + * @param aUid implementation uid of the plugin + * @return plugin index in iLoadedPlugins or KErrNotFound + */ + TInt LoadedPluginIndex(const TUid& aUid); + + /** + * Unloads the plugin at a specified index. + * @param aIndex index of the plugin in iLoadedPlugins + */ + void UnloadPlugin(TInt aIndex); + +private: + + /** + * 2nd phase contructor + */ + void ConstructL(); + + /** + * C++ constructor + * + * @param aPluginObserver plugin observer + * @param aObserver plugin handler observer + */ + CMPXCollectionPluginHandler(MMPXCollectionPluginObserver& aPluginObserver, + MMPXPluginHandlerObserver& aObserver); + +private: + MMPXCollectionPluginObserver* iPluginObserver; //Not Owned + RPointerArray iLoadedPlugins; + + // Most recently Selected plugin + // + CMPXCollectionPlugin* iPlugin; + }; + +#include "mpxcollectionpluginhandler.inl" + +#endif // CMPXCOLLECTIONPLUGINHANDLER_H