mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbplaylist.cpp
branchRCL_3
changeset 9 13afc0e517bd
parent 0 ff3acec5bc43
--- a/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbplaylist.cpp	Tue Feb 02 00:09:33 2010 +0200
+++ b/mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbplaylist.cpp	Fri Feb 19 22:48:30 2010 +0200
@@ -563,12 +563,18 @@
         {
         // Setup basic info - with first record of a group
         TUint32 playlistId(recordset.ColumnInt64(EPlaylistUniqueId));
+        TUint32 volId(recordset.ColumnInt64(EPlaylistVolumeId));
+        TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
 
         TBool valid(ETrue);
         TInt songCount(-1);
         if (criteriaCounterSet)
             {
-            songCount = iPlaylistSongs->CountL(playlistId);
+            if (driveId >= 0)
+                {
+                //valid disk
+                songCount = iPlaylistSongs->CountL(playlistId, driveId);
+                }
             valid = (criteriaCounter == songCount);
             }
 
@@ -703,6 +709,8 @@
     TUint32 playlistId(aRecord.ColumnInt64(EPlaylistUniqueId));
 
     TInt count(aAttrs.Count());
+    TUint32 volId(aRecord.ColumnInt64(EPlaylistVolumeId));
+    TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
     for (TInt i = 0; i < count; ++i)
         {
         TInt contentId(aAttrs[i].ContentId());
@@ -730,8 +738,6 @@
                 (attributeId & EMPXMediaGeneralDrive) ||
                 (attributeId & EMPXMediaGeneralFlags))
                 {
-                TUint32 volId(aRecord.ColumnInt64(EPlaylistVolumeId));
-                TInt driveId = MPXDbCommonUtil::GetDriveIdMatchVolIdL(iDbManager.Fs(), volId);
 
                 // LTAN-7GH6BZ, crash if eject memory card when adding song to existing playlist
                 // due to special timing issue, it is possible drive number is -1 and create a
@@ -798,22 +804,27 @@
             } // end if contentId == KMPXMediaIdGeneral
         } // end for
 
+    TInt plSongCount(0);
+    TInt plSongDuration(0);
     if (countRequested)
         {
-		TInt count = iPlaylistSongs->CountL(playlistId);
+        if (driveId >= 0)
+            {
+            //valid disk
+            iObserver.HandlePlaylistInfoL(playlistId, plSongCount, plSongDuration);
+            }
         aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralCount,
-            count );
+        		plSongCount );
         
         MPX_DEBUG1("    EMPXMediaGeneralCount");
-		MPX_DEBUG2("	Count[%d]", count);				
+		MPX_DEBUG2("	Count[%d]", plSongCount);				
         }
 	if (durationRequested)
 		{
-		TInt duration = iObserver.HandlePlaylistDurationL(playlistId);		
-		aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralDuration, duration);
+        aMedia.SetTObjectValueL<TInt>(KMPXMediaGeneralDuration, plSongDuration);
 		
 		MPX_DEBUG1("    EMPXMediaGeneralDuration");
-		MPX_DEBUG2("	Duration[%d]", duration);				
+        MPX_DEBUG2("	Duration[%d]", plSongDuration);				
 		}
 
     aMedia.SetTObjectValueL<TMPXGeneralType>(KMPXMediaGeneralType, EMPXItem);