# HG changeset patch # User hgs # Date 1278712996 18000 # Node ID 09978a29cfde6ec5ae5cd1ad010a719bc6bd0e95 # Parent 4a1905d205a29f25fac1a774b4f823900a1a56a2 201027 diff -r 4a1905d205a2 -r 09978a29cfde mmappcomponents/collectionhelper/inc/mpxcollectionhelperimp.h --- 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 +#include + #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; diff -r 4a1905d205a2 -r 09978a29cfde mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp --- 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 #include #include +#include #include #include #include @@ -45,6 +46,7 @@ // --------------------------------------------------------------------------- // CMPXCollectionHelperImp::CMPXCollectionHelperImp() + : iTNManager(NULL) { } @@ -59,7 +61,7 @@ iCollectionUtil = MMPXCollectionUtility::NewL(); iMediator = CMPXCollectionMediator::NewL( iCollectionUtil->Collection(), this ); - + RArray ary; CleanupClosePushL( ary ); ary.AppendL( TUid::Uid(EMPXCollectionPluginMusic) ); @@ -111,6 +113,8 @@ iCollectionUtil->Close(); } delete iMediator; + + delete iTNManager; } @@ -416,11 +420,28 @@ RArray 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 diff -r 4a1905d205a2 -r 09978a29cfde mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp --- 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()--->"); diff -r 4a1905d205a2 -r 09978a29cfde mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp --- 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( 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( KMPXMediaAudioBitrate, + bitRate ); + + MPX_DEBUG2("CMPXMetadataExtractor::SetMediaPropertiesL- duration = %i", bitRate); + } + break; + } case EMetaDataOriginalArtist: // fall through case EMetaDataVendor: // fall through case EMetaDataRating: // fall through diff -r 4a1905d205a2 -r 09978a29cfde mmappfw_plat/harvester_utility_api/tsrc/Conf/mpxharvestertest.cfg --- 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 diff -r 4a1905d205a2 -r 09978a29cfde mpx/commonframework/group/bld.inf --- 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)