mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp
changeset 25 3ec52facab4d
parent 22 ecf06a08d4d9
child 29 8192e5b5c935
--- a/mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp	Mon May 03 12:29:20 2010 +0300
+++ b/mpengine/src/mpmpxcollectionframeworkwrapper_p.cpp	Fri May 14 15:49:53 2010 +0300
@@ -711,8 +711,13 @@
     CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() );
     CleanupStack::PushL( path );
 
-    for ( TInt i = 0; i < count; i++ ) {
-        path->SelectL( selection.at( i ) );
+    if (count > 1) {
+        for ( TInt i = 0; i < count; i++ ){
+            path->SelectL( selection.at( i ) );
+        }
+    }
+    else {
+        path->Set( selection.at(0) );
     }
     iCollectionUiHelper->DeleteL( *path, this );
     CleanupStack::PopAndDestroy( path );
@@ -893,23 +898,30 @@
     TMPXItemId collectionId( path->Id( 0 ) );
     CleanupStack::PopAndDestroy( path );
 
-    if ( collectionData->context() == ECollectionContextAlbums ) {
+    if ( ( collectionData->context() == ECollectionContextAlbums ) || 
+            ( collectionData->context() == ECollectionContextArtistAlbums ) || 
+            ( collectionData->context() == ECollectionContextArtists ) ) {
         for ( TInt i = 0; i < count; i++ ) {
             CMPXMedia* results;
-            CMPXMedia* album( containerArray->AtL( selection[i] ) );
+            CMPXMedia* container( containerArray->AtL( selection[i] ) );
             // Fetch the songs for the selected album
-            TMPXItemId albumId = album->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
+            TMPXItemId containerId = container->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId );
             CMPXMedia* findCriteria = CMPXMedia::NewL();
             CleanupStack::PushL( findCriteria );
             findCriteria->SetTObjectValueL<TMPXGeneralType>( KMPXMediaGeneralType, EMPXGroup );
             findCriteria->SetTObjectValueL<TMPXGeneralCategory>( KMPXMediaGeneralCategory, EMPXSong );
-            findCriteria->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, albumId );
+            findCriteria->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, containerId );
             RArray<TMPXAttribute> attrs;
             CleanupClosePushL( attrs );
             attrs.Append( TMPXAttribute( KMPXMediaIdGeneral,
                                          EMPXMediaGeneralTitle |
                                          EMPXMediaGeneralId ) );
-            attrs.Append( KMPXMediaMusicAlbumTrack );
+            if ( collectionData->context() == ECollectionContextArtists ){
+                attrs.Append( KMPXMediaMusicArtist );
+            }
+            else {
+                attrs.Append( KMPXMediaMusicAlbumTrack );
+            }
             results = iCollectionUtility->Collection().FindAllL( *findCriteria, attrs.Array() );
             CleanupStack::PopAndDestroy( &attrs );
             CleanupStack::PopAndDestroy( findCriteria );