mmlibs/mmfw/src/ControllerFramework/MMFDRMCustomCommands.cpp
author hgs
Thu, 07 Oct 2010 22:34:12 +0100
changeset 0 b8ed18f6c07b
permissions -rw-r--r--
2010wk40
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     1
// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     2
// All rights reserved.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     7
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     8
// Initial Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    10
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    11
// Contributors:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    12
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    13
// Description:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    14
//
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    15
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    16
#include <mmf/common/mmfdrmcustomcommands.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    17
#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    18
#include <mmf/common/mmfdrmcustomcommandsenum.h>
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    19
#endif
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    20
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    21
EXPORT_C CMMFDRMCustomCommandParser* CMMFDRMCustomCommandParser::NewL(MMMFDRMCustomCommandImplementor& aImplementor)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    22
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    23
	return new(ELeave) CMMFDRMCustomCommandParser(aImplementor);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    24
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    25
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    26
EXPORT_C CMMFDRMCustomCommandParser::~CMMFDRMCustomCommandParser()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    27
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    28
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    29
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    30
CMMFDRMCustomCommandParser::CMMFDRMCustomCommandParser(MMMFDRMCustomCommandImplementor& aImplementor) 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    31
	: CMMFCustomCommandParserBase(KUidInterfaceMMFDRMControl),
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    32
	  iImplementor(aImplementor)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    33
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    34
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    35
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    36
void CMMFDRMCustomCommandParser::HandleRequest(TMMFMessage& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    37
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    38
	TRAPD(err, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    39
			DoHandleRequestL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    40
		);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    41
	aMessage.Complete(err);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    42
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    43
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    44
void CMMFDRMCustomCommandParser::DoHandleRequestL(TMMFMessage& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    45
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    46
	if (aMessage.Destination().InterfaceId() == KUidInterfaceMMFDRMControl)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    47
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    48
		switch (aMessage.Function())
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    49
			{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    50
		case EMMFDRMControlEvaluateIntent:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    51
			DoEvaluateIntentL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    52
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    53
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    54
		case EMMFDRMControlExecuteIntent:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    55
			DoExecuteIntentL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    56
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    57
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    58
		case EMMFDRMControlDisableAutomaticIntent:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    59
			DoDisableAutomaticIntentL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    60
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    61
			
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    62
		case EMMFDRMControlSetAgentProperty:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    63
			DoSetAgentPropertyL(aMessage);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    64
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    65
		case EMMFDRMControlIsSupported:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    66
			// we just complete the message with KErrNone
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    67
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    68
		default:
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    69
			User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    70
			break;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    71
			}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    72
		}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    73
	else
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    74
		{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    75
		User::Leave(KErrNotSupported);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    76
		}	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    77
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    78
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    79
void CMMFDRMCustomCommandParser::DoExecuteIntentL(TMMFMessage& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    80
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    81
	TPckgBuf<ContentAccess::TIntent> intentPckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    82
	aMessage.ReadData1FromClientL(intentPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    83
	User::LeaveIfError(iImplementor.MdcExecuteIntent( intentPckg()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    84
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    85
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    86
void CMMFDRMCustomCommandParser::DoEvaluateIntentL(TMMFMessage& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    87
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    88
	TPckgBuf<ContentAccess::TIntent> intentPckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    89
	aMessage.ReadData1FromClientL(intentPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    90
	User::LeaveIfError(iImplementor.MdcEvaluateIntent( intentPckg()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    91
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    92
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    93
void CMMFDRMCustomCommandParser::DoDisableAutomaticIntentL(TMMFMessage& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    94
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    95
	TPckgBuf<TBool> boolPckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    96
	aMessage.ReadData1FromClientL(boolPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    97
	iImplementor.MdcDisableAutomaticIntent( boolPckg());
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    98
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
    99
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   100
void CMMFDRMCustomCommandParser::DoSetAgentPropertyL(TMMFMessage& aMessage)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   101
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   102
	TPckgBuf<ContentAccess::TAgentProperty> propertyPckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   103
	TPckgBuf<TInt> valuePckg;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   104
	aMessage.ReadData1FromClientL(propertyPckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   105
	aMessage.ReadData2FromClientL(valuePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   106
	User::LeaveIfError(iImplementor.MdcSetAgentProperty( propertyPckg(), valuePckg()));
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   107
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   108
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   109
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   110
EXPORT_C RMMFDRMCustomCommands::RMMFDRMCustomCommands(RMMFController& aController) :
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   111
	RMMFCustomCommandsBase(aController, KUidInterfaceMMFDRMControl)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   112
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   113
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   114
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   115
EXPORT_C TInt RMMFDRMCustomCommands::ExecuteIntent(ContentAccess::TIntent aIntent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   116
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   117
	TPckgBuf<ContentAccess::TIntent> intentPckg(aIntent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   118
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   119
	return iController.CustomCommandSync(iDestinationPckg, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   120
										 EMMFDRMControlExecuteIntent, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   121
										 intentPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   122
										 KNullDesC8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   123
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   124
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   125
EXPORT_C TInt RMMFDRMCustomCommands::EvaluateIntent(ContentAccess::TIntent aIntent)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   126
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   127
	TPckgBuf<ContentAccess::TIntent> intentPckg(aIntent);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   128
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   129
	return iController.CustomCommandSync(iDestinationPckg, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   130
										 EMMFDRMControlEvaluateIntent, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   131
										 intentPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   132
										 KNullDesC8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   133
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   134
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   135
EXPORT_C TInt RMMFDRMCustomCommands::DisableAutomaticIntent(TBool aBool)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   136
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   137
	TPckgBuf<TBool> boolPckg(aBool);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   138
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   139
	return iController.CustomCommandSync(iDestinationPckg, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   140
										 EMMFDRMControlDisableAutomaticIntent, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   141
										 boolPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   142
										 KNullDesC8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   143
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   144
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   145
EXPORT_C TInt RMMFDRMCustomCommands::SetAgentProperty(ContentAccess::TAgentProperty aProperty, TInt aValue)
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   146
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   147
	TPckgBuf<ContentAccess::TAgentProperty> propertyPckg(aProperty);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   148
	TPckgBuf<TInt> valuePckg(aValue);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   149
	
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   150
	return iController.CustomCommandSync(iDestinationPckg, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   151
										 EMMFDRMControlSetAgentProperty, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   152
										 propertyPckg,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   153
										 valuePckg);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   154
	}
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   155
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   156
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   157
EXPORT_C TInt RMMFDRMCustomCommands::IsSupported()
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   158
	{
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   159
	TInt err = iController.CustomCommandSync(iDestinationPckg, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   160
										 EMMFDRMControlIsSupported, 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   161
										 KNullDesC8,
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   162
										 KNullDesC8);
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   163
										 
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   164
	return (err == KErrNone)?ETrue : EFalse;
b8ed18f6c07b 2010wk40
hgs
parents:
diff changeset
   165
	}