diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -188,103 +188,105 @@ if ( protectionStatus != EMTPProtectionNoProtection ) { // NOTE: P4S expects AccessDenied response instead of ObjectWriteProtected - return EMTPRespCodeAccessDenied; // EMTPRespCodeObjectWriteProtected; + responseCode = EMTPRespCodeAccessDenied; // EMTPRespCodeObjectWriteProtected; } - - switch ( propertyCode ) + else { - case EMTPObjectPropCodeStorageID: - case EMTPObjectPropCodeObjectFormat: - case EMTPObjectPropCodeProtectionStatus: - case EMTPObjectPropCodeObjectSize: - case EMTPObjectPropCodeParentObject: - case EMTPObjectPropCodePersistentUniqueObjectIdentifier: - case EMTPObjectPropCodeDateAdded: - case EMTPObjectPropCodeDateCreated: - case EMTPObjectPropCodeDateModified: - { - responseCode = EMTPRespCodeAccessDenied; - } - break; - - case EMTPObjectPropCodeNonConsumable: - object->SetUint( CMTPObjectMetaData::ENonConsumable, - aPropListElement.Uint8L( CMTPTypeObjectPropListElement::EValue ) ); - // TODO: need to reconsider, - // if propList comprise both non-consumable and objectFileName, - // ModifyObjectL would be called twice, need to investigate if it won't affect - // performance - iFramework.ObjectMgr().ModifyObjectL( *object ); - break; - - case EMTPObjectPropCodeObjectFileName: + switch ( propertyCode ) { - TPtrC suid( object->DesC( CMTPObjectMetaData::ESuid ) ); - TPtrC ptr( aPropListElement.StringL( CMTPTypeObjectPropListElement::EValue ) ); - if ( KMaxFileName < ptr.Length() ) - responseCode = EMTPRespCodeInvalidDataset; - else + case EMTPObjectPropCodeStorageID: + case EMTPObjectPropCodeObjectFormat: + case EMTPObjectPropCodeProtectionStatus: + case EMTPObjectPropCodeObjectSize: + case EMTPObjectPropCodeParentObject: + case EMTPObjectPropCodePersistentUniqueObjectIdentifier: + case EMTPObjectPropCodeDateAdded: + case EMTPObjectPropCodeDateCreated: + case EMTPObjectPropCodeDateModified: { - TFileName newSuid( ptr ); - TInt err = MmMtpDpUtility::UpdateObjectFileName( iFramework.Fs(), suid, newSuid ); - PRINT1( _L( "MM MTP <> Update object file name err = %d" ), err ); - if ( KErrOverflow == err ) // full path name is too long - { + responseCode = EMTPRespCodeAccessDenied; + } + break; + + case EMTPObjectPropCodeNonConsumable: + object->SetUint( CMTPObjectMetaData::ENonConsumable, + aPropListElement.Uint8L( CMTPTypeObjectPropListElement::EValue ) ); + // TODO: need to reconsider, + // if propList comprise both non-consumable and objectFileName, + // ModifyObjectL would be called twice, need to investigate if it won't affect + // performance + iFramework.ObjectMgr().ModifyObjectL( *object ); + break; + + case EMTPObjectPropCodeObjectFileName: + { + TPtrC suid( object->DesC( CMTPObjectMetaData::ESuid ) ); + TPtrC ptr( aPropListElement.StringL( CMTPTypeObjectPropListElement::EValue ) ); + if ( KMaxFileName < ptr.Length() ) responseCode = EMTPRespCodeInvalidDataset; - } - else if ( KErrNone == err ) // TODO: ( KErrAlreadyExists == err ) - { - TRAP( err, iDpConfig.GetWrapperL().RenameObjectL( *object, newSuid ) ); //Update MPX DB - - PRINT1( _L( "MM MTP <> Rename MPX object file name err = %d" ), err ); - // it is ok if file is not found in DB, following S60 solution - if ( KErrNotFound == err ) - { - TRAP( err, iDpConfig.GetWrapperL().AddObjectL( *object ) ); - PRINT1( _L( "MM MTP <> Add MPX object file name err = %d" ), err ); - } - - object->SetDesCL( CMTPObjectMetaData::ESuid, newSuid ); - iFramework.ObjectMgr().ModifyObjectL( *object ); - } - else if ( KErrInUse == err ) // object file is being used by other program - { - responseCode = EMTPRespCodeDeviceBusy; - } else { - responseCode = EMTPRespCodeGeneralError; + TFileName newSuid( ptr ); + TInt err = MmMtpDpUtility::UpdateObjectFileName( iFramework.Fs(), suid, newSuid ); + PRINT1( _L( "MM MTP <> Update object file name err = %d" ), err ); + if ( KErrOverflow == err ) // full path name is too long + { + responseCode = EMTPRespCodeInvalidDataset; + } + else if ( KErrNone == err ) // TODO: ( KErrAlreadyExists == err ) + { + TRAP( err, iDpConfig.GetWrapperL().RenameObjectL( *object, newSuid ) ); //Update MPX DB + + PRINT1( _L( "MM MTP <> Rename MPX object file name err = %d" ), err ); + // it is ok if file is not found in DB, following S60 solution + if ( KErrNotFound == err ) + { + TRAP( err, iDpConfig.GetWrapperL().AddObjectL( *object ) ); + PRINT1( _L( "MM MTP <> Add MPX object file name err = %d" ), err ); + } + + object->SetDesCL( CMTPObjectMetaData::ESuid, newSuid ); + iFramework.ObjectMgr().ModifyObjectL( *object ); + } + else if ( KErrInUse == err ) // object file is being used by other program + { + responseCode = EMTPRespCodeDeviceBusy; + } + else + { + responseCode = EMTPRespCodeGeneralError; + } } } - } - break; + break; - case EMTPObjectPropCodeName: - case EMTPObjectPropCodeAlbumArtist: - { - CMTPTypeString* stringData = CMTPTypeString::NewLC( - aPropListElement.StringL( CMTPTypeObjectPropListElement::EValue ) );// + stringData + case EMTPObjectPropCodeName: + case EMTPObjectPropCodeAlbumArtist: + { + CMTPTypeString* stringData = CMTPTypeString::NewLC( + aPropListElement.StringL( CMTPTypeObjectPropListElement::EValue ) );// + stringData - responseCode = iDpConfig.PropSettingUtility()->SetMetaDataToWrapper( iDpConfig, - propertyCode, - *stringData, - *object ); + responseCode = iDpConfig.PropSettingUtility()->SetMetaDataToWrapper( iDpConfig, + propertyCode, + *stringData, + *object ); - CleanupStack::PopAndDestroy( stringData );// - stringData - } - break; + CleanupStack::PopAndDestroy( stringData );// - stringData + } + break; - default: - { - responseCode = iDpConfig.PropSettingUtility()->SetSpecificObjectPropertyL( iDpConfig, - propertyCode, - *object, - aPropListElement ); + default: + { + responseCode = iDpConfig.PropSettingUtility()->SetSpecificObjectPropertyL( iDpConfig, + propertyCode, + *object, + aPropListElement ); + } + break; } - break; + + CleanupStack::PopAndDestroy( object ); // - object } - - CleanupStack::PopAndDestroy( object ); // - object } PRINT1( _L( "MM MTP <= CSetObjectPropList::SetObjectPropListL responseCode = 0x%x" ), responseCode );