diff -r d45095c2f4f3 -r bee149131e4b mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Tue Feb 02 00:27:58 2010 +0200 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Fri Feb 19 23:18:32 2010 +0200 @@ -56,6 +56,19 @@ _LIT( KMtpDateTimeConnector, "T" ); _LIT( KEmptyText, "" ); +#if defined(_DEBUG) || defined(MMMTPDP_PERFLOG) +_LIT( KMpxCollectionNewL, "MpxCollectionNewL" ); +_LIT( KMpxCollectionAddL, "MpxCollectionAddL" ); +_LIT( KMpxCollectionGetL, "MpxCollectionGetL" ); +_LIT( KMpxCollectionSetL, "MpxCollectionSetL" ); +_LIT( KMpxCollectionSetReferenceL, "MpxCollectionSetReferenceL" ); +_LIT( KMpxCollectionGetAbstractMedia, "MpxCollectionGetAbstractMedia" ); +_LIT( KMpxCollectionGetReference, "MpxCollectionGetReference" ); +_LIT( KMpxCollectionFindAllLValidate, "MpxCollectionValidate" ); +_LIT( KMpxCollectionFindAllLBeforeAdd, "MpxCollectionFindAllLBeforeAdd" ); +_LIT( KSetMetadataValue, "SetMetadataValueL" ); +#endif + #ifdef _DEBUG _LIT( KMtpMpxPanic, "CMmMtpDpMetadataMpxAccess" ); #endif @@ -76,7 +89,7 @@ iRfs( aRfs ), iFramework( aFramework ) { - + // Do nothing } // --------------------------------------------------------------------------- @@ -134,7 +147,7 @@ CleanupStack::PopAndDestroy( suid ); // - suid - TMPXAttributeData attrib( MpxAttribFromPropL( media, aPropCode ) ); + TMPXAttributeData attrib( MpxAttribFromPropL( aPropCode ) ); TBool isSupported = media.IsSupported( attrib ); PRINT1(_L( "MM MTP <> CMmMtpDpMetadataMpxAccess::GetObjectMetadataValueL isSupported = %d" ), isSupported); @@ -346,9 +359,9 @@ // as a General Error if ( iCollectionHelper == NULL ) { - PERFLOGSTART(KMpxCollectionNewL); + PERFLOGSTART( KMpxCollectionNewL ); iCollectionHelper = CMPXCollectionHelperFactory::NewCollectionCachedHelperL(); - PERFLOGSTOP(KMpxCollectionNewL); + PERFLOGSTOP( KMpxCollectionNewL ); // Do a search for a song ID that does not exist // This is to validate the presence of the media database. @@ -543,9 +556,9 @@ KMPXMediaGeneralModified, EFalse ); // Update the song's metadata with the media object - PERFLOGSTART(KMpxCollectionSetL); + PERFLOGSTART( KMpxCollectionSetL ); CollectionHelperL()->SetL( media ); - PERFLOGSTOP(KMpxCollectionSetL); + PERFLOGSTOP( KMpxCollectionSetL ); CleanupStack::PopAndDestroy( media ); // - media } @@ -596,7 +609,8 @@ TUint aFormatCode ) { PRINT2( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::RenameObjectL aOldFileName = %S, aNewFileName = %S" ), - &aOldFileName, &aNewFileName ); + &aOldFileName, + &aNewFileName ); TInt err = KErrNone; @@ -604,10 +618,7 @@ || ( aFormatCode == EMTPFormatCodeM3UPlaylist ) ) { PRINT( _L( "MM MTP <> Playlist" ) ); - TRAP( err, CollectionHelperL()->RenameL( - aOldFileName, - aNewFileName, - EMPXPlaylist ) ); + TRAP( err, CollectionHelperL()->RenameL( aOldFileName, aNewFileName, EMPXPlaylist ) ); } else // Not a playlist { @@ -703,14 +714,13 @@ if ( ( format == EMTPFormatCodeAbstractAudioVideoPlaylist ) || ( format == EMTPFormatCodeM3UPlaylist ) ) { - PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL format is playlist" ) ); + PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL format is abstract media" ) ); contentIDs.AppendL( KMPXMediaIdGeneral ); media = CMPXMedia::NewL( contentIDs.Array() ); CleanupStack::PushL( media ); // + media - media->SetTObjectValueL( - KMPXMediaGeneralCategory, + media->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXPlaylist ); } else @@ -739,12 +749,14 @@ media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); CleanupStack::PopAndDestroy( suid ); // - suid + PERFLOGSTART( KSetMetadataValue ); SetMetadataValueL( aPropCode, aNewData, *media ); + PERFLOGSTOP( KSetMetadataValue ); // Update the song's metadata with the media object - PERFLOGSTART(KMpxCollectionSetL); + PERFLOGSTART( KMpxCollectionSetL ); CollectionHelperL()->SetL( media ); - PERFLOGSTOP(KMpxCollectionSetL); + PERFLOGSTOP( KMpxCollectionSetL ); CleanupStack::PopAndDestroy( 2, &contentIDs ); // - media, contentIDs @@ -765,7 +777,7 @@ TMTPTypeUint16 uint16Data; TMTPTypeUint32 uint32Data; - TMPXAttributeData attrib( MpxAttribFromPropL( aMediaProp, aPropCode ) ); + TMPXAttributeData attrib( MpxAttribFromPropL( aPropCode ) ); switch ( aPropCode ) { @@ -906,7 +918,7 @@ case EMTPObjectPropCodeDescription: { #ifdef __MUSIC_ID_SUPPORT - //WriteMusicIdsL(*longString); + // WriteMusicIdsL(*longString); #else desData = CMTPTypeArray::NewLC( EMTPTypeAUINT16 ); // + desData MMTPType::CopyL( aNewData, *desData ); @@ -970,9 +982,7 @@ CleanupStack::PushL( searchMedia ); // + searchMedia searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); - searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); - searchMedia->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); RArray songAttributes; @@ -981,11 +991,10 @@ PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::AddSongL searchMedia setup with no problems" ) ); - PERFLOGSTART(KMpxCollectionFindAllLBeforeAdd); - CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( - *searchMedia, + PERFLOGSTART( KMpxCollectionFindAllLBeforeAdd ); + CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, songAttributes.Array() ); - PERFLOGSTOP(KMpxCollectionFindAllLBeforeAdd); + PERFLOGSTOP( KMpxCollectionFindAllLBeforeAdd ); CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia @@ -1022,11 +1031,9 @@ CleanupStack::PushL( media ); // + media // MPXMedia default types - media->SetTObjectValueL( - KMPXMediaGeneralType, + media->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); - media->SetTObjectValueL( - KMPXMediaGeneralCategory, + media->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); // File Path // @@ -1050,17 +1057,17 @@ if ( foundItemCount == 0 ) { - PERFLOGSTART(KMpxCollectionAddL); + PERFLOGSTART( KMpxCollectionAddL ); CollectionHelperL()->AddL( media ); - PERFLOGSTOP(KMpxCollectionAddL); + PERFLOGSTOP( KMpxCollectionAddL ); PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::AddSongL Media added into collection" ) ); } else { - PERFLOGSTART(KMpxCollectionSetL); + PERFLOGSTART( KMpxCollectionSetL ); CollectionHelperL()->SetL( media ); - PERFLOGSTOP(KMpxCollectionSetL); + PERFLOGSTOP( KMpxCollectionSetL ); PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::AddSongL Media metadata updated in collection" ) ); } @@ -1074,15 +1081,15 @@ } // ----------------------------------------------------------------------------- -// CMmMtpDpMetadataMpxAccess::AddPlaylistL -// Adds Playlist to Mpx DB +// CMmMtpDpMetadataMpxAccess::AddAbstractMediaL +// Adds abstract media to Mpx DB // ----------------------------------------------------------------------------- // -void CMmMtpDpMetadataMpxAccess::AddPlaylistL( const TDesC& aFullFileName ) +void CMmMtpDpMetadataMpxAccess::AddAbstractMediaL( const TDesC& aFullFileName, TMPXGeneralCategory aCategory ) { - PRINT1( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::AddPlaylistL aFullFileName = %S" ), &aFullFileName ); + PRINT1( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::AddAbstractMediaL aFullFileName = %S" ), &aFullFileName ); - // Does a record already exist for this playlist? + // Does a record already exist for this AbstractMedia? RArray contentIDs; CleanupClosePushL( contentIDs ); // + contentIDs contentIDs.AppendL( KMPXMediaIdGeneral ); @@ -1092,21 +1099,24 @@ CleanupStack::PushL( searchMedia ); // + searchMedia searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); - searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXPlaylist ); + searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, aCategory ); searchMedia->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); - RArray playlistAttributes; - CleanupClosePushL( playlistAttributes ); // + playlistAttributes - playlistAttributes.AppendL( KMPXMediaGeneralId ); - playlistAttributes.AppendL( KMPXMediaGeneralTitle ); - playlistAttributes.AppendL( KMPXMediaGeneralUri ); + RArray abstractMediaAttributes; + CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes + abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); + abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); + if ( aCategory == EMPXPlaylist ) + { + abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); + } - PERFLOGSTART(KMpxCollectionFindAllLBeforeAdd); + PERFLOGSTART( KMpxCollectionFindAllLBeforeAdd ); CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, - playlistAttributes.Array() ); - PERFLOGSTOP(KMpxCollectionFindAllLBeforeAdd); + abstractMediaAttributes.Array() ); + PERFLOGSTOP( KMpxCollectionFindAllLBeforeAdd ); - CleanupStack::PopAndDestroy( &playlistAttributes ); // - playlistAttributes + CleanupStack::PopAndDestroy( &abstractMediaAttributes ); // - abstractMediaAttributes CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia CleanupStack::PushL( foundMedia ); // + foundMedia @@ -1117,12 +1127,12 @@ if ( foundItemCount != 0 ) { - PRINT( _L( "MM MTP <> Playlist Media already exists in the collection" ) ); + PRINT( _L( "MM MTP <> Abstract Media already exists in the collection" ) ); } else { - // Creat media properties for the playlist - PRINT( _L( "MM MTP <> Create playlist media properties" ) ); + // Creat media properties for the abstractMedia + PRINT( _L( "MM MTP <> Create abstract media properties" ) ); RArray contentIDs; CleanupClosePushL( contentIDs ); // + contentIDs contentIDs.AppendL( KMPXMediaIdGeneral ); @@ -1131,14 +1141,14 @@ CleanupStack::PopAndDestroy( &contentIDs ); // - contentIDs CleanupStack::PushL( media ); // + media - CMPXMediaArray* playlistArray = CMPXMediaArray::NewL(); - CleanupStack::PushL( playlistArray ); // + playlistArray; + CMPXMediaArray* abstractMediaArray = CMPXMediaArray::NewL(); + CleanupStack::PushL( abstractMediaArray ); // + abstractMediaArray; // MPXMedia default types media->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); media->SetTObjectValueL( KMPXMediaGeneralCategory, - EMPXPlaylist ); + aCategory ); // File Path // media->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); @@ -1146,37 +1156,40 @@ TParsePtrC parse( aFullFileName ); media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); - media->SetTextValueL( KMPXMediaGeneralTitle, parse.Name() ); + if ( aCategory == EMPXPlaylist ) + { + media->SetTextValueL( KMPXMediaGeneralTitle, parse.Name() ); + } media->SetTObjectValueL( KMPXMediaGeneralSynchronized, ETrue ); - media->SetCObjectValueL( KMPXMediaArrayContents, playlistArray ); - media->SetTObjectValueL( KMPXMediaArrayCount, playlistArray->Count() ); + media->SetCObjectValueL( KMPXMediaArrayContents, abstractMediaArray ); + media->SetTObjectValueL( KMPXMediaArrayCount, abstractMediaArray->Count() ); - PERFLOGSTART(KMpxCollectionAddL); + PERFLOGSTART( KMpxCollectionAddL ); CollectionHelperL()->AddL( media ); - PERFLOGSTOP(KMpxCollectionAddL); + PERFLOGSTOP( KMpxCollectionAddL ); // Clear the array - CleanupStack::PopAndDestroy( playlistArray ); // - playlistArray + CleanupStack::PopAndDestroy( abstractMediaArray ); // - abstractMediaArray CleanupStack::PopAndDestroy( media ); // - media } CleanupStack::PopAndDestroy( foundMedia ); // - foundMedia - PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::AddPlaylistL" ) ); + PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::AddAbstractMediaL" ) ); } // ----------------------------------------------------------------------------- -// CMmMtpDpMetadataMpxAccess::SetPlaylistL -// Set playlist to DB +// CMmMtpDpMetadataMpxAccess::SetAbstractMediaL +// Set abstract media to DB // ----------------------------------------------------------------------------- // -void CMmMtpDpMetadataMpxAccess::SetPlaylistL( const TDesC& aPlaylistFileName, - CDesCArray& aRefFileArray ) +void CMmMtpDpMetadataMpxAccess::SetAbstractMediaL( const TDesC& aAbstractMediaFileName, + CDesCArray& aRefFileArray, TMPXGeneralCategory aCategory ) { - PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::SetPlaylistL" ) ); - CMPXMediaArray* playlistArray = CMPXMediaArray::NewL(); - CleanupStack::PushL( playlistArray ); // + playlistArray + PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::SetAbstractMediaL" ) ); + CMPXMediaArray* abstractMediaArray = CMPXMediaArray::NewL(); + CleanupStack::PushL( abstractMediaArray ); // + abstractMediaArray TUint count = aRefFileArray.Count(); for ( TUint j = 0; j < count; j++ ) @@ -1211,7 +1224,7 @@ media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); // Add media into array contents - playlistArray->AppendL( media ); + abstractMediaArray->AppendL( media ); CleanupStack::Pop( media ); // - media } @@ -1220,35 +1233,35 @@ CleanupClosePushL( contentIDs ); // + contentIDs contentIDs.AppendL( KMPXMediaIdGeneral ); - CMPXMedia* playlistMedia = CMPXMedia::NewL( contentIDs.Array() ); + CMPXMedia* abstractMedia = CMPXMedia::NewL( contentIDs.Array() ); CleanupStack::PopAndDestroy( &contentIDs ); // - contentIDs - CleanupStack::PushL( playlistMedia ); // + playlistMedia + CleanupStack::PushL( abstractMedia ); // + abstractMedia - playlistMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); + abstractMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); - playlistMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXPlaylist ); + abstractMedia->SetTObjectValueL( KMPXMediaGeneralCategory, aCategory ); - playlistMedia->SetTextValueL( KMPXMediaGeneralUri, aPlaylistFileName ); + abstractMedia->SetTextValueL( KMPXMediaGeneralUri, aAbstractMediaFileName ); - TParsePtrC parse( aPlaylistFileName ); - playlistMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); - playlistMedia->SetTObjectValueL( KMPXMediaGeneralSynchronized, + TParsePtrC parse( aAbstractMediaFileName ); + abstractMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); + abstractMedia->SetTObjectValueL( KMPXMediaGeneralSynchronized, ETrue ); - playlistMedia->SetCObjectValueL( KMPXMediaArrayContents, playlistArray ); - playlistMedia->SetTObjectValueL( KMPXMediaArrayCount, - playlistArray->Count() ); + abstractMedia->SetCObjectValueL( KMPXMediaArrayContents, abstractMediaArray ); + abstractMedia->SetTObjectValueL( KMPXMediaArrayCount, + abstractMediaArray->Count() ); - // Update the duplicate playlist(s) with the new playlist array - PERFLOGSTART(KMpxCollectionSetL); - CollectionHelperL()->SetL( playlistMedia ); - PERFLOGSTOP(KMpxCollectionSetL); + // Update the duplicate abstractMedia(s) with the new abstractMedia array + PERFLOGSTART( KMpxCollectionSetReferenceL ); + CollectionHelperL()->SetL( abstractMedia ); + PERFLOGSTOP( KMpxCollectionSetReferenceL ); - CleanupStack::PopAndDestroy( playlistMedia ); // - playlistMedia + CleanupStack::PopAndDestroy( abstractMedia ); // - abstractMedia // Clear the array - CleanupStack::PopAndDestroy( playlistArray ); // - playlistArray + CleanupStack::PopAndDestroy( abstractMediaArray ); // - abstractMediaArray - PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetPlaylistL" ) ); + PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetAbstractMediaL" ) ); } // --------------------------------------------------------------------------- @@ -1303,32 +1316,50 @@ aMediaProp.SetTextValueL( KMPXMediaMusicAlbumArtFileName, KNullDesC ); // URL aMediaProp.SetTextValueL( KMPXMediaMusicURL, KNullDesC ); + + // add below for P4S failed case, that get metadata from cached CMPXMedia object + // DateAdded + TTime time; + time.HomeTime(); + aMediaProp.SetTObjectValueL( KMPXMediaGeneralDate, time.Int64() ); + // SampleRate + aMediaProp.SetTObjectValueL( KMPXMediaAudioSamplerate, 0 ); + // AudioBitrate + aMediaProp.SetTObjectValueL( KMPXMediaAudioBitrate, 0 ); + // Duration + aMediaProp.SetTObjectValueL( KMPXMediaGeneralDuration, 0 ); + // DrmStatus + aMediaProp.SetTObjectValueL( KMPXMediaMTPDrmStatus, 0 ); + // NumberOfChannels + aMediaProp.SetTObjectValueL( KMPXMediaAudioNumberOfChannels, 0 ); + // AudioCodec + aMediaProp.SetTObjectValueL( KMPXMediaAudioAudioCodec, 0 ); + PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetDefaultL" ) ); } -TMPXAttributeData CMmMtpDpMetadataMpxAccess::MpxAttribFromPropL( const CMPXMedia& aMedia, - const TUint16 aPropCode ) +TMPXAttributeData CMmMtpDpMetadataMpxAccess::MpxAttribFromPropL( const TUint16 aPropCode ) { const TMetadataTable KMetadataTable[] = - { - { EMTPObjectPropCodeName, KMPXMediaGeneralTitle }, - { EMTPObjectPropCodeArtist, KMPXMediaMusicArtist }, - { EMTPObjectPropCodeAlbumName, KMPXMediaMusicAlbum }, - { EMTPObjectPropCodeDateModified, KMPXMediaGeneralDate }, - { EMTPObjectPropCodeDateAdded, KMPXMediaGeneralDate }, - { EMTPObjectPropCodeDuration, KMPXMediaGeneralDuration }, - { EMTPObjectPropCodeTrack, KMPXMediaMusicAlbumTrack }, - { EMTPObjectPropCodeComposer, KMPXMediaMusicComposer }, - { EMTPObjectPropCodeOriginalReleaseDate, KMPXMediaMusicYear }, - { EMTPObjectPropCodeGenre, KMPXMediaMusicGenre }, - { EMTPObjectPropCodeDRMStatus, KMPXMediaMTPDrmStatus }, - { EMTPObjectPropCodeDescription, KMPXMediaGeneralComment }, - { EMTPObjectPropCodeNumberOfChannels, KMPXMediaAudioNumberOfChannels }, - { EMTPObjectPropCodeAudioBitRate, KMPXMediaAudioBitrate }, - { EMTPObjectPropCodeSampleRate, KMPXMediaAudioSamplerate }, - { EMTPObjectPropCodeAudioWAVECodec, KMPXMediaAudioAudioCodec }, - { EMTPObjectPropCodeAlbumArtist, KMPXMediaMusicArtist } - }; + { + { EMTPObjectPropCodeName, KMPXMediaGeneralTitle }, + { EMTPObjectPropCodeArtist, KMPXMediaMusicArtist }, + { EMTPObjectPropCodeAlbumName, KMPXMediaMusicAlbum }, + { EMTPObjectPropCodeDateModified, KMPXMediaGeneralDate }, + { EMTPObjectPropCodeDateAdded, KMPXMediaGeneralDate }, + { EMTPObjectPropCodeDuration, KMPXMediaGeneralDuration }, + { EMTPObjectPropCodeTrack, KMPXMediaMusicAlbumTrack }, + { EMTPObjectPropCodeComposer, KMPXMediaMusicComposer }, + { EMTPObjectPropCodeOriginalReleaseDate, KMPXMediaMusicYear }, + { EMTPObjectPropCodeGenre, KMPXMediaMusicGenre }, + { EMTPObjectPropCodeDRMStatus, KMPXMediaMTPDrmStatus }, + { EMTPObjectPropCodeDescription, KMPXMediaGeneralComment }, + { EMTPObjectPropCodeNumberOfChannels, KMPXMediaAudioNumberOfChannels }, + { EMTPObjectPropCodeAudioBitRate, KMPXMediaAudioBitrate }, + { EMTPObjectPropCodeSampleRate, KMPXMediaAudioSamplerate }, + { EMTPObjectPropCodeAudioWAVECodec, KMPXMediaAudioAudioCodec }, + { EMTPObjectPropCodeAlbumArtist, KMPXMediaMusicArtist } + }; TInt i = 0; TInt count = sizeof( KMetadataTable ) / sizeof( KMetadataTable[0] ); @@ -1349,14 +1380,14 @@ } // --------------------------------------------------------------------------- -// CMmMtpDpMetadataMpxAccess::GetAllPlaylistL -// Get all playlists from MPX database in the assigned store +// CMmMtpDpMetadataMpxAccess::GetAllAbstractMediaL +// Get all abstract medias from MPX database in the assigned store // --------------------------------------------------------------------------- // -void CMmMtpDpMetadataMpxAccess::GetAllPlaylistL( const TDesC& aStoreRoot, - CMPXMediaArray** aPlaylists ) +void CMmMtpDpMetadataMpxAccess::GetAllAbstractMediaL( const TDesC& aStoreRoot, + CMPXMediaArray** aAbstractMedias, TMPXGeneralCategory aCategory ) { - PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetAllPlaylistL" ) ); + PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetAllAbstractMediaL" ) ); SetStorageRootL( aStoreRoot ); @@ -1369,21 +1400,24 @@ CleanupStack::PushL( searchMedia ); // + searchMedia searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); - searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXPlaylist ); + searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, aCategory ); searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); - RArray playlistAttributes; - CleanupClosePushL( playlistAttributes ); // + playlistAttributes - playlistAttributes.AppendL( KMPXMediaGeneralId ); - playlistAttributes.AppendL( KMPXMediaGeneralTitle ); - playlistAttributes.AppendL( KMPXMediaGeneralUri ); + RArray abstractMediaAttributes; + CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes + abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); + abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); + if ( aCategory == EMPXPlaylist ) + { + abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); + } - PERFLOGSTART(KMpxCollectionGetPlaylist); + PERFLOGSTART( KMpxCollectionGetAbstractMedia ); CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, - playlistAttributes.Array() ); - PERFLOGSTOP(KMpxCollectionGetPlaylist); + abstractMediaAttributes.Array() ); + PERFLOGSTOP( KMpxCollectionGetAbstractMedia ); - CleanupStack::PopAndDestroy( &playlistAttributes ); // - playlistAttributes + CleanupStack::PopAndDestroy( &abstractMediaAttributes ); // - abstractMediaAttributes CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia CleanupStack::PushL( foundMedia ); // + foundMedia @@ -1392,9 +1426,9 @@ User::Leave( KErrNotSupported ); } - TInt count = *foundMedia->Value ( KMPXMediaArrayCount ); + TInt count = *foundMedia->Value( KMPXMediaArrayCount ); - PRINT1( _L("MM MTP <> CMmMtpDpMetadataMpxAccess::GetAllPlaylistL [%d] playlists found in Playlist Database"), count ); + PRINT1( _L("MM MTP <> CMmMtpDpMetadataMpxAccess::GetAllAbstractMediaL [%d] abstractMedias found in Database"), count ); if ( count > 0 ) { @@ -1403,13 +1437,13 @@ User::Leave( KErrNotSupported ); } - *aPlaylists = CMPXMediaArray::NewL( *( foundMedia->Value ( - KMPXMediaArrayContents ) ) ); + *aAbstractMedias = + CMPXMediaArray::NewL( *( foundMedia->Value ( KMPXMediaArrayContents ) ) ); } CleanupStack::PopAndDestroy( foundMedia ); // - foundMedia - PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::GetAllPlaylistL" ) ); + PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::GetAllAbstractMediaL" ) ); } // --------------------------------------------------------------------------- @@ -1417,15 +1451,15 @@ // Get all references of specified playlist // --------------------------------------------------------------------------- // -void CMmMtpDpMetadataMpxAccess::GetAllReferenceL( CMPXMedia* aPlaylist, - CDesCArray& aReferences ) +void CMmMtpDpMetadataMpxAccess::GetAllReferenceL( CMPXMedia* aAbstractMedia, + CDesCArray& aReferences ) { PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetAllReferenceL" ) ); - __ASSERT_DEBUG( aPlaylist, User::Panic( KMtpMpxPanic, KErrArgument ) ); + __ASSERT_DEBUG( aAbstractMedia, User::Panic( KMtpMpxPanic, KErrArgument ) ); // Extract the playlist id from the found object - TUint32 playlistId = *(*aPlaylist).Value ( KMPXMediaGeneralId ); + TUint32 abstractMediaId = *( *aAbstractMedia ).Value( KMPXMediaGeneralId ); // find the media object that contains a list of songs in the playlist RArray contentIDs; @@ -1438,17 +1472,17 @@ searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXGroup ); searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); - searchMedia->SetTObjectValueL ( KMPXMediaGeneralId, playlistId ); + searchMedia->SetTObjectValueL( KMPXMediaGeneralId, abstractMediaId ); RArray songAttributes; CleanupClosePushL( songAttributes ); // + songAttributes songAttributes.AppendL( KMPXMediaGeneralId ); songAttributes.AppendL( KMPXMediaGeneralUri ); - PERFLOGSTART(KMpxCollectionGetReference); + PERFLOGSTART( KMpxCollectionGetReference ); CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, songAttributes.Array() ); - PERFLOGSTOP(KMpxCollectionGetReference); + PERFLOGSTOP( KMpxCollectionGetReference ); CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia @@ -1498,23 +1532,30 @@ } // --------------------------------------------------------------------------- -// CMmMtpDpMetadataMpxAccess::GetPlaylistNameL +// CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL // // --------------------------------------------------------------------------- // -void CMmMtpDpMetadataMpxAccess::GetPlaylistNameL( CMPXMedia* aPlaylist, - TDes& aPlaylistName ) +HBufC* CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL( CMPXMedia* aAbstractMedia, + TMPXGeneralCategory aCategory ) { - PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetPlaylistNameL" ) ); - - if ( !aPlaylist->IsSupported( KMPXMediaGeneralUri ) ) + PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL" ) ); + HBufC* name = NULL; + if ( aCategory == EMPXPlaylist ) + { + if( !aAbstractMedia->IsSupported( KMPXMediaGeneralUri ) ) + { + User::Leave( KErrNotSupported ); + } + name = aAbstractMedia->ValueText( KMPXMediaGeneralUri ).AllocL(); + } + else { User::Leave( KErrNotSupported ); } - aPlaylistName.Copy( aPlaylist->ValueText( KMPXMediaGeneralUri ) ); - - PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::GetPlaylistNameL" ) ); + PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL" ) ); + return name; } // --------------------------------------------------------------------------- @@ -1523,7 +1564,7 @@ // --------------------------------------------------------------------------- // void CMmMtpDpMetadataMpxAccess::GetModifiedContentL( TInt& arrayCount, - CDesCArray& aModifiedcontent ) + CDesCArray& aModifiedcontent ) { PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetModifiedContentL" ) ); CMPXMedia* foundMedia;