mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp
branchRCL_3
changeset 14 f56ec6ce2732
parent 13 4740b34b83ce
child 18 e257e2b6459d
--- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp	Tue Apr 27 17:09:22 2010 +0300
+++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp	Tue May 11 16:40:32 2010 +0300
@@ -62,6 +62,8 @@
 _LIT( KMpxCollectionGetReference, "MpxCollectionGetReference" );
 _LIT( KMpxCollectionFindAllLValidate, "MpxCollectionValidate" );
 _LIT( KMpxCollectionFindAllLBeforeAdd, "MpxCollectionFindAllLBeforeAdd" );
+_LIT( KMpxCollectionFindAllLModified, "MpxCollectionFindAllLModified" );
+_LIT( KMpxCollectionCleanupDeletedMediasL, "KMpxCollectionCleanupDeletedMediasL" );
 _LIT( KSetMetadataValue, "SetMetadataValueL" );
 #endif
 
@@ -80,7 +82,8 @@
     }
 
 CMmMtpDpMetadataMpxAccess::CMmMtpDpMetadataMpxAccess( RFs& aRfs ):
-    iRfs( aRfs )
+    iRfs( aRfs ),
+    iSampleData( NULL )
     {
     // Do nothing
     }
@@ -111,6 +114,8 @@
         iCollectionHelper = NULL;
         }
 
+    delete iSampleData;
+
     // for performance measurement purpose
 #if defined(_DEBUG) || defined(MMMTPDP_PERFLOG)
     delete iPerfLog;
@@ -393,7 +398,10 @@
         searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong );
         searchMedia->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId,
             KMtpInvalidSongID );
-        searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot );
+        if ( iStoreRoot.Length() > 0 )
+            {
+            searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot );
+            }
 
         RArray<TMPXAttribute> songAttributes;
         CleanupClosePushL( songAttributes ); // + songAttributes
@@ -455,8 +463,10 @@
 
     PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC searchMedia setup with no problems" ) );
 
+    PERFLOGSTART(KMpxCollectionFindAllLModified);
     CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia,
         songAttributes.Array() );
+    PERFLOGSTOP(KMpxCollectionFindAllLModified);
     PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC foundMedia assigned from FindAllL" ) );
 
     CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes
@@ -587,7 +597,9 @@
     // as there is NOT a separate database for deleted files.
     PRINT( _L( "MM MTP <> Deleting metadata for deleted files" ) );
 
+    PERFLOGSTART( KMpxCollectionCleanupDeletedMediasL );
     CollectionHelperL()->CleanupDeletedMediasL();
+    PERFLOGSTOP( KMpxCollectionCleanupDeletedMediasL );
 
     PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::UpdateMusicCollectionL" ) );
     }
@@ -685,6 +697,9 @@
     CollectionHelperL()->SetL( media );
     PERFLOGSTOP( KMpxCollectionSetL );
 
+    delete iSampleData;
+    iSampleData = NULL;
+
     CleanupStack::PopAndDestroy( 2, &contentIDs ); // - media, contentIDs
 
     PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL" ) );
@@ -881,16 +896,19 @@
             const TDesC& suid = aMediaProp.ValueText( KMPXMediaGeneralUri );
             PRINT2( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData numElements = %d, suid = %S" ), numElements, &suid );
 
-            HBufC8* sampleData = HBufC8::NewLC( numElements * sizeof( TUint8 ) );
-            TPtr8 samplePtr = sampleData->Des();
+            delete iSampleData;
+            iSampleData = NULL;
+
+            iSampleData = HBufC8::NewL( numElements * sizeof( TUint8 ) );
+            TPtr8 samplePtr = iSampleData->Des();
             mtpTypeArray.ToDes( samplePtr );
             RFile sampleFile;
             CleanupClosePushL( sampleFile );
             User::LeaveIfError( sampleFile.Replace( iRfs, suid, EFileWrite ) );
             User::LeaveIfError( sampleFile.Write( samplePtr ) );
+            aMediaProp.SetTObjectValueL<TInt>( KMPXMediaMTPSampleData, (TInt)iSampleData );
+            aMediaProp.SetTObjectValueL<TBool>( attrib, ETrue );
             CleanupStack::PopAndDestroy( &sampleFile );
-            CleanupStack::PopAndDestroy( sampleData );
-            aMediaProp.SetTObjectValueL<TBool>( attrib, ETrue );
             PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData is ready = %u" ), 1 );
             }
             break;
@@ -926,7 +944,9 @@
     searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem );
     searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong );
     searchMedia->SetTextValueL( KMPXMediaGeneralUri, aFullFileName );
-    searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot );
+
+    TParsePtrC parse( aFullFileName );
+    searchMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() );
 
     RArray<TMPXAttribute> songAttributes;
     CleanupClosePushL( songAttributes ); // + songAttributes
@@ -1158,7 +1178,7 @@
         TParsePtrC parse( aRefFileArray[j] );
         media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() );
         media->SetTObjectValueL( KMPXMediaGeneralModified, EFalse );
-  
+
         // Add media into array contents
         abstractMediaArray->AppendL( media );
 
@@ -1568,7 +1588,9 @@
     searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem );
     searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXPlaylist );
     searchMedia->SetTextValueL( KMPXMediaGeneralUri, aSuid );
-    searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot );
+
+    TParsePtrC parse( aSuid );
+    searchMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() );
 
     RArray<TMPXAttribute> playlistAttributes;
     CleanupClosePushL( playlistAttributes ); // + playlistAttributes