790 delete iUserPlaylists; |
790 delete iUserPlaylists; |
791 iUserPlaylists = NULL; |
791 iUserPlaylists = NULL; |
792 |
792 |
793 RArray<TMPXAttribute> attrs; |
793 RArray<TMPXAttribute> attrs; |
794 CleanupClosePushL( attrs ); |
794 CleanupClosePushL( attrs ); |
795 attrs.Append( KMPXMediaGeneralId ); |
795 attrs.AppendL( KMPXMediaGeneralId ); |
796 attrs.Append( KMPXMediaGeneralTitle ); |
796 attrs.AppendL( KMPXMediaGeneralTitle ); |
797 |
797 |
798 CMPXMedia* criteria = CMPXMedia::NewL(); |
798 CMPXMedia* criteria = CMPXMedia::NewL(); |
799 CleanupStack::PushL( criteria ); |
799 CleanupStack::PushL( criteria ); |
800 criteria->SetTObjectValueL<TMPXGeneralType>( |
800 criteria->SetTObjectValueL<TMPXGeneralType>( |
801 KMPXMediaGeneralType, EMPXGroup ); |
801 KMPXMediaGeneralType, EMPXGroup ); |
1128 { |
1128 { |
1129 const CMPXMedia& container = iCollectionData->containerMedia(); |
1129 const CMPXMedia& container = iCollectionData->containerMedia(); |
1130 const CMPXMediaArray* mediaArray = container.Value<CMPXMediaArray>( KMPXMediaArrayContents ); |
1130 const CMPXMediaArray* mediaArray = container.Value<CMPXMediaArray>( KMPXMediaArrayContents ); |
1131 CMPXMedia* album( mediaArray->AtL( index ) ); |
1131 CMPXMedia* album( mediaArray->AtL( index ) ); |
1132 |
1132 |
1133 // Fetch the songs for the selected album |
1133 // Obtain the artistId from the container |
|
1134 TMPXItemId artistId = container.ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
|
1135 |
|
1136 // Fetch the songs for the selected album and the artist |
|
1137 // Specifying artistId is necessary to search for songs in the artist’s unknown album. |
1134 TMPXItemId albumId = album->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
1138 TMPXItemId albumId = album->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
1135 CMPXMedia* findCriteria = CMPXMedia::NewL(); |
1139 CMPXMedia* findCriteria = CMPXMedia::NewL(); |
1136 CleanupStack::PushL( findCriteria ); |
1140 CleanupStack::PushL( findCriteria ); |
1137 findCriteria->SetTObjectValueL<TMPXGeneralType>( KMPXMediaGeneralType, EMPXGroup ); |
1141 findCriteria->SetTObjectValueL<TMPXGeneralType>( KMPXMediaGeneralType, EMPXGroup ); |
1138 findCriteria->SetTObjectValueL<TMPXGeneralCategory>( KMPXMediaGeneralCategory, EMPXSong ); |
1142 findCriteria->SetTObjectValueL<TMPXGeneralCategory>( KMPXMediaGeneralCategory, EMPXSong ); |
1139 findCriteria->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, albumId ); |
1143 findCriteria->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, albumId ); |
|
1144 findCriteria->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralContainerId, artistId ); |
1140 RArray<TMPXAttribute> attrs; |
1145 RArray<TMPXAttribute> attrs; |
1141 CleanupClosePushL( attrs ); |
1146 CleanupClosePushL( attrs ); |
1142 attrs.Append( TMPXAttribute( KMPXMediaIdGeneral, |
1147 attrs.AppendL( TMPXAttribute( KMPXMediaIdGeneral, |
1143 EMPXMediaGeneralTitle | |
1148 EMPXMediaGeneralTitle | |
1144 EMPXMediaGeneralUri | |
1149 EMPXMediaGeneralUri | |
1145 EMPXMediaGeneralId | |
1150 EMPXMediaGeneralId | |
1146 EMPXMediaGeneralType | |
1151 EMPXMediaGeneralType | |
1147 EMPXMediaGeneralCategory | |
1152 EMPXMediaGeneralCategory | |
1148 EMPXMediaGeneralFlags ) ); |
1153 EMPXMediaGeneralFlags ) ); |
1149 attrs.Append( KMPXMediaMusicAlbumTrack ); |
1154 attrs.AppendL( KMPXMediaMusicAlbumTrack ); |
1150 |
1155 |
1151 iCollectionUtility->Collection().FindAllL( *findCriteria, attrs.Array(), *this ); |
1156 iCollectionUtility->Collection().FindAllL( *findCriteria, attrs.Array(), *this ); |
1152 CleanupStack::PopAndDestroy( &attrs ); |
1157 CleanupStack::PopAndDestroy( &attrs ); |
1153 CleanupStack::PopAndDestroy( findCriteria ); |
1158 CleanupStack::PopAndDestroy( findCriteria ); |
1154 } |
1159 } |
1333 findCriteria->SetTObjectValueL<TMPXGeneralType>( KMPXMediaGeneralType, EMPXGroup ); |
1338 findCriteria->SetTObjectValueL<TMPXGeneralType>( KMPXMediaGeneralType, EMPXGroup ); |
1334 findCriteria->SetTObjectValueL<TMPXGeneralCategory>( KMPXMediaGeneralCategory, EMPXSong ); |
1339 findCriteria->SetTObjectValueL<TMPXGeneralCategory>( KMPXMediaGeneralCategory, EMPXSong ); |
1335 findCriteria->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, containerId ); |
1340 findCriteria->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, containerId ); |
1336 RArray<TMPXAttribute> attrs; |
1341 RArray<TMPXAttribute> attrs; |
1337 CleanupClosePushL( attrs ); |
1342 CleanupClosePushL( attrs ); |
1338 attrs.Append( TMPXAttribute( KMPXMediaIdGeneral, |
1343 attrs.AppendL( TMPXAttribute( KMPXMediaIdGeneral, |
1339 EMPXMediaGeneralTitle | |
1344 EMPXMediaGeneralTitle | |
1340 EMPXMediaGeneralId ) ); |
1345 EMPXMediaGeneralId ) ); |
1341 results = iCollectionUtility->Collection().FindAllL( *findCriteria, attrs.Array() ); |
1346 results = iCollectionUtility->Collection().FindAllL( *findCriteria, attrs.Array() ); |
1342 CleanupStack::PopAndDestroy( &attrs ); |
1347 CleanupStack::PopAndDestroy( &attrs ); |
1343 CleanupStack::PopAndDestroy( findCriteria ); |
1348 CleanupStack::PopAndDestroy( findCriteria ); |