diff -r 000000000000 -r a2952bb97e68 mmappfw_plat/mpx_collection_common_definition_api/inc/mpxcollectionplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mmappfw_plat/mpx_collection_common_definition_api/inc/mpxcollectionplugin.h Thu Dec 17 08:55:47 2009 +0200 @@ -0,0 +1,358 @@ +/* +* 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: Collection plugin interface +* +*/ + + +#ifndef CMPXCOLLECTIONPLUGIN_H +#define CMPXCOLLECTIONPLUGIN_H + +#include +#include +#include +#include +#include +#include +#include + +class MMPXCollectionPluginObserver; +class MMPXCollectionEngineObserver; +class CMPXCollectionPath; +class CMPXActiveTaskQueue; +class MMPXTaskQueueObserver; + +const TUid KMPXCollectionInterfaceUid={0x101FFC36}; + +/******************************************************************************** +* +* Note: +* +* ** remove void CommandL(TMPXCollectionCommand aCmd, TInt aArg = 0) +* +* ** remove MediaL() overload +* +* ** remove null implementations +* +* ** rename GetCapabilities() to Capabilities() +* +*********************************************************************************/ + +/** + * CMPXCollectionPlugin class + * + * Interface to access collection + */ +NONSHARABLE_CLASS(CMPXCollectionPlugin): public CBase + { + +public: // Constructors and destructor + + /** + * Two-phased constructor. + * + * @since S60 3.2.3 + * @param aUid uid of interface implementation + * @param aObs Reference to the callback interface + * @return object of constructed + */ + inline static CMPXCollectionPlugin* NewL(const TUid& aUid, + MMPXCollectionPluginObserver& aObs); + + /** + * Destructor. + * + * @since S60 3.2.3 + */ + inline virtual ~CMPXCollectionPlugin(); + +public: + + /** + * Callback setter. + * + * @since S60 3.2.3 + * @param aObs Reference to the callback interface + */ + inline void SetObserver(MMPXCollectionPluginObserver& aObs); + + /** + * + * + * @param aCmd a command + * @param aArg optional argument + * @deprecated executes a command on the selected collection, use CommandL(CMPXCommand& aCmd) + */ + virtual void CommandL(TMPXCollectionCommand aCmd, TInt aArg = 0)=0; + + /** + * Executes a command. + * + * @since S60 3.2.3 + * @param aCmd a command + */ + virtual void CommandL(CMPXCommand& /*aCmd*/) + {/*Note: need to implement this */} + + /** + * Navigates to the given path. + * + * @since S60 3.2.3 + * @param aPath a path + * @param aAttrs attributes requested + * @param aFilter filter to apply or NULL if none + */ + virtual void OpenL(const CMPXCollectionPath& /*aPath*/, + const TArray& /*aAttrs*/, + CMPXFilter* /*aFilter*/) = 0; + + /** + * + * Media properties of the current file (async). + * Note: if selection is set in aPath, HandleMedia will return an array of + * media properties of current selected items. + * if no selection is set in aPath, HandleMedia will return media + * properities of current item. + * + * @since S60 3.2.3 + * @param aPath path for the media file + * @param aAttr attributes requested + * @param aCaps platsec capabilities of client requesting media; plug-in should also + * verify its process capabilities + * @param aSpecs, specifications for attributes + * @deprecated use the following version of MediaL + */ + virtual void MediaL(const CMPXCollectionPath& /*aPath*/, + const TArray& /*aAttrs*/, + const TArray& /*aCaps*/, + CMPXAttributeSpecs* /*aSpecs*/) = 0; + /** + * Cancel outstanding request. + * + * @since S60 3.2.3. + */ + virtual void CancelRequest()=0; + + /** + * Adds an item or items to the collection. + * + * @since S60 3.2.3 + * @param aNewProperties Properties of the item + */ + virtual void AddL(const CMPXMedia& aNewMedia) = 0; + + /** + * Remove a collection path. + * Note that the selection indicies are hidden within the path + * + * @since S60 3.2.3 + * @param aPath path to remove + * + */ + virtual void RemoveL(const CMPXCollectionPath& aPath ) = 0; + + /** + * Remove an item or items from the collection. + * + * @since S60 3.2.3 + * @param aProperties Properties of the item. It may cantain URI only + * or meta data, all of items matched properties + * will be removed. + */ + virtual void RemoveL(const CMPXMedia& aMedia) = 0; + + /** + * Sets/updates the media for the item + * specified in the path. + * + * @since S60 3.2.3 + * @param aMedia new value + */ + virtual void SetL(const CMPXMedia& aMedia) = 0; + + /** + * Find a list of items matched (async). + * + * @since S60 3.2.3 + * @param aCriteria properties to be searched + * @param aAttrs attributes to return + */ + virtual void FindAllL(const CMPXSearchCriteria& aCriteria, + const TArray& aAttrs) = 0; + + /** + * Find a list of items matched (sync). + * + * @since S60 3.2.3 + * @param aCriteria properties to be searched + * @param aAttrs attributes to return + * @return results of the search + */ + virtual CMPXMedia* FindAllSyncL(const CMPXSearchCriteria& aCriteria, + const TArray& aAttrs) = 0; + + /** + * Get the list of supported capabilities. + * + * @since S60 3.2.3 + * @return TCollectionCapability bitmask of supported capabilities + */ + virtual TCollectionCapability GetCapabilities() = 0; + + /** Note change it to pure virtual when all of plugins implement this interface + * + * Media properties of the current file (async). + * Note: if selection is set in aPath, HandleMedia will return an array of + * media properties of current selected items. + * if no selection is set in aPath, HandleMedia will return media + * properities of current item. + * + * @since S60 3.2.3 + * @param aPath path for the media file + * @param aAttr attributes requested + * @param aCaps platsec capabilities of client requesting media; plug-in should also + * verify its process capabilities + * @param aSpecs, specifications for attributes + * @param aFilter filter to apply or NULL if none + */ + virtual void MediaL(const CMPXCollectionPath& aPath, + const TArray& aAttrs, + const TCapabilitySet& aCaps, + CMPXAttributeSpecs* aSpecs, + CMPXFilter* /*aFilter*/) + { + RArray caps; + CleanupClosePushL(caps); + if (aCaps.HasCapability(ECapabilityDRM)) + { + caps.AppendL(ECapabilityDRM); + } + // else add further "relevant" capabilities here + + // Add "none" capability, if no caps listed + if (caps.Count() == 0) + { + caps.AppendL(ECapability_None); + } + MediaL(aPath, aAttrs, caps.Array(), aSpecs); + CleanupStack::PopAndDestroy(&caps); + }; + +public: + + /** + * Implementation uid of plugin. + * + * @since S60 3.2.3 + */ + inline const TUid& Uid(); + + /** + * Current outstanding async task in the task queue. + * + * @since S60 3.2.3 + */ + inline TInt Task(); + + /** + * Add a task and automatically schedule task. + * + * @since S60 3.2.3 + * @param aTask task id + * @param aCallback callback + * @param aHandler task handler + * @param aParamData data + * @param aBuf pointer to the buffer containing + * externalized parameter data. + * Client passes ownership of the buffer + * to TaskQueue. + * @param aPtrData object pointer + * @param aCObject1 pointer to CBased object, ownership transferred + * @param aCObject2 pointer to CBased object, ownership transferred + */ + inline void AddTaskL(TInt aTask, + TAny* aCallback, + MMPXTaskQueueObserver* aHandler, + TInt aParamData=0, + CBufBase* aBuf=NULL, + TAny* aPtrData=NULL, + CBase* aCObject1=NULL, + CBase* aCObject2=NULL); + + /** + * Complete current task + * + * @since S60 3.2.3 + */ + inline void CompleteTask(); + + /** + * Complete all tasks wih the specified error code. + * + * @since S60 3.2.3 + * @param aError completion error code + */ + inline void CompleteAllTasks(TInt aError); + + /** + * Remove task for one client. + * + * @since S60 3.2.3 + * @param aCallback callback when task completed + */ + inline void RemoveTask(TAny* aCallback); + + /** + * Callback of current active task. + * + * @since S60 3.2.3 + * @return pointer to call back object or NULL if no active task + */ + inline MMPXCollectionEngineObserver* Callback(); + + /** + * Set call back for current active task. + * NULL if there is no active task for this plugin. + * + * @since S60 3.2.3 + * @param aCallback callback when task completed + */ + inline void SetCallback(MMPXCollectionEngineObserver* aCallback); + +private: + /** + * This is internal and not intended for use in plugin side. + * + * @since S60 3.2.3 + */ + inline void InitializeL(); + +protected: + + MMPXCollectionPluginObserver* iObs; // Not owned +private: // Data + + // identifies the actual plugin instance + TUid iDtorKey; + // Task queue for the plugin + CMPXActiveTaskQueue* iTaskQueue; + TUid iUid; //Implementation uid of the plugin + // Not owned, callback when current active task completed + MMPXCollectionEngineObserver* iCallback; + }; + +#include "mpxcollectionplugin.inl" +#endif // CMPXCOLLECTIONPLUGIN_H + +