diff -r 0f32e550d9d8 -r 612c4815aebe mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp --- a/mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp Fri Jul 09 16:27:03 2010 -0500 +++ b/mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp Fri Jul 23 17:31:12 2010 -0500 @@ -792,8 +792,8 @@ RArray attrs; CleanupClosePushL( attrs ); - attrs.Append( KMPXMediaGeneralId ); - attrs.Append( KMPXMediaGeneralTitle ); + attrs.AppendL( KMPXMediaGeneralId ); + attrs.AppendL( KMPXMediaGeneralTitle ); CMPXMedia* criteria = CMPXMedia::NewL(); CleanupStack::PushL( criteria ); @@ -1130,23 +1130,28 @@ const CMPXMediaArray* mediaArray = container.Value( KMPXMediaArrayContents ); CMPXMedia* album( mediaArray->AtL( index ) ); - // Fetch the songs for the selected album + // Obtain the artistId from the container + TMPXItemId artistId = container.ValueTObjectL(KMPXMediaGeneralId); + + // Fetch the songs for the selected album and the artist + // Specifying artistId is necessary to search for songs in the artist’s unknown album. TMPXItemId albumId = album->ValueTObjectL(KMPXMediaGeneralId); CMPXMedia* findCriteria = CMPXMedia::NewL(); CleanupStack::PushL( findCriteria ); findCriteria->SetTObjectValueL( KMPXMediaGeneralType, EMPXGroup ); findCriteria->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); findCriteria->SetTObjectValueL( KMPXMediaGeneralId, albumId ); + findCriteria->SetTObjectValueL( KMPXMediaGeneralContainerId, artistId ); RArray attrs; CleanupClosePushL( attrs ); - attrs.Append( TMPXAttribute( KMPXMediaIdGeneral, + attrs.AppendL( TMPXAttribute( KMPXMediaIdGeneral, EMPXMediaGeneralTitle | EMPXMediaGeneralUri | EMPXMediaGeneralId | EMPXMediaGeneralType | EMPXMediaGeneralCategory | EMPXMediaGeneralFlags ) ); - attrs.Append( KMPXMediaMusicAlbumTrack ); + attrs.AppendL( KMPXMediaMusicAlbumTrack ); iCollectionUtility->Collection().FindAllL( *findCriteria, attrs.Array(), *this ); CleanupStack::PopAndDestroy( &attrs ); @@ -1335,7 +1340,7 @@ findCriteria->SetTObjectValueL( KMPXMediaGeneralId, containerId ); RArray attrs; CleanupClosePushL( attrs ); - attrs.Append( TMPXAttribute( KMPXMediaIdGeneral, + attrs.AppendL( TMPXAttribute( KMPXMediaIdGeneral, EMPXMediaGeneralTitle | EMPXMediaGeneralId ) ); results = iCollectionUtility->Collection().FindAllL( *findCriteria, attrs.Array() );