201027
authorhgs
Fri, 09 Jul 2010 17:03:16 -0500
changeset 45 09978a29cfde
parent 40 4a1905d205a2
child 48 b7b49303d0c0
201027
mmappcomponents/collectionhelper/inc/mpxcollectionhelperimp.h
mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp
mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp
mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp
mmappfw_plat/harvester_utility_api/tsrc/Conf/mpxharvestertest.cfg
mpx/commonframework/group/bld.inf
--- a/mmappcomponents/collectionhelper/inc/mpxcollectionhelperimp.h	Fri Jun 25 17:07:52 2010 -0500
+++ b/mmappcomponents/collectionhelper/inc/mpxcollectionhelperimp.h	Fri Jul 09 17:03:16 2010 -0500
@@ -19,6 +19,9 @@
 #ifndef CMPXCOLLECTIONHELPERIMP_H
 #define CMPXCOLLECTIONHELPERIMP_H
 
+#include <thumbnailmanager.h>
+#include <thumbnailmanagerobserver.h>
+
 #include "mpxcollectionhelper.h"
 #include "mpxharvesterutilityobserver.h"
 #include "mpxmediatorobserver.h"
@@ -41,7 +44,8 @@
 NONSHARABLE_CLASS( CMPXCollectionHelperImp ): public CBase,
                                               public MMPXCollectionHelper,
                                               public MMPXHarvesterUtilityObserver,
-                                              public MMPXMediatorObserver
+                                              public MMPXMediatorObserver,
+                                              public MThumbnailManagerObserver
     {
 public:
 
@@ -695,6 +699,18 @@
     */
     void HandleFileGetMediaCompletedL( CMPXMedia* aMedia, TInt aErr );
 
+public:
+    /**
+    * From MThumbnailManagerObserver
+    */
+    void ThumbnailPreviewReady( MThumbnailData& aThumbnail, 
+                                TThumbnailRequestId aId );
+    /**
+    * From MThumbnailManagerObserver
+    */
+    void ThumbnailReady( TInt aError,
+                         MThumbnailData& aThumbnail, 
+                         TThumbnailRequestId aId );
 private:
 
     /**
@@ -702,6 +718,13 @@
     * @param aMedia media item to add to the collection
     */
     void DoAddToCollectionL( CMPXMedia* aMedia );
+    
+    /**
+    * Rename the thumbnail through thumbnail manager
+    * @param aOldUri exiting uri of the song
+    * @param aNewUri new uri of the song
+    */
+    void RenameThumbnailL( const TDesC& aOldUri, const TDesC& aNewUri );
 
 protected:
 
@@ -720,7 +743,8 @@
     MMPXHarvesterUtility*   iHvsUtility;
     MMPXCollectionUtility*  iCollectionUtil;
     CMPXCollectionMediator* iMediator;
-
+    
+    CThumbnailManager*      iTNManager; // owned
     MMPXCollectionHelperObserver* iObserver;  // not owned
     TUid                          iMusicCollectionId;
     TBool                         iInitialized;
--- a/mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp	Fri Jun 25 17:07:52 2010 -0500
+++ b/mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp	Fri Jul 09 17:03:16 2010 -0500
@@ -25,6 +25,7 @@
 #include <mpxcollectionutility.h>
 #include <mpxharvesterutility.h>
 #include <mpxmediageneraldefs.h>
+#include <mpxmediamusicdefs.h>
 #include <mpxmediacontainerdefs.h>
 #include <mpxuser.h>
 #include <mpxcollectionplugin.hrh>
@@ -45,6 +46,7 @@
 // ---------------------------------------------------------------------------
 //
 CMPXCollectionHelperImp::CMPXCollectionHelperImp()
+    : iTNManager(NULL)
     {
     }
 
@@ -59,7 +61,7 @@
     iCollectionUtil = MMPXCollectionUtility::NewL();
     iMediator = CMPXCollectionMediator::NewL( iCollectionUtil->Collection(),
                                               this );
-
+    
     RArray<TUid> ary;
     CleanupClosePushL( ary );
     ary.AppendL( TUid::Uid(EMPXCollectionPluginMusic) );
@@ -111,6 +113,8 @@
         iCollectionUtil->Close();
         }
     delete iMediator;
+    
+    delete iTNManager;
     }
 
 
@@ -416,11 +420,28 @@
     RArray<TMPXAttribute> attributes;
     CleanupClosePushL( attributes );
     attributes.AppendL(KMPXMediaGeneralId);
+    attributes.AppendL(KMPXMediaMusicAlbumArtFileName);
 
     CMPXMedia* media = GetL(aOldUri, attributes.Array(), aItemCat);
     CleanupStack::PopAndDestroy(&attributes);
     CleanupStack::PushL(media);
 
+    const TDesC& fileName(media->ValueText(KMPXMediaMusicAlbumArtFileName));
+    
+    // the songs have embedded albumart.
+    if(fileName.CompareF(aOldUri) == 0)
+        {
+        // change the Art filename to the new Uri
+        media->SetTextValueL(KMPXMediaMusicAlbumArtFileName, aNewUri);
+        
+        // Rename the thumbnail
+        TRAPD(err, RenameThumbnailL(aOldUri, aNewUri));
+        if(KErrNone != err)
+            {
+            MPX_DEBUG2("Thumbnail renames failed. Err: %d", err);
+            }
+        }
+
     // change file path to the new file path
     media->SetTextValueL(KMPXMediaGeneralUri, aNewUri);
 
@@ -735,4 +756,41 @@
     delete this;
     }
 
+// ---------------------------------------------------------------------------
+// Rename the thumbnail through TNM
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionHelperImp::RenameThumbnailL( const TDesC& aOldUri, 
+                                         const TDesC& aNewUri )
+    {
+    MPX_FUNC("CMPXCollectionHelperImp::RenameThumbnailL");
+    
+    // Create Thumbnail Manager instance when use first time.
+    if(NULL == iTNManager)
+        {      
+        iTNManager = CThumbnailManager::NewL( *this ); 
+        }
+    
+    // Rename thumbnail
+    iTNManager->RenameThumbnailsL(aOldUri, aNewUri, 0);
+    }
+
+// ---------------------------------------------------------------------------
+// CMPXDbAbstractAlbum::ThumbnailReady
+// Callback but not used here
+// ---------------------------------------------------------------------------
+void CMPXCollectionHelperImp::ThumbnailPreviewReady(
+        MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ )
+    {
+    }
+
+
+// ---------------------------------------------------------------------------
+// CMPXDbAbstractAlbum::ThumbnailReady
+// Callback but not used here
+// ---------------------------------------------------------------------------
+void CMPXCollectionHelperImp::ThumbnailReady( TInt /*aError*/,
+        MThumbnailData& /*aThumbnail*/, TThumbnailRequestId /*aId*/ )
+    {
+    }
 // End of file
--- a/mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp	Fri Jun 25 17:07:52 2010 -0500
+++ b/mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp	Fri Jul 09 17:03:16 2010 -0500
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  This class is responsible for reading file info
-*  Version     : %version: da1mmcf#5.1.3.1.6.2.1 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: da1mmcf#5.1.3.1.6.2.2 % << Don't touch! Updated by Synergy at check-out.
 *
 *  Copyright © 2005 Nokia. All rights reserved.
 */
@@ -163,9 +163,6 @@
                                                  buf->Ptr(0),
                                                  dataSource));
     
-    MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()- AddDataSink()");
-    User::LeaveIfError(iController->AddDataSink(KUidMmfAudioOutput,
-                                               KNullDesC8));
     CleanupStack::PopAndDestroy(buf);
     
     MPX_DEBUG1("CMPXFileInfoUtility::OpenFileL()--->");
--- a/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp	Fri Jun 25 17:07:52 2010 -0500
+++ b/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp	Fri Jul 09 17:03:16 2010 -0500
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Extracts metadata from a file
-*  Version     : %version: da1mmcf#38.1.4.2.6.1.5.3.4 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: da1mmcf#38.1.4.2.6.1.5.3.5 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -432,6 +432,50 @@
                     }
                 break;
                 }
+            case EMetaDataSampleRate:     
+                {                  
+                const TDesC& mimeType = iMedia->ValueText( KMPXMediaGeneralMimeType );
+                MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL, mimeType = %S", &mimeType);   
+                
+                // Verify if WMA, get the sample rate
+                if( mimeType.Compare(KWmaMimeType) == 0 || mimeType.Compare(KWmaCafMimeType) == 0 )
+                    {
+                    MPX_DEBUG1("CMPXMetadataExtractor::SetMediaPropertiesL- WMA");                         
+
+                    // Perform the sample rate conversion
+                    TLex lexer( *value );
+                    TInt32 sampleRate ( 0 );
+                    lexer.Val( sampleRate );         
+                    
+                    iMedia->SetTObjectValueL<TUint>( KMPXMediaAudioSamplerate,
+                                                      sampleRate );
+                           
+                    MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL- sample rate = %i", sampleRate);  
+                    }
+                break;
+                }
+            case EMetaDataBitRate:     
+                {                  
+                const TDesC& mimeType = iMedia->ValueText( KMPXMediaGeneralMimeType );
+                MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL, mimeType = %S", &mimeType);   
+                
+                // Verify if WMA, get the duration
+                if( mimeType.Compare(KWmaMimeType) == 0 || mimeType.Compare(KWmaCafMimeType) == 0 )
+                    {
+                    MPX_DEBUG1("CMPXMetadataExtractor::SetMediaPropertiesL- WMA");                         
+
+                    // Perform the duration conversion
+                    TLex lexer( *value );
+                    TInt32 bitRate ( 0 );
+                    lexer.Val( bitRate );   
+                
+                    iMedia->SetTObjectValueL<TUint>( KMPXMediaAudioBitrate,
+                                                     bitRate );
+                
+                    MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL- duration = %i", bitRate);  
+                    }
+                break;
+                }
             case EMetaDataOriginalArtist:  // fall through
             case EMetaDataVendor:          // fall through
             case EMetaDataRating:          // fall through
--- a/mmappfw_plat/harvester_utility_api/tsrc/Conf/mpxharvestertest.cfg	Fri Jun 25 17:07:52 2010 -0500
+++ b/mmappfw_plat/harvester_utility_api/tsrc/Conf/mpxharvestertest.cfg	Fri Jul 09 17:03:16 2010 -0500
@@ -142,8 +142,8 @@
 [Test]
 title Delete files synchronously
 create mpxharvestertest utility
+utility CopyTestFile mpxtest1.mp3 mpxtest2.mp3
 pause 2000
-utility CopyTestFile mpxtest1.mp3 mpxtest2.mp3
 utility CreateUtility
 utility AddFileByPath mpxtest1.mp3
 waittestclass utility
--- a/mpx/commonframework/group/bld.inf	Fri Jun 25 17:07:52 2010 -0500
+++ b/mpx/commonframework/group/bld.inf	Fri Jul 09 17:03:16 2010 -0500
@@ -23,9 +23,9 @@
 PRJ_EXPORTS
 
 // Secure backup & restore
-backup_registration.xml /epoc32/release/winscw/urel/z/private/101ffc02/backup_registration.xml
-backup_registration.xml /epoc32/release/winscw/udeb/z/private/101ffc02/backup_registration.xml
-backup_registration.xml /epoc32/data/z/private/101ffc02/backup_registration.xml
+backup_registration.xml z:/private/101ffc02/backup_registration.xml
+
+
 
 ../rom/mpxcommonframework.iby   CORE_MW_LAYER_IBY_EXPORT_PATH(mpxcommonframework.iby)