williamr@2: // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __MMF_DRM_CUSTOM_COMMANDS_H__ williamr@2: #define __MMF_DRM_CUSTOM_COMMANDS_H__ williamr@2: williamr@2: williamr@2: #include williamr@2: #include williamr@2: #include williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: const TUid KUidInterfaceMMFDRMControl = {0x101F7D8D}; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: enum TMMFDRMControlMessages williamr@2: { williamr@2: EMMFDRMControlEvaluateIntent, williamr@2: EMMFDRMControlExecuteIntent, williamr@2: EMMFDRMControlDisableAutomaticIntent, williamr@2: EMMFDRMControlSetAgentProperty, williamr@2: EMMFDRMControlIsSupported williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@2: Mixin class to be derived from by controller plugins wishing to support the DRM Intent williamr@2: custom commands. williamr@2: */ williamr@2: class MMMFDRMCustomCommandImplementor williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: Disable the automatic (controller specified) execution of intent williamr@2: williamr@2: @param aIntent williamr@2: The intent to execute williamr@2: williamr@2: */ williamr@2: virtual TInt MdcDisableAutomaticIntent(TBool aDisableAutoIntent)=0; williamr@2: williamr@2: williamr@2: /** williamr@2: Executes a particular intent williamr@2: williamr@2: @param aIntent williamr@2: The intent to execute williamr@2: williamr@2: */ williamr@2: virtual TInt MdcExecuteIntent(ContentAccess::TIntent aIntent)=0; williamr@2: williamr@2: /** williamr@2: Evaluate a particular intent williamr@2: williamr@2: @param aIntent williamr@2: The intent to evaluate williamr@2: williamr@2: */ williamr@2: virtual TInt MdcEvaluateIntent(ContentAccess::TIntent aIntent)=0; williamr@2: williamr@2: /** williamr@2: williamr@2: williamr@2: */ williamr@2: virtual TInt MdcSetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue)=0; williamr@2: }; williamr@2: williamr@2: class CMMFDRMCustomCommandParser : public CMMFCustomCommandParserBase williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: Creates a new custom command parser capable of DRM Intent controller commands. williamr@2: williamr@2: @param aImplementor williamr@2: A reference to the controller plugin that owns this new object. williamr@2: williamr@2: @return A pointer to the object created. williamr@2: williamr@2: @since 7.0s williamr@2: */ williamr@2: IMPORT_C static CMMFDRMCustomCommandParser* NewL(MMMFDRMCustomCommandImplementor& aImplementor); williamr@2: williamr@2: /** williamr@2: Destructor. williamr@2: williamr@2: @since 7.0s williamr@2: */ williamr@2: IMPORT_C ~CMMFDRMCustomCommandParser(); williamr@2: williamr@2: /** williamr@2: Handles a request from the client. Called by the controller framework. williamr@2: williamr@2: @param aMessage williamr@2: The message to be handled. williamr@2: williamr@2: @since 7.0s williamr@2: */ williamr@2: void HandleRequest(TMMFMessage& aMessage); williamr@2: williamr@2: private: williamr@2: /** williamr@2: Constructor. williamr@2: williamr@2: @param aImplementor williamr@2: A reference to the controller plugin that owns this new object. williamr@2: @since 7.0s williamr@2: */ williamr@2: CMMFDRMCustomCommandParser(MMMFDRMCustomCommandImplementor& aImplementor); williamr@2: // Internal request handling methods. williamr@2: williamr@2: void DoHandleRequestL(TMMFMessage& aMessage); williamr@2: void DoEvaluateIntentL(TMMFMessage& aMessage); williamr@2: void DoExecuteIntentL(TMMFMessage& aMessage); williamr@2: void DoDisableAutomaticIntentL(TMMFMessage& aMessage); williamr@2: void DoSetAgentPropertyL(TMMFMessage& aMessage); williamr@2: williamr@2: private: williamr@2: MMMFDRMCustomCommandImplementor& iImplementor; williamr@2: }; williamr@2: williamr@2: williamr@2: /** williamr@2: @publishedAll williamr@2: @released williamr@2: williamr@2: Generic Mixin class to be used by a client utility wishing to pass DRM Intent williamr@2: custom commands to a controller plugin. williamr@2: */ williamr@2: class MMMFDRMCustomCommand williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: Disable the automatic (controller specified) execution of intent williamr@2: williamr@2: @param aIntent williamr@2: The intent to execute williamr@2: williamr@2: */ williamr@2: virtual TInt DisableAutomaticIntent(TBool aDisableAutoIntent)=0; williamr@2: williamr@2: williamr@2: /** williamr@2: Executes a particular intent williamr@2: williamr@2: @param aIntent williamr@2: The intent to execute williamr@2: williamr@2: */ williamr@2: virtual TInt ExecuteIntent(ContentAccess::TIntent aIntent)=0; williamr@2: williamr@2: /** williamr@2: Evaluate a particular intent williamr@2: williamr@2: @param aIntent williamr@2: The intent to evaluate williamr@2: williamr@2: */ williamr@2: virtual TInt EvaluateIntent(ContentAccess::TIntent aIntent)=0; williamr@2: williamr@2: /** williamr@2: williamr@2: williamr@2: */ williamr@2: virtual TInt SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue)=0; williamr@2: }; williamr@2: williamr@2: class RMMFDRMCustomCommands : public RMMFCustomCommandsBase, williamr@2: public MMMFDRMCustomCommand williamr@2: { williamr@2: public: williamr@2: williamr@2: /** williamr@2: Constructor. williamr@2: williamr@2: @param aController williamr@2: The client side controller object to be used by this custom command interface. williamr@2: williamr@2: */ williamr@2: IMPORT_C RMMFDRMCustomCommands(RMMFController& aController); williamr@2: williamr@2: /** williamr@2: */ williamr@2: IMPORT_C TInt DisableAutomaticIntent(TBool aBool); williamr@2: williamr@2: /** williamr@2: */ williamr@2: IMPORT_C TInt EvaluateIntent(ContentAccess::TIntent aIntent); williamr@2: williamr@2: /** williamr@2: */ williamr@2: IMPORT_C TInt ExecuteIntent(ContentAccess::TIntent aIntent); williamr@2: williamr@2: /** williamr@2: */ williamr@2: IMPORT_C TInt SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue); williamr@2: williamr@2: /** williamr@2: */ williamr@2: IMPORT_C TBool IsSupported(); williamr@2: williamr@2: }; williamr@2: williamr@2: williamr@2: #endif // __MMF_DRM_CUSTOM_COMMANDS_H__