--- /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;
+ }