mmlibs/mmfw/src/ControllerFramework/MMFDRMCustomCommands.cpp
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmlibs/mmfw/src/ControllerFramework/MMFDRMCustomCommands.cpp	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,165 @@
+// Copyright (c) 2004-2009 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:
+//
+
+#include <mmf/common/mmfdrmcustomcommands.h>
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <mmf/common/mmfdrmcustomcommandsenum.h>
+#endif
+
+EXPORT_C CMMFDRMCustomCommandParser* CMMFDRMCustomCommandParser::NewL(MMMFDRMCustomCommandImplementor& aImplementor)
+	{
+	return new(ELeave) CMMFDRMCustomCommandParser(aImplementor);
+	}
+
+EXPORT_C CMMFDRMCustomCommandParser::~CMMFDRMCustomCommandParser()
+	{
+	}
+
+CMMFDRMCustomCommandParser::CMMFDRMCustomCommandParser(MMMFDRMCustomCommandImplementor& aImplementor) 
+	: CMMFCustomCommandParserBase(KUidInterfaceMMFDRMControl),
+	  iImplementor(aImplementor)
+	{
+	}
+
+void CMMFDRMCustomCommandParser::HandleRequest(TMMFMessage& aMessage)
+	{
+	TRAPD(err, 
+			DoHandleRequestL(aMessage);
+		);
+	aMessage.Complete(err);
+	}
+
+void CMMFDRMCustomCommandParser::DoHandleRequestL(TMMFMessage& aMessage)
+	{
+	if (aMessage.Destination().InterfaceId() == KUidInterfaceMMFDRMControl)
+		{
+		switch (aMessage.Function())
+			{
+		case EMMFDRMControlEvaluateIntent:
+			DoEvaluateIntentL(aMessage);
+			break;
+			
+		case EMMFDRMControlExecuteIntent:
+			DoExecuteIntentL(aMessage);
+			break;
+			
+		case EMMFDRMControlDisableAutomaticIntent:
+			DoDisableAutomaticIntentL(aMessage);
+			break;
+			
+		case EMMFDRMControlSetAgentProperty:
+			DoSetAgentPropertyL(aMessage);
+			break;
+		case EMMFDRMControlIsSupported:
+			// we just complete the message with KErrNone
+			break;
+		default:
+			User::Leave(KErrNotSupported);
+			break;
+			}
+		}
+	else
+		{
+		User::Leave(KErrNotSupported);
+		}	
+	}
+
+void CMMFDRMCustomCommandParser::DoExecuteIntentL(TMMFMessage& aMessage)
+	{
+	TPckgBuf<ContentAccess::TIntent> intentPckg;
+	aMessage.ReadData1FromClientL(intentPckg);
+	User::LeaveIfError(iImplementor.MdcExecuteIntent( intentPckg()));
+	}
+	
+void CMMFDRMCustomCommandParser::DoEvaluateIntentL(TMMFMessage& aMessage)
+	{
+	TPckgBuf<ContentAccess::TIntent> intentPckg;
+	aMessage.ReadData1FromClientL(intentPckg);
+	User::LeaveIfError(iImplementor.MdcEvaluateIntent( intentPckg()));
+	}
+	
+void CMMFDRMCustomCommandParser::DoDisableAutomaticIntentL(TMMFMessage& aMessage)
+	{
+	TPckgBuf<TBool> boolPckg;
+	aMessage.ReadData1FromClientL(boolPckg);
+	iImplementor.MdcDisableAutomaticIntent( boolPckg());
+	}
+	
+void CMMFDRMCustomCommandParser::DoSetAgentPropertyL(TMMFMessage& aMessage)
+	{
+	TPckgBuf<ContentAccess::TAgentProperty> propertyPckg;
+	TPckgBuf<TInt> valuePckg;
+	aMessage.ReadData1FromClientL(propertyPckg);
+	aMessage.ReadData2FromClientL(valuePckg);
+	User::LeaveIfError(iImplementor.MdcSetAgentProperty( propertyPckg(), valuePckg()));
+	}
+
+
+EXPORT_C RMMFDRMCustomCommands::RMMFDRMCustomCommands(RMMFController& aController) :
+	RMMFCustomCommandsBase(aController, KUidInterfaceMMFDRMControl)
+	{
+	}
+
+EXPORT_C TInt RMMFDRMCustomCommands::ExecuteIntent(ContentAccess::TIntent aIntent)
+	{
+	TPckgBuf<ContentAccess::TIntent> intentPckg(aIntent);
+	
+	return iController.CustomCommandSync(iDestinationPckg, 
+										 EMMFDRMControlExecuteIntent, 
+										 intentPckg,
+										 KNullDesC8);
+	}
+
+EXPORT_C TInt RMMFDRMCustomCommands::EvaluateIntent(ContentAccess::TIntent aIntent)
+	{
+	TPckgBuf<ContentAccess::TIntent> intentPckg(aIntent);
+	
+	return iController.CustomCommandSync(iDestinationPckg, 
+										 EMMFDRMControlEvaluateIntent, 
+										 intentPckg,
+										 KNullDesC8);
+	}
+
+EXPORT_C TInt RMMFDRMCustomCommands::DisableAutomaticIntent(TBool aBool)
+	{
+	TPckgBuf<TBool> boolPckg(aBool);
+	
+	return iController.CustomCommandSync(iDestinationPckg, 
+										 EMMFDRMControlDisableAutomaticIntent, 
+										 boolPckg,
+										 KNullDesC8);
+	}
+
+EXPORT_C TInt RMMFDRMCustomCommands::SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue)
+	{
+	TPckgBuf<ContentAccess::TAgentProperty> propertyPckg(aProperty);
+	TPckgBuf<TInt> valuePckg(aValue);
+	
+	return iController.CustomCommandSync(iDestinationPckg, 
+										 EMMFDRMControlSetAgentProperty, 
+										 propertyPckg,
+										 valuePckg);
+	}
+
+
+EXPORT_C TInt RMMFDRMCustomCommands::IsSupported()
+	{
+	TInt err = iController.CustomCommandSync(iDestinationPckg, 
+										 EMMFDRMControlIsSupported, 
+										 KNullDesC8,
+										 KNullDesC8);
+										 
+	return (err == KErrNone)?ETrue : EFalse;
+	}