# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1282202668 -10800 # Node ID e42293e811d87ec3a8d334f0ef354de31345d2aa # Parent b034b1c214c2b76d34677dde5d7cd9700420a5e2 Revision: 201031 Kit: 201033 diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/collectionhelper/inc/mpxcollectionhelperimp.h --- a/mmappcomponents/collectionhelper/inc/mpxcollectionhelperimp.h Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/collectionhelper/inc/mpxcollectionhelperimp.h Thu Aug 19 10:24:28 2010 +0300 @@ -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 b034b1c214c2 -r e42293e811d8 mmappcomponents/collectionhelper/src/mpxcollectioncachedhelper.cpp --- a/mmappcomponents/collectionhelper/src/mpxcollectioncachedhelper.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/collectionhelper/src/mpxcollectioncachedhelper.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Extended collection helper with an internal caching array -* Version : %version: da1mmcf#27.1.12.1.2 % +* Version : %version: e003sa33#27.1.12.1.3 % * */ @@ -395,6 +395,11 @@ // Not found in the array if( !media ) { + // If the catched count is more than KCacheCount, commit it to database. + if( count >= KCacheCount ) + { + Commit(); + } CMPXMedia* copy = CMPXMedia::NewL( *aMedia ); CleanupStack::PushL( copy ); iCache->AppendL( copy ); // ownership x-fer diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp --- a/mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/collectionhelper/src/mpxcollectionhelperimp.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -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 b034b1c214c2 -r e42293e811d8 mmappcomponents/harvester/filehandler/inc/mpxdbcommon.h --- a/mmappcomponents/harvester/filehandler/inc/mpxdbcommon.h Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/harvester/filehandler/inc/mpxdbcommon.h Thu Aug 19 10:24:28 2010 +0300 @@ -24,11 +24,11 @@ // Please update the increment number for each increment // Please update the version number for each schema change #ifdef ABSTRACTAUDIOALBUM_INCLUDED -_LIT( KHarvesterDBName, "harvesterdbv10_0.dat" ); -_LIT( KHarvesterDBNameEMMC, "harvesterdbv10_0i.dat" ); +_LIT( KHarvesterDBName, "harvesterdbv10_1.dat" ); +_LIT( KHarvesterDBNameEMMC, "harvesterdbv10_1i.dat" ); #else -_LIT( KHarvesterDBName, "harvesterdbv10_0n.dat" ); -_LIT( KHarvesterDBNameEMMC, "harvesterdbv10_0in.dat" ); +_LIT( KHarvesterDBName, "harvesterdbv10_1n.dat" ); +_LIT( KHarvesterDBNameEMMC, "harvesterdbv10_1in.dat" ); #endif _LIT( KHarvesterDBPattern, "harvesterdbv*.dat" ); diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp --- a/mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/src/mpxfileinfoutility.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: This class is responsible for reading file info -* Version : %version: da1mmcf#5.1.3.1.8 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: e003sa33#5.1.3.1.10 % << Don't touch! Updated by Synergy at check-out. * * Copyright © 2005 Nokia. All rights reserved. */ @@ -81,8 +81,8 @@ iMMFControllers.ResetAndDestroy(); iMMFControllers.Close(); - // delete non cached controller - if(iController) + //delete non cached Helix controller + if( iController && ( iCurrentControllerUid == 0x10207B65 ) ) { iController->Close(); delete iController; @@ -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 b034b1c214c2 -r e42293e811d8 mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp --- a/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -12,7 +12,7 @@ * Contributors: * * Description: Extracts metadata from a file -* Version : %version: da1mmcf#38.1.4.2.6.1.14 % << Don't touch! Updated by Synergy at check-out. +* Version : %version: da1mmcf#38.1.4.2.6.1.15 % << 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 b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovidercopyobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovidercopyobject.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdpplugins/mediamtpdataprovider/src/cmediamtpdataprovidercopyobject.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -222,10 +222,6 @@ { iPropertyElement = NULL; } - else - { - User::LeaveIfError( err ); - } PRINT( _L( "MM MTP <= CMediaMtpDataProviderCopyObject::ServiceSpecificObjectPropertyL" ) ); } diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/bwins/mmmtpdprequestprocessoru.def Thu Aug 19 10:24:28 2010 +0300 @@ -8,143 +8,144 @@ ?UpdateMusicCollectionL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 7 NONAME ; void CMmMtpDpMetadataAccessWrapper::UpdateMusicCollectionL(class TDesC16 const &) ?Release@CRequestProcessor@@MAEXXZ @ 8 NONAME ; void CRequestProcessor::Release(void) ?HandleRequestL@CRequestProcessor@@MAEHABVTMTPTypeRequest@@W4TMTPTransactionPhase@@@Z @ 9 NONAME ; int CRequestProcessor::HandleRequestL(class TMTPTypeRequest const &, enum TMTPTransactionPhase) - ??1CGetInterdependentPropDesc@@UAE@XZ @ 10 NONAME ; CGetInterdependentPropDesc::~CGetInterdependentPropDesc(void) - ?OpenSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 11 NONAME ; void CMmMtpDpAccessSingleton::OpenSessionL(void) - ?ServiceL@CGetPartialObject@@MAEXXZ @ 12 NONAME ; void CGetPartialObject::ServiceL(void) - ?DoHandleResponsePhaseL@CRequestProcessor@@MAEHXZ @ 13 NONAME ; int CRequestProcessor::DoHandleResponsePhaseL(void) - ?NewL@CGetObjectPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 14 NONAME ; class MMmRequestProcessor * CGetObjectPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??0CGetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 15 NONAME ; CGetObjectPropValue::CGetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?CheckRequestL@CSetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 16 NONAME ; enum TMTPResponseCode CSetObjectPropList::CheckRequestL(void) - ?RunL@CRequestProcessor@@MAEXXZ @ 17 NONAME ; void CRequestProcessor::RunL(void) - ?ServiceL@CDeleteObject@@MAEXXZ @ 18 NONAME ; void CDeleteObject::ServiceL(void) - ?DoCancel@CSetObjectPropList@@MAEXXZ @ 19 NONAME ; void CSetObjectPropList::DoCancel(void) - ?CleanupDatabaseL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 20 NONAME ; void CMmMtpDpMetadataAccessWrapper::CleanupDatabaseL(void) - ?ServiceL@CGetObjectPropsSupported@@MAEXXZ @ 21 NONAME ; void CGetObjectPropsSupported::ServiceL(void) - ?NewL@CSetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 22 NONAME ; class MMmRequestProcessor * CSetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?Release@CMmMtpDpAccessSingleton@@SAXXZ @ 23 NONAME ; void CMmMtpDpAccessSingleton::Release(void) - ?UsbDisconnect@CSendObject@@MAEXXZ @ 24 NONAME ; void CSendObject::UsbDisconnect(void) - ?ServiceL@CGetFormatCapabilities@@MAEXXZ @ 25 NONAME ; void CGetFormatCapabilities::ServiceL(void) - ??1CSetObjectPropList@@UAE@XZ @ 26 NONAME ; CSetObjectPropList::~CSetObjectPropList(void) - ?ServiceL@CSetObjectPropList@@MAEXXZ @ 27 NONAME ; void CSetObjectPropList::ServiceL(void) - ??0CMoveObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 28 NONAME ; CMoveObject::CMoveObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ConstructL@CGetObjectPropList@@IAEXXZ @ 29 NONAME ; void CGetObjectPropList::ConstructL(void) - ??1CSendObject@@UAE@XZ @ 30 NONAME ; CSendObject::~CSendObject(void) - ?ServiceMetaDataFromWrapperL@CGetObjectPropValue@@IAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 31 NONAME ; void CGetObjectPropValue::ServiceMetaDataFromWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?NewL@CGetObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 32 NONAME ; class MMmRequestProcessor * CGetObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectPropValue@@UAE@XZ @ 33 NONAME ; CGetObjectPropValue::~CGetObjectPropValue(void) - ?ActiveToIdleStatusChange@CMmMtpDpAccessSingleton@@SAXXZ @ 34 NONAME ; void CMmMtpDpAccessSingleton::ActiveToIdleStatusChange(void) - ?CreateL@CMmMtpDpAccessSingleton@@SAXAAVMMTPDataProviderFramework@@@Z @ 35 NONAME ; void CMmMtpDpAccessSingleton::CreateL(class MMTPDataProviderFramework &) - ??1CGetFormatCapabilities@@UAE@XZ @ 36 NONAME ; CGetFormatCapabilities::~CGetFormatCapabilities(void) - ?ServiceL@CSetObjectReferences@@EAEXXZ @ 37 NONAME ; void CSetObjectReferences::ServiceL(void) - ?DoHandleDataIToRPhaseL@CRequestProcessor@@MAEHXZ @ 38 NONAME ; int CRequestProcessor::DoHandleDataIToRPhaseL(void) - ??0CGetObjectPropList@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 39 NONAME ; CGetObjectPropList::CGetObjectPropList(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ConstructL@CCopyObject@@IAEXXZ @ 40 NONAME ; void CCopyObject::ConstructL(void) - ?SetMetaDataToWrapper@CPropertySettingUtility@@QAE?AW4TMTPResponseCode@@AAVMMmMtpDpConfig@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 41 NONAME ; enum TMTPResponseCode CPropertySettingUtility::SetMetaDataToWrapper(class MMmMtpDpConfig &, unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?ServiceL@CGetObjectPropValue@@MAEXXZ @ 42 NONAME ; void CGetObjectPropValue::ServiceL(void) - ??1CRenameObject@@UAE@XZ @ 43 NONAME ; CRenameObject::~CRenameObject(void) - ?Match@CRequestProcessor@@MBEHABVTMTPTypeEvent@@AAVMMTPConnection@@@Z @ 44 NONAME ; int CRequestProcessor::Match(class TMTPTypeEvent const &, class MMTPConnection &) const - ?DoHandleCompletingPhaseL@CSendObject@@MAEHXZ @ 45 NONAME ; int CSendObject::DoHandleCompletingPhaseL(void) - ?GetDrmStatus@MmMtpDpUtility@@SAHABVTDesC16@@@Z @ 46 NONAME ; int MmMtpDpUtility::GetDrmStatus(class TDesC16 const &) - ?RunL@CRenameObject@@MAEXXZ @ 47 NONAME ; void CRenameObject::RunL(void) - ?SetPSStatus@MmMtpDpUtility@@SAXW4TMtpPSStatus@@@Z @ 48 NONAME ; void MmMtpDpUtility::SetPSStatus(enum TMtpPSStatus) - ??0CRequestProcessor@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@HPBUTMTPRequestElementInfo@@@Z @ 49 NONAME ; CRequestProcessor::CRequestProcessor(class MMTPDataProviderFramework &, class MMTPConnection &, int, struct TMTPRequestElementInfo const *) - ?ServiceL@CSendObject@@MAEXXZ @ 50 NONAME ; void CSendObject::ServiceL(void) - ?Request@CRequestProcessor@@MBEABVTMTPTypeRequest@@XZ @ 51 NONAME ; class TMTPTypeRequest const & CRequestProcessor::Request(void) const - ?CheckRequestL@CGetPartialObject@@MAE?AW4TMTPResponseCode@@XZ @ 52 NONAME ; enum TMTPResponseCode CGetPartialObject::CheckRequestL(void) - ?DoCancel@CRequestProcessor@@MAEXXZ @ 53 NONAME ; void CRequestProcessor::DoCancel(void) - ?NewL@CRequestUnknown@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 54 NONAME ; class MMmRequestProcessor * CRequestUnknown::NewL(class MMTPDataProviderFramework &, class MMTPConnection &) - ?ConstructL@CGetObjectInfo@@AAEXXZ @ 55 NONAME ; void CGetObjectInfo::ConstructL(void) - ?UsbDisconnect@CRequestProcessor@@MAEXXZ @ 56 NONAME ; void CRequestProcessor::UsbDisconnect(void) - ??1CMoveObject@@UAE@XZ @ 57 NONAME ; CMoveObject::~CMoveObject(void) - ?CheckRequestL@CSendObject@@MAE?AW4TMTPResponseCode@@XZ @ 58 NONAME ; enum TMTPResponseCode CSendObject::CheckRequestL(void) - ??1CRequestProcessor@@MAE@XZ @ 59 NONAME ; CRequestProcessor::~CRequestProcessor(void) - ?DoCancel@CDeleteObject@@MAEXXZ @ 60 NONAME ; void CDeleteObject::DoCancel(void) - ??1CGetObject@@UAE@XZ @ 61 NONAME ; CGetObject::~CGetObject(void) - ?NewL@CGetInterdependentPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 62 NONAME ; class MMmRequestProcessor * CGetInterdependentPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?AddObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@@Z @ 63 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddObjectL(class CMTPObjectMetaData const &) - ?DoHandleResponsePhaseL@CSetObjectReferences@@EAEHXZ @ 64 NONAME ; int CSetObjectReferences::DoHandleResponsePhaseL(void) - ?GetAccessWrapperL@CMmMtpDpAccessSingleton@@SAAAVCMmMtpDpMetadataAccessWrapper@@XZ @ 65 NONAME ; class CMmMtpDpMetadataAccessWrapper & CMmMtpDpAccessSingleton::GetAccessWrapperL(void) - ??1CGetObjectPropsSupported@@UAE@XZ @ 66 NONAME ; CGetObjectPropsSupported::~CGetObjectPropsSupported(void) - ?CheckRequestL@CGetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 67 NONAME ; enum TMTPResponseCode CGetObjectPropList::CheckRequestL(void) - ?HasDataphase@CRequestProcessor@@MBEHXZ @ 68 NONAME ; int CRequestProcessor::HasDataphase(void) const - ?NewL@CGetObjectPropsSupported@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 69 NONAME ; class MMmRequestProcessor * CGetObjectPropsSupported::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?Connection@CRequestProcessor@@MBEAAVMMTPConnection@@XZ @ 70 NONAME ; class MMTPConnection & CRequestProcessor::Connection(void) const - ??1CPropertySettingUtility@@UAE@XZ @ 71 NONAME ; CPropertySettingUtility::~CPropertySettingUtility(void) - ??1CGetPartialObject@@UAE@XZ @ 72 NONAME ; CGetPartialObject::~CGetPartialObject(void) - ?NewL@CGetObjectInfo@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 73 NONAME ; class MMmRequestProcessor * CGetObjectInfo::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?RunError@CSetObjectPropList@@MAEHH@Z @ 74 NONAME ; int CSetObjectPropList::RunError(int) - ?CheckRequestL@CGetInterdependentPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 75 NONAME ; enum TMTPResponseCode CGetInterdependentPropDesc::CheckRequestL(void) - ?Match@CRequestUnknown@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 76 NONAME ; int CRequestUnknown::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ?ServiceL@CMoveObject@@MAEXXZ @ 77 NONAME ; void CMoveObject::ServiceL(void) - ?CreateDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 78 NONAME ; void CMmMtpDpMetadataAccessWrapper::CreateDummyFile(class TDesC16 const &) - ?CheckRequestL@CGetObjectPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 79 NONAME ; enum TMTPResponseCode CGetObjectPropDesc::CheckRequestL(void) - ?DoHandleRToIPhaseL@CRequestProcessor@@MAEHXZ @ 80 NONAME ; int CRequestProcessor::DoHandleRToIPhaseL(void) - ?ServiceMetaDataToWrapperL@CSetObjectPropValue@@IAE?AW4TMTPResponseCode@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 81 NONAME ; enum TMTPResponseCode CSetObjectPropValue::ServiceMetaDataToWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?FormatFromFilename@MmMtpDpUtility@@SA?AW4TMTPFormatCode@@ABVTDesC16@@@Z @ 82 NONAME ; enum TMTPFormatCode MmMtpDpUtility::FormatFromFilename(class TDesC16 const &) - ?GetAllReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@AAVCDesC16Array@@@Z @ 83 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllReferenceL(class CMTPObjectMetaData const &, class CDesC16Array &) - ?CheckRequestL@CSetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 84 NONAME ; enum TMTPResponseCode CSetObjectPropValue::CheckRequestL(void) - ??0CPropertySettingUtility@@IAE@XZ @ 85 NONAME ; CPropertySettingUtility::CPropertySettingUtility(void) - ?Match@CRequestProcessor@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 86 NONAME ; int CRequestProcessor::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ??0CCopyObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 87 NONAME ; CCopyObject::CCopyObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?CheckRequestL@CRequestProcessor@@MAE?AW4TMTPResponseCode@@XZ @ 88 NONAME ; enum TMTPResponseCode CRequestProcessor::CheckRequestL(void) - ?SendResponseL@CRequestProcessor@@IAEXW4TMTPResponseCode@@HPAK@Z @ 89 NONAME ; void CRequestProcessor::SendResponseL(enum TMTPResponseCode, int, unsigned long *) - ?CancelActiveToIdleStatusChange@CMmMtpDpAccessSingleton@@SAXXZ @ 90 NONAME ; void CMmMtpDpAccessSingleton::CancelActiveToIdleStatusChange(void) - ?DoHandleCompletingPhaseL@CRequestProcessor@@MAEHXZ @ 91 NONAME ; int CRequestProcessor::DoHandleCompletingPhaseL(void) - ?DeleteDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 92 NONAME ; void CMmMtpDpMetadataAccessWrapper::DeleteDummyFile(class TDesC16 const &) - ??1CGetObjectInfo@@UAE@XZ @ 93 NONAME ; CGetObjectInfo::~CGetObjectInfo(void) - ?ServiceL@CRequestUnknown@@MAEXXZ @ 94 NONAME ; void CRequestUnknown::ServiceL(void) - ?HasDataphase@CSetObjectPropList@@MBEHXZ @ 95 NONAME ; int CSetObjectPropList::HasDataphase(void) const - ?NewL@CGetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 96 NONAME ; class MMmRequestProcessor * CGetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?DoCancel@CRenameObject@@MAEXXZ @ 97 NONAME ; void CRenameObject::DoCancel(void) - ??1CSetObjectReferences@@UAE@XZ @ 98 NONAME ; CSetObjectReferences::~CSetObjectReferences(void) - ?Match@CSendObject@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 99 NONAME ; int CSendObject::Match(class TMTPTypeRequest const &, class MMTPConnection &) const - ?NewL@CSetObjectPropList@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 100 NONAME ; class MMmRequestProcessor * CSetObjectPropList::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CCopyObject@@UAE@XZ @ 101 NONAME ; CCopyObject::~CCopyObject(void) - ?GetModifiedContentL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@AAHAAVCDesC16Array@@@Z @ 102 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetModifiedContentL(class TDesC16 const &, int &, class CDesC16Array &) - ?RunL@CGetObjectPropList@@MAEXXZ @ 103 NONAME ; void CGetObjectPropList::RunL(void) - ?NewRangeFormDescriptionL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@GKKKH@Z @ 104 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewRangeFormDescriptionL(unsigned short, unsigned long, unsigned long, unsigned long, int) - ?RunError@CRequestProcessor@@MAEHH@Z @ 105 NONAME ; int CRequestProcessor::RunError(int) - ?SessionId@CRequestProcessor@@MAEKXZ @ 106 NONAME ; unsigned long CRequestProcessor::SessionId(void) - ??0CDescriptionUtility@@IAE@XZ @ 107 NONAME ; CDescriptionUtility::CDescriptionUtility(void) - ?HandleEventL@CRequestProcessor@@MAEXABVTMTPTypeEvent@@@Z @ 108 NONAME ; void CRequestProcessor::HandleEventL(class TMTPTypeEvent const &) - ?NewL@CGetPartialObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 109 NONAME ; class MMmRequestProcessor * CGetPartialObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?HasDataphase@CSetObjectReferences@@EBEHXZ @ 110 NONAME ; int CSetObjectReferences::HasDataphase(void) const - ?RunError@CGetObjectPropList@@MAEHH@Z @ 111 NONAME ; int CGetObjectPropList::RunError(int) - ?DoHandleResponsePhaseL@CSetObjectPropList@@MAEHXZ @ 112 NONAME ; int CSetObjectPropList::DoHandleResponsePhaseL(void) - ?NewL@CRenameObject@@SAPAV1@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 113 NONAME ; class CRenameObject * CRenameObject::NewL(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) - ?RenameObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@ABVTDesC16@@@Z @ 114 NONAME ; void CMmMtpDpMetadataAccessWrapper::RenameObjectL(class CMTPObjectMetaData const &, class TDesC16 const &) - ?GetObjectMetadataValueL@CMmMtpDpMetadataAccessWrapper@@QAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 115 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetObjectMetadataValueL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) - ?GetAllAbstractMediaL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@AAVCDesC16Array@@W4TMPXGeneralCategory@@@Z @ 116 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllAbstractMediaL(class TDesC16 const &, class CDesC16Array &, enum TMPXGeneralCategory) - ?AddDummyFileL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 117 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddDummyFileL(class TDesC16 const &) - ??1CGetObjectPropDesc@@UAE@XZ @ 118 NONAME ; CGetObjectPropDesc::~CGetObjectPropDesc(void) - ?ServiceL@CGetObjectPropDesc@@MAEXXZ @ 119 NONAME ; void CGetObjectPropDesc::ServiceL(void) - ?HasDataphase@CSetObjectPropValue@@MBEHXZ @ 120 NONAME ; int CSetObjectPropValue::HasDataphase(void) const - ?ServiceL@CCopyObject@@MAEXXZ @ 121 NONAME ; void CCopyObject::ServiceL(void) - ?CheckRequestL@CGetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 122 NONAME ; enum TMTPResponseCode CGetObjectPropValue::CheckRequestL(void) - ?CloseSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 123 NONAME ; void CMmMtpDpAccessSingleton::CloseSessionL(void) - ?NewL@CGetFormatCapabilities@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 124 NONAME ; class MMmRequestProcessor * CGetFormatCapabilities::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?ReceiveDataL@CRequestProcessor@@IAEXAAVMMTPType@@@Z @ 125 NONAME ; void CRequestProcessor::ReceiveDataL(class MMTPType &) - ??1CDescriptionUtility@@UAE@XZ @ 126 NONAME ; CDescriptionUtility::~CDescriptionUtility(void) - ?ConstructL@CMoveObject@@IAEXXZ @ 127 NONAME ; void CMoveObject::ConstructL(void) - ?NewL@CSendObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 128 NONAME ; class MMmRequestProcessor * CSendObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ?RunL@CSetObjectPropList@@MAEXXZ @ 129 NONAME ; void CSetObjectPropList::RunL(void) - ??1CGetObjectReferences@@UAE@XZ @ 130 NONAME ; CGetObjectReferences::~CGetObjectReferences(void) - ?HasDataphase@CSendObject@@MBEHXZ @ 131 NONAME ; int CSendObject::HasDataphase(void) const - ??1CSetObjectPropValue@@UAE@XZ @ 132 NONAME ; CSetObjectPropValue::~CSetObjectPropValue(void) - ?ConstructL@CRenameObject@@IAEXXZ @ 133 NONAME ; void CRenameObject::ConstructL(void) - ?DoHandleResponsePhaseL@CSendObject@@MAEHXZ @ 134 NONAME ; int CSendObject::DoHandleResponsePhaseL(void) - ?SendDataL@CRequestProcessor@@IAEXABVMMTPType@@@Z @ 135 NONAME ; void CRequestProcessor::SendDataL(class MMTPType const &) - ?SetReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@AAVCDesC16Array@@@Z @ 136 NONAME ; void CMmMtpDpMetadataAccessWrapper::SetReferenceL(class CMTPObjectMetaData const &, class CDesC16Array &) - ?DoCancel@CGetObjectPropList@@MAEXXZ @ 137 NONAME ; void CGetObjectPropList::DoCancel(void) - ?ServiceL@CGetInterdependentPropDesc@@MAEXXZ @ 138 NONAME ; void CGetInterdependentPropDesc::ServiceL(void) - ?DoHandleRequestPhaseL@CRequestProcessor@@MAEHXZ @ 139 NONAME ; int CRequestProcessor::DoHandleRequestPhaseL(void) - ?ServiceL@CSetObjectPropValue@@MAEXXZ @ 140 NONAME ; void CSetObjectPropValue::ServiceL(void) - ?RunError@CRenameObject@@MAEHH@Z @ 141 NONAME ; int CRenameObject::RunError(int) - ??1CDeleteObject@@UAE@XZ @ 142 NONAME ; CDeleteObject::~CDeleteObject(void) - ?DoHandleResponsePhaseL@CGetPartialObject@@MAEHXZ @ 143 NONAME ; int CGetPartialObject::DoHandleResponsePhaseL(void) - ??0CSetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 144 NONAME ; CSetObjectPropValue::CSetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) - ??1CGetObjectPropList@@UAE@XZ @ 145 NONAME ; CGetObjectPropList::~CGetObjectPropList(void) - ?CheckRequestL@CGetFormatCapabilities@@MAE?AW4TMTPResponseCode@@XZ @ 146 NONAME ; enum TMTPResponseCode CGetFormatCapabilities::CheckRequestL(void) - ??0CRenameObject@@IAE@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 147 NONAME ; CRenameObject::CRenameObject(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) + ?DoHandleCompletingPhaseL@CDeleteObject@@MAEHXZ @ 10 NONAME ; int CDeleteObject::DoHandleCompletingPhaseL(void) + ??1CGetInterdependentPropDesc@@UAE@XZ @ 11 NONAME ; CGetInterdependentPropDesc::~CGetInterdependentPropDesc(void) + ?OpenSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 12 NONAME ; void CMmMtpDpAccessSingleton::OpenSessionL(void) + ?ServiceL@CGetPartialObject@@MAEXXZ @ 13 NONAME ; void CGetPartialObject::ServiceL(void) + ?DoHandleResponsePhaseL@CRequestProcessor@@MAEHXZ @ 14 NONAME ; int CRequestProcessor::DoHandleResponsePhaseL(void) + ?NewL@CGetObjectPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 15 NONAME ; class MMmRequestProcessor * CGetObjectPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??0CGetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 16 NONAME ; CGetObjectPropValue::CGetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?CheckRequestL@CSetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 17 NONAME ; enum TMTPResponseCode CSetObjectPropList::CheckRequestL(void) + ?RunL@CRequestProcessor@@MAEXXZ @ 18 NONAME ; void CRequestProcessor::RunL(void) + ?ServiceL@CDeleteObject@@MAEXXZ @ 19 NONAME ; void CDeleteObject::ServiceL(void) + ?DoCancel@CSetObjectPropList@@MAEXXZ @ 20 NONAME ; void CSetObjectPropList::DoCancel(void) + ?CleanupDatabaseL@CMmMtpDpMetadataAccessWrapper@@QAEXXZ @ 21 NONAME ; void CMmMtpDpMetadataAccessWrapper::CleanupDatabaseL(void) + ?ServiceL@CGetObjectPropsSupported@@MAEXXZ @ 22 NONAME ; void CGetObjectPropsSupported::ServiceL(void) + ?NewL@CSetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 23 NONAME ; class MMmRequestProcessor * CSetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?Release@CMmMtpDpAccessSingleton@@SAXXZ @ 24 NONAME ; void CMmMtpDpAccessSingleton::Release(void) + ?UsbDisconnect@CSendObject@@MAEXXZ @ 25 NONAME ; void CSendObject::UsbDisconnect(void) + ?ServiceL@CGetFormatCapabilities@@MAEXXZ @ 26 NONAME ; void CGetFormatCapabilities::ServiceL(void) + ??1CSetObjectPropList@@UAE@XZ @ 27 NONAME ; CSetObjectPropList::~CSetObjectPropList(void) + ?ServiceL@CSetObjectPropList@@MAEXXZ @ 28 NONAME ; void CSetObjectPropList::ServiceL(void) + ??0CMoveObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 29 NONAME ; CMoveObject::CMoveObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ConstructL@CGetObjectPropList@@IAEXXZ @ 30 NONAME ; void CGetObjectPropList::ConstructL(void) + ??1CSendObject@@UAE@XZ @ 31 NONAME ; CSendObject::~CSendObject(void) + ?ServiceMetaDataFromWrapperL@CGetObjectPropValue@@IAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 32 NONAME ; void CGetObjectPropValue::ServiceMetaDataFromWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?NewL@CGetObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 33 NONAME ; class MMmRequestProcessor * CGetObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectPropValue@@UAE@XZ @ 34 NONAME ; CGetObjectPropValue::~CGetObjectPropValue(void) + ?ActiveToIdleStatusChange@CMmMtpDpAccessSingleton@@SAXXZ @ 35 NONAME ; void CMmMtpDpAccessSingleton::ActiveToIdleStatusChange(void) + ?CreateL@CMmMtpDpAccessSingleton@@SAXAAVMMTPDataProviderFramework@@@Z @ 36 NONAME ; void CMmMtpDpAccessSingleton::CreateL(class MMTPDataProviderFramework &) + ??1CGetFormatCapabilities@@UAE@XZ @ 37 NONAME ; CGetFormatCapabilities::~CGetFormatCapabilities(void) + ?ServiceL@CSetObjectReferences@@EAEXXZ @ 38 NONAME ; void CSetObjectReferences::ServiceL(void) + ?DoHandleDataIToRPhaseL@CRequestProcessor@@MAEHXZ @ 39 NONAME ; int CRequestProcessor::DoHandleDataIToRPhaseL(void) + ??0CGetObjectPropList@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 40 NONAME ; CGetObjectPropList::CGetObjectPropList(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ConstructL@CCopyObject@@IAEXXZ @ 41 NONAME ; void CCopyObject::ConstructL(void) + ?SetMetaDataToWrapper@CPropertySettingUtility@@QAE?AW4TMTPResponseCode@@AAVMMmMtpDpConfig@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 42 NONAME ; enum TMTPResponseCode CPropertySettingUtility::SetMetaDataToWrapper(class MMmMtpDpConfig &, unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?ServiceL@CGetObjectPropValue@@MAEXXZ @ 43 NONAME ; void CGetObjectPropValue::ServiceL(void) + ??1CRenameObject@@UAE@XZ @ 44 NONAME ; CRenameObject::~CRenameObject(void) + ?Match@CRequestProcessor@@MBEHABVTMTPTypeEvent@@AAVMMTPConnection@@@Z @ 45 NONAME ; int CRequestProcessor::Match(class TMTPTypeEvent const &, class MMTPConnection &) const + ?DoHandleCompletingPhaseL@CSendObject@@MAEHXZ @ 46 NONAME ; int CSendObject::DoHandleCompletingPhaseL(void) + ?GetDrmStatus@MmMtpDpUtility@@SAHABVTDesC16@@@Z @ 47 NONAME ; int MmMtpDpUtility::GetDrmStatus(class TDesC16 const &) + ?RunL@CRenameObject@@MAEXXZ @ 48 NONAME ; void CRenameObject::RunL(void) + ?SetPSStatus@MmMtpDpUtility@@SAXW4TMtpPSStatus@@@Z @ 49 NONAME ; void MmMtpDpUtility::SetPSStatus(enum TMtpPSStatus) + ??0CRequestProcessor@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@HPBUTMTPRequestElementInfo@@@Z @ 50 NONAME ; CRequestProcessor::CRequestProcessor(class MMTPDataProviderFramework &, class MMTPConnection &, int, struct TMTPRequestElementInfo const *) + ?ServiceL@CSendObject@@MAEXXZ @ 51 NONAME ; void CSendObject::ServiceL(void) + ?Request@CRequestProcessor@@MBEABVTMTPTypeRequest@@XZ @ 52 NONAME ; class TMTPTypeRequest const & CRequestProcessor::Request(void) const + ?CheckRequestL@CGetPartialObject@@MAE?AW4TMTPResponseCode@@XZ @ 53 NONAME ; enum TMTPResponseCode CGetPartialObject::CheckRequestL(void) + ?DoCancel@CRequestProcessor@@MAEXXZ @ 54 NONAME ; void CRequestProcessor::DoCancel(void) + ?NewL@CRequestUnknown@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@@Z @ 55 NONAME ; class MMmRequestProcessor * CRequestUnknown::NewL(class MMTPDataProviderFramework &, class MMTPConnection &) + ?ConstructL@CGetObjectInfo@@AAEXXZ @ 56 NONAME ; void CGetObjectInfo::ConstructL(void) + ?UsbDisconnect@CRequestProcessor@@MAEXXZ @ 57 NONAME ; void CRequestProcessor::UsbDisconnect(void) + ??1CMoveObject@@UAE@XZ @ 58 NONAME ; CMoveObject::~CMoveObject(void) + ?CheckRequestL@CSendObject@@MAE?AW4TMTPResponseCode@@XZ @ 59 NONAME ; enum TMTPResponseCode CSendObject::CheckRequestL(void) + ??1CRequestProcessor@@MAE@XZ @ 60 NONAME ; CRequestProcessor::~CRequestProcessor(void) + ?DoCancel@CDeleteObject@@MAEXXZ @ 61 NONAME ; void CDeleteObject::DoCancel(void) + ??1CGetObject@@UAE@XZ @ 62 NONAME ; CGetObject::~CGetObject(void) + ?NewL@CGetInterdependentPropDesc@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 63 NONAME ; class MMmRequestProcessor * CGetInterdependentPropDesc::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?AddObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@@Z @ 64 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddObjectL(class CMTPObjectMetaData const &) + ?DoHandleResponsePhaseL@CSetObjectReferences@@EAEHXZ @ 65 NONAME ; int CSetObjectReferences::DoHandleResponsePhaseL(void) + ?GetAccessWrapperL@CMmMtpDpAccessSingleton@@SAAAVCMmMtpDpMetadataAccessWrapper@@XZ @ 66 NONAME ; class CMmMtpDpMetadataAccessWrapper & CMmMtpDpAccessSingleton::GetAccessWrapperL(void) + ??1CGetObjectPropsSupported@@UAE@XZ @ 67 NONAME ; CGetObjectPropsSupported::~CGetObjectPropsSupported(void) + ?CheckRequestL@CGetObjectPropList@@MAE?AW4TMTPResponseCode@@XZ @ 68 NONAME ; enum TMTPResponseCode CGetObjectPropList::CheckRequestL(void) + ?HasDataphase@CRequestProcessor@@MBEHXZ @ 69 NONAME ; int CRequestProcessor::HasDataphase(void) const + ?NewL@CGetObjectPropsSupported@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 70 NONAME ; class MMmRequestProcessor * CGetObjectPropsSupported::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?Connection@CRequestProcessor@@MBEAAVMMTPConnection@@XZ @ 71 NONAME ; class MMTPConnection & CRequestProcessor::Connection(void) const + ??1CPropertySettingUtility@@UAE@XZ @ 72 NONAME ; CPropertySettingUtility::~CPropertySettingUtility(void) + ??1CGetPartialObject@@UAE@XZ @ 73 NONAME ; CGetPartialObject::~CGetPartialObject(void) + ?NewL@CGetObjectInfo@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 74 NONAME ; class MMmRequestProcessor * CGetObjectInfo::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?RunError@CSetObjectPropList@@MAEHH@Z @ 75 NONAME ; int CSetObjectPropList::RunError(int) + ?CheckRequestL@CGetInterdependentPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 76 NONAME ; enum TMTPResponseCode CGetInterdependentPropDesc::CheckRequestL(void) + ?Match@CRequestUnknown@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 77 NONAME ; int CRequestUnknown::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ?ServiceL@CMoveObject@@MAEXXZ @ 78 NONAME ; void CMoveObject::ServiceL(void) + ?CreateDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 79 NONAME ; void CMmMtpDpMetadataAccessWrapper::CreateDummyFile(class TDesC16 const &) + ?CheckRequestL@CGetObjectPropDesc@@MAE?AW4TMTPResponseCode@@XZ @ 80 NONAME ; enum TMTPResponseCode CGetObjectPropDesc::CheckRequestL(void) + ?DoHandleRToIPhaseL@CRequestProcessor@@MAEHXZ @ 81 NONAME ; int CRequestProcessor::DoHandleRToIPhaseL(void) + ?ServiceMetaDataToWrapperL@CSetObjectPropValue@@IAE?AW4TMTPResponseCode@@GAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 82 NONAME ; enum TMTPResponseCode CSetObjectPropValue::ServiceMetaDataToWrapperL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?FormatFromFilename@MmMtpDpUtility@@SA?AW4TMTPFormatCode@@ABVTDesC16@@@Z @ 83 NONAME ; enum TMTPFormatCode MmMtpDpUtility::FormatFromFilename(class TDesC16 const &) + ?GetAllReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@AAVCDesC16Array@@@Z @ 84 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllReferenceL(class CMTPObjectMetaData const &, class CDesC16Array &) + ?CheckRequestL@CSetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 85 NONAME ; enum TMTPResponseCode CSetObjectPropValue::CheckRequestL(void) + ??0CPropertySettingUtility@@IAE@XZ @ 86 NONAME ; CPropertySettingUtility::CPropertySettingUtility(void) + ?Match@CRequestProcessor@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 87 NONAME ; int CRequestProcessor::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ??0CCopyObject@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 88 NONAME ; CCopyObject::CCopyObject(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?CheckRequestL@CRequestProcessor@@MAE?AW4TMTPResponseCode@@XZ @ 89 NONAME ; enum TMTPResponseCode CRequestProcessor::CheckRequestL(void) + ?SendResponseL@CRequestProcessor@@IAEXW4TMTPResponseCode@@HPAK@Z @ 90 NONAME ; void CRequestProcessor::SendResponseL(enum TMTPResponseCode, int, unsigned long *) + ?CancelActiveToIdleStatusChange@CMmMtpDpAccessSingleton@@SAXXZ @ 91 NONAME ; void CMmMtpDpAccessSingleton::CancelActiveToIdleStatusChange(void) + ?DoHandleCompletingPhaseL@CRequestProcessor@@MAEHXZ @ 92 NONAME ; int CRequestProcessor::DoHandleCompletingPhaseL(void) + ?DeleteDummyFile@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 93 NONAME ; void CMmMtpDpMetadataAccessWrapper::DeleteDummyFile(class TDesC16 const &) + ??1CGetObjectInfo@@UAE@XZ @ 94 NONAME ; CGetObjectInfo::~CGetObjectInfo(void) + ?ServiceL@CRequestUnknown@@MAEXXZ @ 95 NONAME ; void CRequestUnknown::ServiceL(void) + ?HasDataphase@CSetObjectPropList@@MBEHXZ @ 96 NONAME ; int CSetObjectPropList::HasDataphase(void) const + ?NewL@CGetObjectReferences@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 97 NONAME ; class MMmRequestProcessor * CGetObjectReferences::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?DoCancel@CRenameObject@@MAEXXZ @ 98 NONAME ; void CRenameObject::DoCancel(void) + ??1CSetObjectReferences@@UAE@XZ @ 99 NONAME ; CSetObjectReferences::~CSetObjectReferences(void) + ?Match@CSendObject@@MBEHABVTMTPTypeRequest@@AAVMMTPConnection@@@Z @ 100 NONAME ; int CSendObject::Match(class TMTPTypeRequest const &, class MMTPConnection &) const + ?NewL@CSetObjectPropList@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 101 NONAME ; class MMmRequestProcessor * CSetObjectPropList::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CCopyObject@@UAE@XZ @ 102 NONAME ; CCopyObject::~CCopyObject(void) + ?GetModifiedContentL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@AAHAAVCDesC16Array@@@Z @ 103 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetModifiedContentL(class TDesC16 const &, int &, class CDesC16Array &) + ?RunL@CGetObjectPropList@@MAEXXZ @ 104 NONAME ; void CGetObjectPropList::RunL(void) + ?NewRangeFormDescriptionL@CDescriptionUtility@@QAEPAVCMTPTypeObjectPropDesc@@GKKKH@Z @ 105 NONAME ; class CMTPTypeObjectPropDesc * CDescriptionUtility::NewRangeFormDescriptionL(unsigned short, unsigned long, unsigned long, unsigned long, int) + ?RunError@CRequestProcessor@@MAEHH@Z @ 106 NONAME ; int CRequestProcessor::RunError(int) + ?SessionId@CRequestProcessor@@MAEKXZ @ 107 NONAME ; unsigned long CRequestProcessor::SessionId(void) + ??0CDescriptionUtility@@IAE@XZ @ 108 NONAME ; CDescriptionUtility::CDescriptionUtility(void) + ?HandleEventL@CRequestProcessor@@MAEXABVTMTPTypeEvent@@@Z @ 109 NONAME ; void CRequestProcessor::HandleEventL(class TMTPTypeEvent const &) + ?NewL@CGetPartialObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 110 NONAME ; class MMmRequestProcessor * CGetPartialObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?HasDataphase@CSetObjectReferences@@EBEHXZ @ 111 NONAME ; int CSetObjectReferences::HasDataphase(void) const + ?RunError@CGetObjectPropList@@MAEHH@Z @ 112 NONAME ; int CGetObjectPropList::RunError(int) + ?DoHandleResponsePhaseL@CSetObjectPropList@@MAEHXZ @ 113 NONAME ; int CSetObjectPropList::DoHandleResponsePhaseL(void) + ?NewL@CRenameObject@@SAPAV1@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 114 NONAME ; class CRenameObject * CRenameObject::NewL(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) + ?RenameObjectL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@ABVTDesC16@@@Z @ 115 NONAME ; void CMmMtpDpMetadataAccessWrapper::RenameObjectL(class CMTPObjectMetaData const &, class TDesC16 const &) + ?GetObjectMetadataValueL@CMmMtpDpMetadataAccessWrapper@@QAEXGAAVMMTPType@@ABVCMTPObjectMetaData@@@Z @ 116 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetObjectMetadataValueL(unsigned short, class MMTPType &, class CMTPObjectMetaData const &) + ?GetAllAbstractMediaL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@AAVCDesC16Array@@W4TMPXGeneralCategory@@@Z @ 117 NONAME ; void CMmMtpDpMetadataAccessWrapper::GetAllAbstractMediaL(class TDesC16 const &, class CDesC16Array &, enum TMPXGeneralCategory) + ?AddDummyFileL@CMmMtpDpMetadataAccessWrapper@@QAEXABVTDesC16@@@Z @ 118 NONAME ; void CMmMtpDpMetadataAccessWrapper::AddDummyFileL(class TDesC16 const &) + ??1CGetObjectPropDesc@@UAE@XZ @ 119 NONAME ; CGetObjectPropDesc::~CGetObjectPropDesc(void) + ?ServiceL@CGetObjectPropDesc@@MAEXXZ @ 120 NONAME ; void CGetObjectPropDesc::ServiceL(void) + ?HasDataphase@CSetObjectPropValue@@MBEHXZ @ 121 NONAME ; int CSetObjectPropValue::HasDataphase(void) const + ?ServiceL@CCopyObject@@MAEXXZ @ 122 NONAME ; void CCopyObject::ServiceL(void) + ?CheckRequestL@CGetObjectPropValue@@MAE?AW4TMTPResponseCode@@XZ @ 123 NONAME ; enum TMTPResponseCode CGetObjectPropValue::CheckRequestL(void) + ?CloseSessionL@CMmMtpDpAccessSingleton@@SAXXZ @ 124 NONAME ; void CMmMtpDpAccessSingleton::CloseSessionL(void) + ?NewL@CGetFormatCapabilities@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 125 NONAME ; class MMmRequestProcessor * CGetFormatCapabilities::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?ReceiveDataL@CRequestProcessor@@IAEXAAVMMTPType@@@Z @ 126 NONAME ; void CRequestProcessor::ReceiveDataL(class MMTPType &) + ??1CDescriptionUtility@@UAE@XZ @ 127 NONAME ; CDescriptionUtility::~CDescriptionUtility(void) + ?ConstructL@CMoveObject@@IAEXXZ @ 128 NONAME ; void CMoveObject::ConstructL(void) + ?NewL@CSendObject@@SAPAVMMmRequestProcessor@@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 129 NONAME ; class MMmRequestProcessor * CSendObject::NewL(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ?RunL@CSetObjectPropList@@MAEXXZ @ 130 NONAME ; void CSetObjectPropList::RunL(void) + ??1CGetObjectReferences@@UAE@XZ @ 131 NONAME ; CGetObjectReferences::~CGetObjectReferences(void) + ?HasDataphase@CSendObject@@MBEHXZ @ 132 NONAME ; int CSendObject::HasDataphase(void) const + ??1CSetObjectPropValue@@UAE@XZ @ 133 NONAME ; CSetObjectPropValue::~CSetObjectPropValue(void) + ?ConstructL@CRenameObject@@IAEXXZ @ 134 NONAME ; void CRenameObject::ConstructL(void) + ?DoHandleResponsePhaseL@CSendObject@@MAEHXZ @ 135 NONAME ; int CSendObject::DoHandleResponsePhaseL(void) + ?SendDataL@CRequestProcessor@@IAEXABVMMTPType@@@Z @ 136 NONAME ; void CRequestProcessor::SendDataL(class MMTPType const &) + ?SetReferenceL@CMmMtpDpMetadataAccessWrapper@@QAEXABVCMTPObjectMetaData@@AAVCDesC16Array@@@Z @ 137 NONAME ; void CMmMtpDpMetadataAccessWrapper::SetReferenceL(class CMTPObjectMetaData const &, class CDesC16Array &) + ?DoCancel@CGetObjectPropList@@MAEXXZ @ 138 NONAME ; void CGetObjectPropList::DoCancel(void) + ?ServiceL@CGetInterdependentPropDesc@@MAEXXZ @ 139 NONAME ; void CGetInterdependentPropDesc::ServiceL(void) + ?DoHandleRequestPhaseL@CRequestProcessor@@MAEHXZ @ 140 NONAME ; int CRequestProcessor::DoHandleRequestPhaseL(void) + ?ServiceL@CSetObjectPropValue@@MAEXXZ @ 141 NONAME ; void CSetObjectPropValue::ServiceL(void) + ?RunError@CRenameObject@@MAEHH@Z @ 142 NONAME ; int CRenameObject::RunError(int) + ??1CDeleteObject@@UAE@XZ @ 143 NONAME ; CDeleteObject::~CDeleteObject(void) + ?DoHandleResponsePhaseL@CGetPartialObject@@MAEHXZ @ 144 NONAME ; int CGetPartialObject::DoHandleResponsePhaseL(void) + ??0CSetObjectPropValue@@IAE@AAVMMTPDataProviderFramework@@AAVMMTPConnection@@AAVMMmMtpDpConfig@@@Z @ 145 NONAME ; CSetObjectPropValue::CSetObjectPropValue(class MMTPDataProviderFramework &, class MMTPConnection &, class MMmMtpDpConfig &) + ??1CGetObjectPropList@@UAE@XZ @ 146 NONAME ; CGetObjectPropList::~CGetObjectPropList(void) + ?CheckRequestL@CGetFormatCapabilities@@MAE?AW4TMTPResponseCode@@XZ @ 147 NONAME ; enum TMTPResponseCode CGetFormatCapabilities::CheckRequestL(void) ?ServiceL@CGetObjectPropList@@MAEXXZ @ 148 NONAME ; void CGetObjectPropList::ServiceL(void) + ??0CRenameObject@@IAE@AAVMMTPDataProviderFramework@@AAVCMmMtpDpMetadataAccessWrapper@@@Z @ 149 NONAME ; CRenameObject::CRenameObject(class MMTPDataProviderFramework &, class CMmMtpDpMetadataAccessWrapper &) diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/eabi/mmmtpdprequestprocessoru.def Thu Aug 19 10:24:28 2010 +0300 @@ -262,4 +262,5 @@ _ZThn28_NK17CRequestProcessor5MatchERK13TMTPTypeEventR14MMTPConnection @ 261 NONAME _ZThn28_NK17CRequestProcessor5MatchERK15TMTPTypeRequestR14MMTPConnection @ 262 NONAME _ZThn28_NK17CRequestProcessor7RequestEv @ 263 NONAME + _ZN13CDeleteObject24DoHandleCompletingPhaseLEv @ 264 NONAME diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/inc/cdeleteobject.h --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/inc/cdeleteobject.h Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/inc/cdeleteobject.h Thu Aug 19 10:24:28 2010 +0300 @@ -77,6 +77,11 @@ */ IMPORT_C void DoCancel(); + /** + * Completeing phase Handler + */ + IMPORT_C TBool DoHandleCompletingPhaseL(); + private: void ConstructL(); /** @@ -114,6 +119,12 @@ // Keeps track of whether any files where deleted TBool iIsMultiDelete; + // Keeps track of the respone code when it is EMTPRespCodeDeviceBusy + TBool iDeviceBusy; + + // Keeps track of the count of EMTPRespCodeDeviceBusy that return to PC + TInt iCountDeviceBusyError; + // Accessor of DB MMmMtpDpConfig& iDpConfig; diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/ccopyobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/ccopyobject.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/ccopyobject.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -310,9 +310,9 @@ SetPreviousPropertiesL(); CFileMan* fileMan = CFileMan::NewL( iFramework.Fs() ); + CleanupStack::PushL( fileMan ); // + fileMan User::LeaveIfError( fileMan->Copy( oldFileName, aNewFileName ) ); - delete fileMan; - fileMan = NULL; + CleanupStack::PopAndDestroy( fileMan ); // - fileMan PRINT( _L( "MM MTP <= CCopyObject::CopyFileL" ) ); return handle; @@ -417,8 +417,6 @@ { PRINT( _L( "MM MTP => CCopyObject::SetPreviousPropertiesL" ) ); - TMTPResponseCode respcode = EMTPRespCodeOK; - iPropertyList->ResetCursor(); const TInt count = iPropertyList->NumberOfElements(); for ( TInt i = 0; i < count; i++ ) @@ -460,7 +458,7 @@ { CMTPTypeString *stringData = CMTPTypeString::NewLC( element.StringL( CMTPTypeObjectPropListElement::EValue ) ); // + stringData - respcode = iDpConfig.PropSettingUtility()->SetMetaDataToWrapper( iDpConfig, + iDpConfig.PropSettingUtility()->SetMetaDataToWrapper( iDpConfig, propertyCode, *stringData, *iTargetObject ); @@ -471,7 +469,7 @@ default: { - respcode = iDpConfig.PropSettingUtility()->SetSpecificObjectPropertyL( iDpConfig, + iDpConfig.PropSettingUtility()->SetSpecificObjectPropertyL( iDpConfig, propertyCode, *iTargetObject, element ); @@ -480,13 +478,7 @@ } } // end of for loop - // ignore errors - if ( respcode == EMTPRespCodeOK ) - { - // do nothing, just to get rid of build warning - } - - PRINT1( _L( "MM MTP <= CCopyObject::SetPreviousPropertiesL respcode = 0x%x" ), respcode ); + PRINT( _L( "MM MTP <= CCopyObject::SetPreviousPropertiesL" ) ); } // ----------------------------------------------------------------------------- diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdeleteobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdeleteobject.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cdeleteobject.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -26,6 +26,7 @@ #include "mmmtpdputility.h" const TInt KMaxDeletionTimes = 10; +const TInt KMaxDeviceBusyTimes = 3; const TInt KDeletionThreshold = 100 * 1000; // (100 millisec) // ----------------------------------------------------------------------------- @@ -294,6 +295,25 @@ } // ----------------------------------------------------------------------------- +// CDeleteObject::DoHandleCompletingPhaseL +// Completeing phase Handler +// ----------------------------------------------------------------------------- +// +EXPORT_C TBool CDeleteObject::DoHandleCompletingPhaseL() + { + CRequestProcessor::DoHandleCompletingPhaseL(); + + // If the response code is EMTPRespCodeDeviceBusy, don't release this object + TBool result = !iDeviceBusy; + + PRINT2( _L( "MM MTP <> CDeleteObject::DoHandleCompletingPhaseL iDeleteError= %d, result = %d" ), + iDeleteError, + result ); + + return result; + } + +// ----------------------------------------------------------------------------- // CDeleteObject::ProcessFinalPhaseL // Delete all of the associations if file deletion was successful // Then signals that the deletion has been completed @@ -305,6 +325,7 @@ TInt num = iObjectsToDelete.Count(); TBool isOk = iDeleteError == KErrNone || iDeleteError == KErrNotFound; + iDeviceBusy = EFalse; if ( num == 0 && isOk ) { @@ -315,12 +336,15 @@ SendResponseL( EMTPRespCodePartialDeletion ); } else if ( !iIsMultiDelete && iDeleteError == KErrAccessDenied ) - { + { SendResponseL( EMTPRespCodeObjectWriteProtected ); } - else if ( iDeleteError == KErrInUse ) + else if ( iDeleteError == KErrInUse + && iCountDeviceBusyError < KMaxDeviceBusyTimes ) { + iCountDeviceBusyError++; SendResponseL( EMTPRespCodeDeviceBusy ); + iDeviceBusy = ETrue; } else { diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectinfo.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectinfo.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectinfo.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -95,7 +95,6 @@ // EXPORT_C void CGetObjectInfo::ConstructL() { - CActiveScheduler::Add( this ); } // ----------------------------------------------------------------------------- @@ -106,7 +105,7 @@ void CGetObjectInfo::ServiceL() { PRINT( _L( "MM MTP => CGetObjectInfo::ServiceL" ) ); - + MmMtpDpUtility::SetPSStatus(EMtpPSStatusActive); delete iObjectInfo; @@ -174,8 +173,13 @@ // Image Bit Depth iObjectInfo->SetUint32L( CMTPTypeObjectInfo::EImageBitDepth, 0 ); // Parent Object - iObjectInfo->SetUint32L( CMTPTypeObjectInfo::EParentObject, - object->Uint( CMTPObjectMetaData::EParentHandle ) ); + TUint32 parentHandle = object->Uint( CMTPObjectMetaData::EParentHandle ); + // refer to 5.3.1.9 of MTP Spec 1.0 + if ( parentHandle == KMTPHandleNoParent ) + { + parentHandle = KMTPHandleNone; + } + iObjectInfo->SetUint32L( CMTPTypeObjectInfo::EParentObject, parentHandle ); // Association Type iObjectInfo->SetUint16L( CMTPTypeObjectInfo::EAssociationType, 0 ); // Association Description diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectproplist.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectproplist.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectproplist.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -500,29 +500,11 @@ properties = iDpConfig.GetSupportedPropertiesL( formatCode ); const TInt count = properties->Count(); - - TInt err = KErrNone; - TBool successQuery = EFalse; for ( TInt i = 0; i < count; i++ ) { - // no need to do the trap anymore, this is being handle internally in Media DP's ServiceSpecificObjectPropertyL, - // also, this base class should not know too much of different handling between different formats - err = ServiceOneObjectPropertyL( aHandle, (*properties)[i] ); - if ( err == KErrNone ) - successQuery = ETrue; - if ( err == KErrNotSupported || err == KErrNotFound ) // Skip - err = KErrNone; - if ( err != KErrNone ) - break; + ServiceOneObjectPropertyL( aHandle, (*properties)[i] ); } - - // In PC Suite combined mode, a file that was found at the beginning could be deleted by PC Suite protocol - // Need to fail it here. - if ( successQuery == EFalse ) - err = KErrNotFound; - - PRINT1( _L( "MM MTP <= CGetObjectPropList::ServiceAllPropertiesL err = %d" ), err ); - return err; + return KErrNone; } // ----------------------------------------------------------------------------- @@ -626,17 +608,10 @@ // Filename case EMTPObjectPropCodeObjectFileName: { -#ifdef _DEBUG - HBufC* log = iObject->DesC( CMTPObjectMetaData::ESuid ).Alloc(); - PRINT1( _L( "MM MTP <> CGetObjectPropList::ServiceOneObjectPropertyL FileName = %S" ), log ); - delete log; - log = NULL; -#endif // _DEBUG TParsePtrC parse( iObject->DesC( CMTPObjectMetaData::ESuid ) ); - textData = CMTPTypeString::NewLC( parse.NameAndExt() ); // + textData + PRINT1( _L( "MM MTP <> CGetObjectPropList::ServiceOneObjectPropertyL FileName = %S" ), &parse.FullName() ); iPropertyElement = &( iPropertyList->ReservePropElemL( aHandle, aPropCode) ); - iPropertyElement->SetStringL( CMTPTypeObjectPropListElement::EValue, textData->StringChars() ); - CleanupStack::PopAndDestroy( textData ); // - textData + iPropertyElement->SetStringL( CMTPTypeObjectPropListElement::EValue, parse.NameAndExt() ); } break; @@ -644,7 +619,13 @@ case EMTPObjectPropCodeParentObject: { iPropertyElement = &( iPropertyList->ReservePropElemL( aHandle, aPropCode ) ); - iPropertyElement->SetUint32L( CMTPTypeObjectPropListElement::EValue, iObject->Uint( CMTPObjectMetaData::EParentHandle ) ); + TUint32 parentHandle = iObject->Uint( CMTPObjectMetaData::EParentHandle ); + // refer to 5.3.1.9 of MTP Spec 1.0 + if ( parentHandle == KMTPHandleNoParent ) + { + parentHandle = KMTPHandleNone; + } + iPropertyElement->SetUint32L( CMTPTypeObjectPropListElement::EValue, parentHandle ); } break; diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectpropvalue.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectpropvalue.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectpropvalue.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -205,8 +205,15 @@ // Parent case EMTPObjectPropCodeParentObject: { - iMTPTypeUint32.Set( 0 ); - iMTPTypeUint32 = iObjectInfo->Uint( CMTPObjectMetaData::EParentHandle ); + iMTPTypeUint32.Set( KMTPHandleNone ); + + TUint32 parentHandle = iObjectInfo->Uint( CMTPObjectMetaData::EParentHandle ); + // refer to 5.3.1.9 of MTP Spec 1.0 + if ( parentHandle != KMTPHandleNoParent ) + { + iMTPTypeUint32.Set( parentHandle ); + } + SendDataL( iMTPTypeUint32 ); } break; diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectreferences.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectreferences.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cgetobjectreferences.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -204,12 +204,10 @@ PRINT2( _L("MM MTP => CGetObjectReferences::AddReferencesL aRefOwnerSuid = %S, ref count = %d"), &aRefOwnerSuid, count ); // check if references are valid - TInt removeCount = 0; - for ( TInt i = 0; i < count; i++ ) + for ( TInt i = count-1; i >= 0; i-- ) { - TInt index = i - removeCount; - TPtrC temp( aReferences[index] ); - PRINT2( _L( "MM MTP <> CGetObjectReferences::AddReferencesL ref[%d]'s name = %S" ), index, &temp ); + TPtrC temp( aReferences[i] ); + PRINT2( _L( "MM MTP <> CGetObjectReferences::AddReferencesL ref[%d]'s name = %S" ), i, &temp ); PERFLOGSTART( KObjectManagerHandle ); TUint32 handle = iFramework.ObjectMgr().HandleL( temp ); PERFLOGSTOP( KObjectManagerHandle ); @@ -218,8 +216,7 @@ PRINT1( _L( "MM MTP <> CGetObjectReferences::AddReferencesL, [%S] doesn't existed in handle db, remove this from reference array" ), &temp ); // if handle is invalid, remove from reference array - aReferences.Delete( index, 1 ); - removeCount++; + aReferences.Delete( i ); } } diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/cmoveobject.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -292,15 +292,15 @@ // Move the file first no matter if it will fail in Get/SetPreviousPropertiesL // Already trapped inside GetPreviousPropertiesL( *iObjectInfo ); - TRAPD( err, SetPropertiesL( aNewFileName ) ); + TRAP_IGNORE( SetPropertiesL( aNewFileName ) ); CFileMan* fileMan = CFileMan::NewL( iFramework.Fs() ); - err = fileMan->Move( *oldFileName, aNewFileName ); - - CleanupStack::PopAndDestroy( oldFileName ); // - oldFileName - - if ( err != KErrNone ) - PRINT1( _L( "MM MTP <> CMoveObject::MoveFileL err = %d" ), err ); + CleanupStack::PushL( fileMan ); // + fileMan + TInt err = fileMan->Move( *oldFileName, aNewFileName ); + PRINT1( _L( "MM MTP <> CMoveObject::MoveFileL err = %d" ), err ); + User::LeaveIfError( err ); + CleanupStack::PopAndDestroy( fileMan ); // - fileMan + CleanupStack::PopAndDestroy( oldFileName ); // - oldFileName PRINT( _L( "MM MTP <= CMoveObject::MoveFileL" ) ); } @@ -408,8 +408,6 @@ { PRINT( _L( "MM MTP => CMoveObject::SetPreviousPropertiesL" ) ); - TMTPResponseCode respcode = EMTPRespCodeOK; - iPropertyList->ResetCursor(); const TInt count = iPropertyList->NumberOfElements(); for ( TInt i = 0; i < count; i++ ) @@ -449,7 +447,7 @@ { CMTPTypeString *stringData = CMTPTypeString::NewLC( element.StringL( CMTPTypeObjectPropListElement::EValue ) ); // + stringData - respcode = iDpConfig.PropSettingUtility()->SetMetaDataToWrapper( iDpConfig, + iDpConfig.PropSettingUtility()->SetMetaDataToWrapper( iDpConfig, propertyCode, *stringData, *iObjectInfo ); @@ -460,7 +458,7 @@ default: { - respcode = iDpConfig.PropSettingUtility()->SetSpecificObjectPropertyL( iDpConfig, + iDpConfig.PropSettingUtility()->SetSpecificObjectPropertyL( iDpConfig, propertyCode, *iObjectInfo, element ); @@ -469,13 +467,7 @@ } } // end of for loop - // ignore errors - if ( respcode == EMTPRespCodeOK ) - { - // do nothing, just to get rid of build warning - } - - PRINT1( _L( "MM MTP <= CMoveObject::SetPreviousPropertiesL respcode = 0x%x" ), respcode ); + PRINT( _L( "MM MTP <= CMoveObject::SetPreviousPropertiesL" ) ); } // ----------------------------------------------------------------------------- diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crenameobject.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -269,7 +269,7 @@ PRINT1( _L( "MM MTP <> CRenameObject::GetParentSuidL new folder full file name(%S)" ), &iNewFolderName ); iOldFolderFullName.Zero(); - iOldFolderFullName.Append( aFolderName ); // just name not suid + iOldFolderFullName.Append( aFolderName ); PRINT1( _L( "MM MTP <> CRenameObject::GetParentSuidL = %S" ), &iOldFolderFullName ); } diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crequestchecker.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crequestchecker.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crequestchecker.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -243,10 +243,6 @@ CMTPObjectMetaData* object( CMTPObjectMetaData::NewLC() ); TBool result( iFramework.ObjectMgr().ObjectL( aHandle, *object ) ); - iObjectArray.AppendL( object ); - CleanupStack::Pop( object ); - iHandles.AppendL( aHandle ); - // Obj handle exists if ( result ) { @@ -277,8 +273,18 @@ ret = EMTPRespCodeInvalidParentObject; } } + + if ( result ) + { + iObjectArray.AppendL( object ); + CleanupStack::Pop( object ); + iHandles.AppendL( aHandle ); + } else + { + CleanupStack::PopAndDestroy( object ); ret = EMTPRespCodeInvalidObjectHandle; + } PRINT1( _L( "MM MTP <= CRequestChecker::VerifyObjectHandleL ret = 0x%x" ), ret ); diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crequestprocessor.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crequestprocessor.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/crequestprocessor.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -233,6 +233,7 @@ { TUint16 eventCode = aEvent.Uint16( TMTPTypeEvent::EEventCode ); iCancelled = ( eventCode == EMTPEventCodeCancelTransaction ); + PRINT1( _L("CRequestProcessor::HandleEventL, eventCode = %d"), eventCode); } // ----------------------------------------------------------------------------- diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csendobject.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -198,12 +198,14 @@ { delete iObjectInfo; iObjectInfo = NULL; + Rollback(); iProgress = EObjectNone; } else if ( iOperationCode == EMTPOpCodeSendObjectPropList ) { delete iObjectPropList; iObjectPropList = NULL; + Rollback(); iProgress = EObjectNone; } } @@ -328,6 +330,10 @@ if ( iProgress == EObjectNone ) { + // iCancelled could have been set after the last transaction + // reset the flag here + iCancelled = EFalse; + if ( iOperationCode == EMTPOpCodeSendObjectInfo ) { ServiceInfoL(); @@ -607,6 +613,8 @@ SendResponseL( EMTPRespCodeOK ); } + iCancelled = EFalse; + PRINT1( _L( "MM MTP <= CSendObject::DoHandleResponsePhaseObjectL result = %d" ), result ); return result; @@ -1067,6 +1075,17 @@ // might happen if function is called before physical file arrives // do nothing } + else if ( iObjectFormat == EMTPFormatCodeASF ) + { + // happens on some buggy PC implementation, default formatcode to WMA or WMV if extension matches + PRINT( _L( "MM MTP <> happens on some buggy PC implementation, default formatcode to WMA or WMV if extension matches" ) ); + if ( parser.Ext().CompareF( KTxtExtensionWMA ) == 0 ) + iObjectFormat = EMTPFormatCodeWMA; + else if ( parser.Ext().CompareF( KTxtExtensionWMV ) == 0 ) + iObjectFormat = EMTPFormatCodeWMV; + else + result = EFalse; + } else { PRINT2( _L( "MM MTP <> %S does not match 0x%x" ), &iFullPath, iObjectFormat ); diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectproplist.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -188,103 +188,105 @@ if ( protectionStatus != EMTPProtectionNoProtection ) { // NOTE: P4S expects AccessDenied response instead of ObjectWriteProtected - return EMTPRespCodeAccessDenied; // EMTPRespCodeObjectWriteProtected; + responseCode = EMTPRespCodeAccessDenied; // EMTPRespCodeObjectWriteProtected; } - - switch ( propertyCode ) + else { - case EMTPObjectPropCodeStorageID: - case EMTPObjectPropCodeObjectFormat: - case EMTPObjectPropCodeProtectionStatus: - case EMTPObjectPropCodeObjectSize: - case EMTPObjectPropCodeParentObject: - case EMTPObjectPropCodePersistentUniqueObjectIdentifier: - case EMTPObjectPropCodeDateAdded: - case EMTPObjectPropCodeDateCreated: - case EMTPObjectPropCodeDateModified: - { - responseCode = EMTPRespCodeAccessDenied; - } - break; - - case EMTPObjectPropCodeNonConsumable: - object->SetUint( CMTPObjectMetaData::ENonConsumable, - aPropListElement.Uint8L( CMTPTypeObjectPropListElement::EValue ) ); - // TODO: need to reconsider, - // if propList comprise both non-consumable and objectFileName, - // ModifyObjectL would be called twice, need to investigate if it won't affect - // performance - iFramework.ObjectMgr().ModifyObjectL( *object ); - break; - - case EMTPObjectPropCodeObjectFileName: + switch ( propertyCode ) { - TPtrC suid( object->DesC( CMTPObjectMetaData::ESuid ) ); - TPtrC ptr( aPropListElement.StringL( CMTPTypeObjectPropListElement::EValue ) ); - if ( KMaxFileName < ptr.Length() ) - responseCode = EMTPRespCodeInvalidDataset; - else + case EMTPObjectPropCodeStorageID: + case EMTPObjectPropCodeObjectFormat: + case EMTPObjectPropCodeProtectionStatus: + case EMTPObjectPropCodeObjectSize: + case EMTPObjectPropCodeParentObject: + case EMTPObjectPropCodePersistentUniqueObjectIdentifier: + case EMTPObjectPropCodeDateAdded: + case EMTPObjectPropCodeDateCreated: + case EMTPObjectPropCodeDateModified: { - TFileName newSuid( ptr ); - TInt err = MmMtpDpUtility::UpdateObjectFileName( iFramework.Fs(), suid, newSuid ); - PRINT1( _L( "MM MTP <> Update object file name err = %d" ), err ); - if ( KErrOverflow == err ) // full path name is too long - { + responseCode = EMTPRespCodeAccessDenied; + } + break; + + case EMTPObjectPropCodeNonConsumable: + object->SetUint( CMTPObjectMetaData::ENonConsumable, + aPropListElement.Uint8L( CMTPTypeObjectPropListElement::EValue ) ); + // TODO: need to reconsider, + // if propList comprise both non-consumable and objectFileName, + // ModifyObjectL would be called twice, need to investigate if it won't affect + // performance + iFramework.ObjectMgr().ModifyObjectL( *object ); + break; + + case EMTPObjectPropCodeObjectFileName: + { + TPtrC suid( object->DesC( CMTPObjectMetaData::ESuid ) ); + TPtrC ptr( aPropListElement.StringL( CMTPTypeObjectPropListElement::EValue ) ); + if ( KMaxFileName < ptr.Length() ) responseCode = EMTPRespCodeInvalidDataset; - } - else if ( KErrNone == err ) // TODO: ( KErrAlreadyExists == err ) - { - TRAP( err, iDpConfig.GetWrapperL().RenameObjectL( *object, newSuid ) ); //Update MPX DB - - PRINT1( _L( "MM MTP <> Rename MPX object file name err = %d" ), err ); - // it is ok if file is not found in DB, following S60 solution - if ( KErrNotFound == err ) - { - TRAP( err, iDpConfig.GetWrapperL().AddObjectL( *object ) ); - PRINT1( _L( "MM MTP <> Add MPX object file name err = %d" ), err ); - } - - object->SetDesCL( CMTPObjectMetaData::ESuid, newSuid ); - iFramework.ObjectMgr().ModifyObjectL( *object ); - } - else if ( KErrInUse == err ) // object file is being used by other program - { - responseCode = EMTPRespCodeDeviceBusy; - } else { - responseCode = EMTPRespCodeGeneralError; + TFileName newSuid( ptr ); + TInt err = MmMtpDpUtility::UpdateObjectFileName( iFramework.Fs(), suid, newSuid ); + PRINT1( _L( "MM MTP <> Update object file name err = %d" ), err ); + if ( KErrOverflow == err ) // full path name is too long + { + responseCode = EMTPRespCodeInvalidDataset; + } + else if ( KErrNone == err ) // TODO: ( KErrAlreadyExists == err ) + { + TRAP( err, iDpConfig.GetWrapperL().RenameObjectL( *object, newSuid ) ); //Update MPX DB + + PRINT1( _L( "MM MTP <> Rename MPX object file name err = %d" ), err ); + // it is ok if file is not found in DB, following S60 solution + if ( KErrNotFound == err ) + { + TRAP( err, iDpConfig.GetWrapperL().AddObjectL( *object ) ); + PRINT1( _L( "MM MTP <> Add MPX object file name err = %d" ), err ); + } + + object->SetDesCL( CMTPObjectMetaData::ESuid, newSuid ); + iFramework.ObjectMgr().ModifyObjectL( *object ); + } + else if ( KErrInUse == err ) // object file is being used by other program + { + responseCode = EMTPRespCodeDeviceBusy; + } + else + { + responseCode = EMTPRespCodeGeneralError; + } } } - } - break; + break; - case EMTPObjectPropCodeName: - case EMTPObjectPropCodeAlbumArtist: - { - CMTPTypeString* stringData = CMTPTypeString::NewLC( - aPropListElement.StringL( CMTPTypeObjectPropListElement::EValue ) );// + stringData + case EMTPObjectPropCodeName: + case EMTPObjectPropCodeAlbumArtist: + { + CMTPTypeString* stringData = CMTPTypeString::NewLC( + aPropListElement.StringL( CMTPTypeObjectPropListElement::EValue ) );// + stringData - responseCode = iDpConfig.PropSettingUtility()->SetMetaDataToWrapper( iDpConfig, - propertyCode, - *stringData, - *object ); + responseCode = iDpConfig.PropSettingUtility()->SetMetaDataToWrapper( iDpConfig, + propertyCode, + *stringData, + *object ); - CleanupStack::PopAndDestroy( stringData );// - stringData - } - break; + CleanupStack::PopAndDestroy( stringData );// - stringData + } + break; - default: - { - responseCode = iDpConfig.PropSettingUtility()->SetSpecificObjectPropertyL( iDpConfig, - propertyCode, - *object, - aPropListElement ); + default: + { + responseCode = iDpConfig.PropSettingUtility()->SetSpecificObjectPropertyL( iDpConfig, + propertyCode, + *object, + aPropListElement ); + } + break; } - break; + + CleanupStack::PopAndDestroy( object ); // - object } - - CleanupStack::PopAndDestroy( object ); // - object } PRINT1( _L( "MM MTP <= CSetObjectPropList::SetObjectPropListL responseCode = 0x%x" ), responseCode ); diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp --- a/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/mmmtpdprequestprocessor/src/csetobjectpropvalue.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -148,17 +148,11 @@ TUint32 objectHandle = Request().Uint32( TMTPTypeRequest::ERequestParameter1 ); CMTPObjectMetaData* objectInfo = iRequestChecker->GetObjectInfo( objectHandle ); - if ( objectInfo == NULL ) - { - PRINT( _L("MM MTP <> CSetObjectPropValue::CheckRequestL, objectInfo is NULL" ) ); - return EMTPRespCodeInvalidObjectHandle; - } - TPtrC fileName = objectInfo->DesC( CMTPObjectMetaData::ESuid ); TUint32 formatCode = objectInfo->Uint( CMTPObjectMetaData::EFormatCode ); PRINT3( _L( "MM MTP <> CSetObjectPropValue::CheckRequestL, handle = 0x%x, filename = %S, formatCode = 0x%x" ), objectHandle, - &fileName, + &(objectInfo->DesC( CMTPObjectMetaData::ESuid )), formatCode ); const RArray* properties = iDpConfig.GetSupportedPropertiesL( formatCode ); TInt count = properties->Count(); diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -155,7 +155,7 @@ break; } // else - // get from mpx + // Fall through on purpoe to get from mpx case EMPXPlaylist: case EMPXSong: { diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatampxaccess.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -1522,12 +1522,6 @@ PRINT( _L( "MM MTP <> Modified contents are:" ) ); foundMedia = FindWMPMediaLC( KMPXMediaGeneralModified, ETrue ); // + foundMedia - - if ( !foundMedia->IsSupported( KMPXMediaArrayCount ) ) - { - User::Leave( KErrNotSupported ); - } - foundItemCount = *foundMedia->Value( KMPXMediaArrayCount ); PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::GetModifiedContentL() found %d Media Objects" ), foundItemCount ); @@ -1600,14 +1594,14 @@ CleanupStack::PopAndDestroy( &playlistAttributes ); // - playlistAttributes CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia + CleanupStack::PushL( foundMedia ); // + foundMedia if ( !foundMedia->IsSupported( KMPXMediaArrayCount ) ) User::Leave( KErrNotSupported ); TInt foundItemCount = *foundMedia->Value( KMPXMediaArrayCount ); - delete foundMedia; - foundMedia = NULL; + CleanupStack::PopAndDestroy( foundMedia ); // - foundMedia PRINT1( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::IsExist foundItemCount(%d)" ), foundItemCount ); return ( foundItemCount > 0 ? ETrue : EFalse ); diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatavideoaccess.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatavideoaccess.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadatavideoaccess.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -89,6 +89,8 @@ User::LeaveIfError( iDbsSession.Connect() ); TInt err = DriveInfo::GetDefaultDrive( DriveInfo::EDefaultPhoneMemory, iStoreNum ); + PRINT1( _L( "MM MTP <> CMmMtpDpMetadataVideoAccess::ConstructL, EDefaultPhoneMemory err = %d" ), err ); + User::LeaveIfError( err ); err = OpenDatabase(); @@ -153,15 +155,17 @@ } } - TBuf storeRoot; - err = PathInfo::GetRootPath( storeRoot, iStoreNum ); - iRfs.SetSessionPath( storeRoot ); - if ( err == KErrNone ) { iDbOpened = ETrue; } + TBuf storeRoot; + if( PathInfo::GetRootPath( storeRoot, iStoreNum ) == KErrNone ) + { + iRfs.SetSessionPath( storeRoot ); + } + PRINT( _L( "MM MTP <= CMmMtpDpMetadataVideoAccess::OpenDatabase" ) ); return err; } @@ -349,12 +353,14 @@ for ( iRecordSet.FirstL(); iRecordSet.AtRow(); iRecordSet.NextL() ) { +#ifdef _DEBUG HBufC* data = ReadLongTextL( KMtpVideoLocation ); - CleanupStack::PushL( data ); PRINT1( _L( "MM MTP <> CleanupDbIfNecessaryL removing %S from database" ), data ); + delete data; + data = NULL; +#endif iRecordSet.DeleteL(); - CleanupStack::PopAndDestroy( data ); } delete iColSet; @@ -706,9 +712,8 @@ OpenDatabaseL(); // File Path - HBufC* suid = aObjectMetaData.DesC( CMTPObjectMetaData::ESuid ).AllocLC(); // + suid - SetRecordL( *suid, ERecordRead ); - CleanupStack::PopAndDestroy( suid ); // - suid + const TDesC& suid = aObjectMetaData.DesC( CMTPObjectMetaData::ESuid ); + SetRecordL( suid, ERecordRead ); HBufC* data = NULL; TDbColNo num; @@ -779,16 +784,14 @@ { PRINT( _L( "MM MTP <> EMTPObjectPropCodeDescription-MD" ) ); data = ReadLongTextL( KMtpVideoComment ); + CleanupStack::PushL( data ); // + data TInt len = data->Length(); PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::GetObjectMetadataValue len = %d" ),len ); - if ( len != 0 ) - { - for ( TInt i = 0; i < len; i++ ) - ( ( CMTPTypeArray& ) aNewData ).AppendUintL( ( *data )[i] ); - } + for ( TInt i = 0; i < len; i++ ) + ( ( CMTPTypeArray& ) aNewData ).AppendUintL( ( *data )[i] ); - delete data; + CleanupStack::PopAndDestroy( data ); // - data data = NULL; } break; @@ -1025,6 +1028,7 @@ // Pack the info to aNewData if ( data ) { + CleanupStack::PushL( data ); // + data #ifdef _DEBUG if ( data->Length() > KMtpMaxStringDescLength ) // Have to concatenate for MTP { @@ -1040,8 +1044,7 @@ { User::Leave( KErrArgument ); } - delete data; - data = NULL; + CleanupStack::PopAndDestroy( data ); // - data } PRINT( _L( "MM MTP <= CMmMtpDpMetadataVideoAccess::GetObjectMetadataValue" ) ); diff -r b034b1c214c2 -r e42293e811d8 mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp --- a/mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappcomponents/mmmtpdataprovider/src/mmmtpdputility.cpp Thu Aug 19 10:24:28 2010 +0300 @@ -110,14 +110,8 @@ if ( mime->CompareF( KMimeTypeAudio3gpp ) == 0 || mime->CompareF( KMimeTypeVideo3gpp ) == 0 ) { - delete mime; - mime = NULL; format = EMTPFormatCode3GPContainer; } - } - - if ( mime != NULL ) - { delete mime; mime = NULL; } @@ -525,34 +519,15 @@ HBufC8* MmMtpDpUtility::OdfMimeTypeL( const TDesC& aFullPath ) { PRINT( _L( "MM MTP => MmMtpDpUtility::OdfMimeTypeL" ) ); - HBufC8* mimebuf = NULL; - CContent* content = CContent::NewL( aFullPath ); - CleanupStack::PushL( content ); // + content - - HBufC* buffer = HBufC::NewL( KMimeTypeMaxLength ); - CleanupStack::PushL( buffer ); // + buffer + CContent* content = CContent::NewLC( aFullPath ); // + content + HBufC* buffer = HBufC::NewLC( KMimeTypeMaxLength ); // + buffer TPtr data = buffer->Des(); - TInt err = content->GetStringAttribute( EMimeType, data ); - - if ( err == KErrNone ) - { - mimebuf = HBufC8::New( buffer->Length() ); + User::LeaveIfError( content->GetStringAttribute( EMimeType, data ) ); - if ( mimebuf == NULL ) - { - User::LeaveIfError( KErrNotFound ); - } - - mimebuf->Des().Copy( *buffer ); - } - - // leave if NULL - if ( mimebuf == NULL ) - { - User::Leave( KErrNotFound ); - } + HBufC8* mimebuf = HBufC8::NewL( buffer->Length() ); + mimebuf->Des().Copy( *buffer ); CleanupStack::PopAndDestroy( buffer ); // - buffer CleanupStack::PopAndDestroy( content ); // - content diff -r b034b1c214c2 -r e42293e811d8 mmappfw_plat/harvester_utility_api/tsrc/Conf/mpxharvestertest.cfg --- a/mmappfw_plat/harvester_utility_api/tsrc/Conf/mpxharvestertest.cfg Thu Jul 15 19:11:42 2010 +0300 +++ b/mmappfw_plat/harvester_utility_api/tsrc/Conf/mpxharvestertest.cfg Thu Aug 19 10:24:28 2010 +0300 @@ -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 b034b1c214c2 -r e42293e811d8 mpx/collectionframework/collectionserver/group/mpxcollectionserver.mmp --- a/mpx/collectionframework/collectionserver/group/mpxcollectionserver.mmp Thu Jul 15 19:11:42 2010 +0300 +++ b/mpx/collectionframework/collectionserver/group/mpxcollectionserver.mmp Thu Aug 19 10:24:28 2010 +0300 @@ -25,7 +25,7 @@ UID 0 0x101FFC31 VENDORID VID_DEFAULT CAPABILITY ALL -TCB -#ifdef __WINS__ +#ifdef WINS EPOCHEAPSIZE 0x1000 0x2800000 // 40MB #else EPOCHEAPSIZE 0x1000 0x3E00000 // 62 MB diff -r b034b1c214c2 -r e42293e811d8 mpx/commonframework/group/bld.inf --- a/mpx/commonframework/group/bld.inf Thu Jul 15 19:11:42 2010 +0300 +++ b/mpx/commonframework/group/bld.inf Thu Aug 19 10:24:28 2010 +0300 @@ -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)