diff -r 2a40e88564c8 -r 13afc0e517bd mpxplugins/serviceplugins/collectionplugins/mpxsqlitedbplugin/src/mpxdbplaylist.cpp --- 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(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(KMPXMediaGeneralDuration, duration); + aMedia.SetTObjectValueL(KMPXMediaGeneralDuration, plSongDuration); MPX_DEBUG1(" EMPXMediaGeneralDuration"); - MPX_DEBUG2(" Duration[%d]", duration); + MPX_DEBUG2(" Duration[%d]", plSongDuration); } aMedia.SetTObjectValueL(KMPXMediaGeneralType, EMPXItem);