sl@0: // Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include sl@0: #ifdef SYMBIAN_ENABLE_SPLIT_HEADERS sl@0: #include sl@0: #endif sl@0: sl@0: EXPORT_C CMMFDRMCustomCommandParser* CMMFDRMCustomCommandParser::NewL(MMMFDRMCustomCommandImplementor& aImplementor) sl@0: { sl@0: return new(ELeave) CMMFDRMCustomCommandParser(aImplementor); sl@0: } sl@0: sl@0: EXPORT_C CMMFDRMCustomCommandParser::~CMMFDRMCustomCommandParser() sl@0: { sl@0: } sl@0: sl@0: CMMFDRMCustomCommandParser::CMMFDRMCustomCommandParser(MMMFDRMCustomCommandImplementor& aImplementor) sl@0: : CMMFCustomCommandParserBase(KUidInterfaceMMFDRMControl), sl@0: iImplementor(aImplementor) sl@0: { sl@0: } sl@0: sl@0: void CMMFDRMCustomCommandParser::HandleRequest(TMMFMessage& aMessage) sl@0: { sl@0: TRAPD(err, sl@0: DoHandleRequestL(aMessage); sl@0: ); sl@0: aMessage.Complete(err); sl@0: } sl@0: sl@0: void CMMFDRMCustomCommandParser::DoHandleRequestL(TMMFMessage& aMessage) sl@0: { sl@0: if (aMessage.Destination().InterfaceId() == KUidInterfaceMMFDRMControl) sl@0: { sl@0: switch (aMessage.Function()) sl@0: { sl@0: case EMMFDRMControlEvaluateIntent: sl@0: DoEvaluateIntentL(aMessage); sl@0: break; sl@0: sl@0: case EMMFDRMControlExecuteIntent: sl@0: DoExecuteIntentL(aMessage); sl@0: break; sl@0: sl@0: case EMMFDRMControlDisableAutomaticIntent: sl@0: DoDisableAutomaticIntentL(aMessage); sl@0: break; sl@0: sl@0: case EMMFDRMControlSetAgentProperty: sl@0: DoSetAgentPropertyL(aMessage); sl@0: break; sl@0: case EMMFDRMControlIsSupported: sl@0: // we just complete the message with KErrNone sl@0: break; sl@0: default: sl@0: User::Leave(KErrNotSupported); sl@0: break; sl@0: } sl@0: } sl@0: else sl@0: { sl@0: User::Leave(KErrNotSupported); sl@0: } sl@0: } sl@0: sl@0: void CMMFDRMCustomCommandParser::DoExecuteIntentL(TMMFMessage& aMessage) sl@0: { sl@0: TPckgBuf intentPckg; sl@0: aMessage.ReadData1FromClientL(intentPckg); sl@0: User::LeaveIfError(iImplementor.MdcExecuteIntent( intentPckg())); sl@0: } sl@0: sl@0: void CMMFDRMCustomCommandParser::DoEvaluateIntentL(TMMFMessage& aMessage) sl@0: { sl@0: TPckgBuf intentPckg; sl@0: aMessage.ReadData1FromClientL(intentPckg); sl@0: User::LeaveIfError(iImplementor.MdcEvaluateIntent( intentPckg())); sl@0: } sl@0: sl@0: void CMMFDRMCustomCommandParser::DoDisableAutomaticIntentL(TMMFMessage& aMessage) sl@0: { sl@0: TPckgBuf boolPckg; sl@0: aMessage.ReadData1FromClientL(boolPckg); sl@0: iImplementor.MdcDisableAutomaticIntent( boolPckg()); sl@0: } sl@0: sl@0: void CMMFDRMCustomCommandParser::DoSetAgentPropertyL(TMMFMessage& aMessage) sl@0: { sl@0: TPckgBuf propertyPckg; sl@0: TPckgBuf valuePckg; sl@0: aMessage.ReadData1FromClientL(propertyPckg); sl@0: aMessage.ReadData2FromClientL(valuePckg); sl@0: User::LeaveIfError(iImplementor.MdcSetAgentProperty( propertyPckg(), valuePckg())); sl@0: } sl@0: sl@0: sl@0: EXPORT_C RMMFDRMCustomCommands::RMMFDRMCustomCommands(RMMFController& aController) : sl@0: RMMFCustomCommandsBase(aController, KUidInterfaceMMFDRMControl) sl@0: { sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDRMCustomCommands::ExecuteIntent(ContentAccess::TIntent aIntent) sl@0: { sl@0: TPckgBuf intentPckg(aIntent); sl@0: sl@0: return iController.CustomCommandSync(iDestinationPckg, sl@0: EMMFDRMControlExecuteIntent, sl@0: intentPckg, sl@0: KNullDesC8); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDRMCustomCommands::EvaluateIntent(ContentAccess::TIntent aIntent) sl@0: { sl@0: TPckgBuf intentPckg(aIntent); sl@0: sl@0: return iController.CustomCommandSync(iDestinationPckg, sl@0: EMMFDRMControlEvaluateIntent, sl@0: intentPckg, sl@0: KNullDesC8); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDRMCustomCommands::DisableAutomaticIntent(TBool aBool) sl@0: { sl@0: TPckgBuf boolPckg(aBool); sl@0: sl@0: return iController.CustomCommandSync(iDestinationPckg, sl@0: EMMFDRMControlDisableAutomaticIntent, sl@0: boolPckg, sl@0: KNullDesC8); sl@0: } sl@0: sl@0: EXPORT_C TInt RMMFDRMCustomCommands::SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue) sl@0: { sl@0: TPckgBuf propertyPckg(aProperty); sl@0: TPckgBuf valuePckg(aValue); sl@0: sl@0: return iController.CustomCommandSync(iDestinationPckg, sl@0: EMMFDRMControlSetAgentProperty, sl@0: propertyPckg, sl@0: valuePckg); sl@0: } sl@0: sl@0: sl@0: EXPORT_C TInt RMMFDRMCustomCommands::IsSupported() sl@0: { sl@0: TInt err = iController.CustomCommandSync(iDestinationPckg, sl@0: EMMFDRMControlIsSupported, sl@0: KNullDesC8, sl@0: KNullDesC8); sl@0: sl@0: return (err == KErrNone)?ETrue : EFalse; sl@0: }