mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp
--- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp Tue Feb 02 00:27:58 2010 +0200
+++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp Fri Feb 19 23:18:32 2010 +0200
@@ -72,7 +72,8 @@
sizeof(KMTPSetObjectPropValuePolicy) / sizeof(TMTPRequestElementInfo),
KMTPSetObjectPropValuePolicy ),
iObjectMgr( aFramework.ObjectMgr() ),
- iDpConfig( aDpConfig )
+ iDpConfig( aDpConfig ),
+ iFs( aFramework.Fs() )
{
SetPSStatus();
PRINT( _L( "Operation: SetObjectPropValue(0x9804)" ) );
@@ -107,13 +108,15 @@
case EMTPObjectPropCodeObjectSize:
case EMTPObjectPropCodeParentObject:
case EMTPObjectPropCodePersistentUniqueObjectIdentifier:
- case EMTPObjectPropCodeNonConsumable:
case EMTPObjectPropCodeDateAdded:
case EMTPObjectPropCodeDateCreated:
case EMTPObjectPropCodeDateModified:
//case EMTPObjectPropCodeVideoBitRate: // move to specific dp
returnCode = ETrue;
break;
+ case EMTPObjectPropCodeNonConsumable:
+ // It's settable, return EFalse here.
+ break;
default:
returnCode = IsSpecificPropCodeReadOnly(aPropCode);
@@ -133,43 +136,46 @@
PRINT( _L( "MM MTP => CSetObjectPropValue::CheckRequestL" ) );
TMTPResponseCode result = CRequestProcessor::CheckRequestL();
+ if ( result == EMTPRespCodeObjectWriteProtected )
+ {
+ // Return AccessDenied for P4S pass rate, instead of EMTPRespCodeObjectWriteProtected
+ result = EMTPRespCodeAccessDenied;
+ }
// Check if property is supported
if ( result == EMTPRespCodeOK )
{
iPropCode = Request().Uint32( TMTPTypeRequest::ERequestParameter2 );
PRINT1( _L( "MM MTP <> CSetObjectPropValue::CheckRequestL iPropCode = 0x%x" ), iPropCode );
- result = EMTPRespCodeInvalidObjectPropCode;
TUint32 objectHandle = Request().Uint32( TMTPTypeRequest::ERequestParameter1 );
CMTPObjectMetaData* objectInfo = iRequestChecker->GetObjectInfo( objectHandle );
-
- if (!objectInfo)
+ if ( objectInfo == NULL )
{
- PRINT(_L("MM MTP <> CGetObjectPropValue::CheckRequestL, objectInfo is NULL"));
+ PRINT( _L("MM MTP <> CGetObjectPropValue::CheckRequestL, objectInfo is NULL" ) );
return EMTPRespCodeInvalidObjectHandle;
}
- TFileName fileName = objectInfo->DesC(CMTPObjectMetaData::ESuid);
- TUint32 formatCode = objectInfo->Uint(CMTPObjectMetaData::EFormatCode);
-
+ TFileName fileName = objectInfo->DesC( CMTPObjectMetaData::ESuid );
+ TUint32 formatCode = objectInfo->Uint( CMTPObjectMetaData::EFormatCode );
PRINT3( _L( "MM MTP <> CGetObjectPropValue::CheckRequestL, handle = 0x%x, filename = %S, formatCode = 0x%x" ),
- objectHandle,
- &fileName,
- formatCode );
+ objectHandle,
+ &fileName,
+ formatCode );
const RArray<TUint>* properties = iDpConfig.GetSupportedPropertiesL( formatCode );
TInt count = properties->Count();
+
+ result = EMTPRespCodeInvalidObjectPropCode;
for ( TInt i = 0; i < count; i++ )
{
// Object property code is supported, but can not be set which is read only.
- if ( (*properties)[i] == iPropCode
- && IsPropCodeReadonly( iPropCode ) )
+ if ( ( *properties )[i] == iPropCode && IsPropCodeReadonly( iPropCode ) )
{
result = EMTPRespCodeAccessDenied;
break;
}
// Object property code is supported and can be set.
- else if ( iPropCode == (*properties)[i] )
+ else if ( iPropCode == ( *properties )[i] )
{
result = EMTPRespCodeOK;
break;
@@ -212,13 +218,16 @@
case EMTPObjectPropCodeDateAdded: // 0xDC4E
case EMTPObjectPropCodeDateCreated: // Date Created(0xDC08)
case EMTPObjectPropCodeDateModified: // Modified Date(0xDC09)
- case EMTPObjectPropCodeNonConsumable: // Non Consumable(0xDC4F)
case EMTPObjectPropCodeVideoBitRate: // 0xDE9C
{
SendResponseL( EMTPRespCodeAccessDenied );
}
break;
+ case EMTPObjectPropCodeNonConsumable: // Non Consumable(0xDC4F)
+ ReceiveDataL( iMTPTypeUint8 );
+ break;
+
// Get Data for String objects
case EMTPObjectPropCodeObjectFileName: // 0xDC07
case EMTPObjectPropCodeName: // 0xDC44
@@ -252,6 +261,11 @@
switch ( iPropCode )
{
+ case EMTPObjectPropCodeNonConsumable:
+ iObjectInfo->SetUint( CMTPObjectMetaData::ENonConsumable, iMTPTypeUint8.Value() );
+ iFramework.ObjectMgr().ModifyObjectL( *iObjectInfo );
+ break;
+
case EMTPObjectPropCodeObjectFileName:
{
TPtrC suid( iObjectInfo->DesC( CMTPObjectMetaData::ESuid ) );
@@ -273,7 +287,9 @@
// it is ok if file is not found in DB, following S60 solution
if ( KErrNotFound == err )
{
- TRAP( err, iDpConfig.GetWrapperL().AddObjectL( newSuid ) );
+ TUint formatCode = iObjectInfo->Uint( CMTPObjectMetaData::EFormatCode );
+ TUint subFormatCode = iObjectInfo->Uint( CMTPObjectMetaData::EFormatSubCode );
+ TRAP( err, iDpConfig.GetWrapperL().AddObjectL( newSuid, formatCode, subFormatCode ) );
PRINT1( _L( "MM MTP <> Add MPX object file name err = %d" ), err );
}
@@ -343,12 +359,8 @@
}
else if ( err == KErrNotFound )
{
-// TMTPFormatCode formatCode =
-// MmMtpDpUtility::FormatFromFilename( aObjectMetaData.DesC( CMTPObjectMetaData::ESuid ) );
if( MmMtpDpUtility::HasMetadata( aObjectMetaData.Uint( CMTPObjectMetaData::EFormatCode ) ) )
SendResponseL( EMTPRespCodeAccessDenied );
- else
- SendDataL( aNewData );
}
else
{