diff -r d240f0a77280 -r 780c925249c1 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectreferences.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectreferences.cpp Mon Mar 15 12:42:31 2010 +0200 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectreferences.cpp Wed Mar 31 22:26:09 2010 +0300 @@ -18,7 +18,6 @@ #include #include -#include #include #include "csetobjectreferences.h" @@ -28,6 +27,8 @@ #include "mmmtpdputility.h" #include "mmmtpdpconfig.h" +const TInt KMmMtpRefArrayGranularity = 3; + // ----------------------------------------------------------------------------- // Verification data for the SetReferences request // ----------------------------------------------------------------------------- @@ -88,16 +89,14 @@ // Standard c++ constructor // ----------------------------------------------------------------------------- // -EXPORT_C CSetObjectReferences::CSetObjectReferences( - MMTPDataProviderFramework& aFramework, +EXPORT_C CSetObjectReferences::CSetObjectReferences( MMTPDataProviderFramework& aFramework, MMTPConnection& aConnection, MMmMtpDpConfig& aDpConfig ) : - CRequestProcessor( - aFramework, - aConnection, - sizeof( KMTPSetObjectReferencesPolicy )/sizeof( TMTPRequestElementInfo ), - KMTPSetObjectReferencesPolicy ), - iDpConfig( aDpConfig ) + CRequestProcessor( aFramework, + aConnection, + sizeof( KMTPSetObjectReferencesPolicy ) / sizeof( TMTPRequestElementInfo ), + KMTPSetObjectReferencesPolicy ), + iDpConfig( aDpConfig ) { PRINT( _L( "Operation: SetObjectReferences(0x9811)" ) ); } @@ -107,12 +106,15 @@ // set references to DB // ----------------------------------------------------------------------------- // -EXPORT_C void CSetObjectReferences::DoSetObjectReferencesL( CMmMtpDpMetadataAccessWrapper& /*aWrapper*/, - TUint16 /*aObjectFormat*/, - const TDesC& /*aSrcFileName*/, - CDesCArray& /*aRefFileArray*/ ) +EXPORT_C void CSetObjectReferences::DoSetObjectReferencesL( const CMTPObjectMetaData& aObject ) { - // do nothing, do special thing by inheriting + TUint formatCode = aObject.Uint( CMTPObjectMetaData::EFormatCode ); + TBool hasReference = MmMtpDpUtility::HasReference( formatCode ); + + if ( hasReference ) + { + iDpConfig.GetWrapperL().SetReferenceL( aObject, *iReferenceSuids ); + } } // ----------------------------------------------------------------------------- @@ -142,7 +144,7 @@ delete iReferenceSuids; iReferenceSuids = NULL; - iReferenceSuids = new ( ELeave ) CDesCArrayFlat( 3 ); + iReferenceSuids = new ( ELeave ) CDesCArrayFlat( KMmMtpRefArrayGranularity ); if ( !VerifyReferenceHandlesL() ) { @@ -159,10 +161,7 @@ CMTPObjectMetaData* object = CMTPObjectMetaData::NewLC(); // + object iFramework.ObjectMgr().ObjectL( objectHandle, *object ); PRINT1( _L( "MM MTP <> object file name is %S" ), &(object->DesC( CMTPObjectMetaData::ESuid ) ) ); - DoSetObjectReferencesL( iDpConfig.GetWrapperL(), - object->Uint( CMTPObjectMetaData::EFormatCode ), - object->DesC( CMTPObjectMetaData::ESuid ), - *iReferenceSuids ); + DoSetObjectReferencesL( *object ); CleanupStack::PopAndDestroy( object ); // - object @@ -196,8 +195,9 @@ result = EFalse; break; } - - iReferenceSuids->AppendL( object->DesC( CMTPObjectMetaData::ESuid ) ); + // Only audio in playlist is supported + if ( iDpConfig.GetWrapperL().Category( *object ) == EMPXSong ) + iReferenceSuids->AppendL( object->DesC( CMTPObjectMetaData::ESuid ) ); } CleanupStack::PopAndDestroy( object ); // - object PRINT( _L( "MM MTP <= CSetObjectReferences::VerifyReferenceHandlesL" ) );