diff -r d45095c2f4f3 -r bee149131e4b mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp --- a/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp Tue Feb 02 00:27:58 2010 +0200 +++ b/mmappcomponents/mmmtpdataprovider/src/cmmmtpdpmetadataaccesswrapper.cpp Fri Feb 19 23:18:32 2010 +0200 @@ -16,11 +16,12 @@ */ +#include +#include #include #include -#include #include -#include +#include #include "cmmmtpdpmetadataaccesswrapper.h" #include "cmmmtpdpmetadatampxaccess.h" @@ -30,23 +31,23 @@ const TInt KMMMTPDummyFileArrayGranularity = 5; -CMmMtpDpMetadataAccessWrapper* CMmMtpDpMetadataAccessWrapper::NewL( RFs& aRfs, +CMmMtpDpMetadataAccessWrapper* CMmMtpDpMetadataAccessWrapper::NewL( RFs& aRfs, MMTPDataProviderFramework& aFramework ) { CMmMtpDpMetadataAccessWrapper* me = new (ELeave) CMmMtpDpMetadataAccessWrapper( aRfs, aFramework ); CleanupStack::PushL( me ); me->ConstructL(); CleanupStack::Pop( me ); - + return me; } -CMmMtpDpMetadataAccessWrapper::CMmMtpDpMetadataAccessWrapper( RFs& aRfs, +CMmMtpDpMetadataAccessWrapper::CMmMtpDpMetadataAccessWrapper( RFs& aRfs, MMTPDataProviderFramework& aFramework ) : iRfs( aRfs ), iFramework( aFramework ) { - + // Do nothing } // --------------------------------------------------------------------------- @@ -61,16 +62,16 @@ iMmMtpDpMetadataMpxAccess = CMmMtpDpMetadataMpxAccess::NewL( iRfs, iFramework ); iMmMtpDpMetadataVideoAccess = CMmMtpDpMetadataVideoAccess::NewL( iRfs ); - - iPlaylistArray = new ( ELeave ) CDesCArrayFlat( KMMMTPDummyFileArrayGranularity ); - + + iAbstractMediaArray = new ( ELeave ) CDesCArrayFlat( KMMMTPDummyFileArrayGranularity ); + // Create the PS key to notify subscribers that MTP mode is activated _LIT_SECURITY_POLICY_C1(KKeyReadPolicy, ECapabilityReadUserData); _LIT_SECURITY_POLICY_C1(KKeyWritePolicy, ECapabilityWriteUserData); - RProperty::Define( KMtpPSUid, - KMtpPSStatus, - RProperty::EInt, - KKeyReadPolicy, + RProperty::Define( KMtpPSUid, + KMtpPSStatus, + RProperty::EInt, + KKeyReadPolicy, KKeyWritePolicy); PRINT( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::ConstructL" ) ); @@ -86,37 +87,39 @@ PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::~CMmMtpDpMetadataAccessWrapper" ) ); RemoveDummyFiles(); - delete iPlaylistArray; + delete iAbstractMediaArray; delete iMmMtpDpMetadataVideoAccess; delete iMmMtpDpMetadataMpxAccess; - + // unblock MPX - RProperty::Set( KMtpPSUid, - KMtpPSStatus, - EMtpPSStatusUninitialized); + RProperty::Set( KMtpPSUid, + KMtpPSStatus, + EMtpPSStatusUninitialized ); PRINT( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::~CMmMtpDpMetadataAccessWrapper" ) ); } // ----------------------------------------------------------------------------- -// CMmMtpDpMetadataAccessWrapper::SetPlaylist -// Set playlist to DB +// CMmMtpDpMetadataAccessWrapper::SetAbstractMediaL +// Set abstract media to DB // ----------------------------------------------------------------------------- // -EXPORT_C void CMmMtpDpMetadataAccessWrapper::SetPlaylistL( const TDesC& aPlaylistFileName, CDesCArray& aRefFileArray ) +EXPORT_C void CMmMtpDpMetadataAccessWrapper::SetAbstractMediaL( const TDesC& aAbstractMediaFileName, + CDesCArray& aRefFileArray, + TMPXGeneralCategory aCategory ) { - PRINT1( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::SetPlaylistL aPlaylistFileName = %S" ), &aPlaylistFileName ); + PRINT1( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::SetAbstractMediaL aAbstractMediaFileName = %S" ), &aAbstractMediaFileName ); - if ( !MmMtpDpUtility::IsVideoL( aPlaylistFileName, iFramework ) ) + if ( !MmMtpDpUtility::IsVideoL( aAbstractMediaFileName, iFramework ) ) { - iMmMtpDpMetadataMpxAccess->SetPlaylistL( aPlaylistFileName, aRefFileArray ); + iMmMtpDpMetadataMpxAccess->SetAbstractMediaL( aAbstractMediaFileName, aRefFileArray, aCategory ); } - PRINT( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::SetPlaylistL" ) ); + PRINT( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::SetAbstractMediaL" ) ); } // --------------------------------------------------------------------------- -// CMmMtpDpMetadataAccessWrapper::AddMediaL +// CMmMtpDpMetadataAccessWrapper::GetObjectMetadataValueL // Gets a piece of metadata from the collection // --------------------------------------------------------------------------- // @@ -154,8 +157,15 @@ { PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::SetObjectMetadataValueL" ) ); - TPtrC fullFileName( aObjectMetaData.DesC( CMTPObjectMetaData::ESuid ) ); - if ( MmMtpDpUtility::IsVideoL( fullFileName, iFramework ) ) + // In SendObjectPropList, formatCode has already know, but object handle has not been committed into db + // In that case, format couldn't be get from object manager + TUint formatCode = aObjectMetaData.Uint( CMTPObjectMetaData::EFormatCode ); + TUint formatSubCode = aObjectMetaData.Uint( CMTPObjectMetaData::EFormatSubCode ); + + TBool isVideo = EFalse; + isVideo = MmMtpDpUtility::IsVideoL( formatCode, formatSubCode ); + + if ( isVideo ) { iMmMtpDpMetadataVideoAccess->SetObjectMetadataValueL( aPropCode, aNewData, @@ -168,7 +178,6 @@ aObjectMetaData ); } - PRINT( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::SetObjectMetadataValueL" ) ); } @@ -183,22 +192,19 @@ PRINT2( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::RenameObjectL old = %S, new = %S" ), &aOldFileName, &aNewFileName ); - - TMTPFormatCode formatCode = MmMtpDpUtility::FormatFromFilename( aOldFileName ); - if ( formatCode == EMTPFormatCodeWMV ) + + if ( MmMtpDpUtility::IsVideoL( aOldFileName, iFramework ) ) { iMmMtpDpMetadataVideoAccess->RenameRecordL( aOldFileName, aNewFileName ); } else { - if ( !MmMtpDpUtility::IsVideoL( aNewFileName , iFramework ) ) - { - iMmMtpDpMetadataMpxAccess->RenameObjectL( aOldFileName, aNewFileName, formatCode ); - } - else - { - iMmMtpDpMetadataVideoAccess->RenameRecordL( aOldFileName, aNewFileName ); - } + CMTPObjectMetaData* object = CMTPObjectMetaData::NewLC(); + iFramework.ObjectMgr().ObjectL( aOldFileName, *object ); + iMmMtpDpMetadataMpxAccess->RenameObjectL( aOldFileName, + aNewFileName, + object->Uint( CMTPObjectMetaData::EFormatCode ) ); + CleanupStack::PopAndDestroy( object ); } PRINT( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::RenameObjectL" ) ); @@ -215,8 +221,8 @@ PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::DeleteObjectL" ) ); TMPXGeneralCategory category = Category( aFormatCode ); - - // Have to do this. File might not be in file system anymore, have to + + // Have to do this. File might not be in file system anymore, have to // reply on ObjectManager if ( ( aFormatCode == EMTPFormatCodeMP4Container ) || ( aFormatCode == EMTPFormatCode3GPContainer ) @@ -231,7 +237,7 @@ category = EMPXSong; } } - + switch ( category ) { case EMPXPlaylist: @@ -300,7 +306,7 @@ iMmMtpDpMetadataVideoAccess->GetImageObjPropL( aFullFileName, aWidth, aHeight ); } } -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // CMmMtpDpMetadataAccessWrapper::OpenSessionL // Called when the MTP session is initialised // ----------------------------------------------------------------------------- @@ -370,79 +376,70 @@ } // --------------------------------------------------------------------------- -// CMmMtpDpMetadataAccessWrapper::GetAllPlaylistL -// +// CMmMtpDpMetadataAccessWrapper::GetAllAbstractMediaL +// // --------------------------------------------------------------------------- -EXPORT_C void CMmMtpDpMetadataAccessWrapper::GetAllPlaylistL( const TDesC& aStoreRoot, CMPXMediaArray** aPlaylists ) +EXPORT_C void CMmMtpDpMetadataAccessWrapper::GetAllAbstractMediaL( const TDesC& aStoreRoot, CMPXMediaArray** aAbstractMedias, TMPXGeneralCategory aCategory ) { - iMmMtpDpMetadataMpxAccess->GetAllPlaylistL( aStoreRoot, aPlaylists ); + iMmMtpDpMetadataMpxAccess->GetAllAbstractMediaL( aStoreRoot, aAbstractMedias, aCategory ); } // --------------------------------------------------------------------------- // CMmMtpDpMetadataAccessWrapper::GetAllReferenceL -// +// // --------------------------------------------------------------------------- -//s -EXPORT_C void CMmMtpDpMetadataAccessWrapper::GetAllReferenceL( CMPXMedia* aPlaylist, CDesCArray& aReferences ) +// +EXPORT_C void CMmMtpDpMetadataAccessWrapper::GetAllReferenceL( CMPXMedia* aAbstractMedia, CDesCArray& aReferences ) { - iMmMtpDpMetadataMpxAccess->GetAllReferenceL( aPlaylist, aReferences ); + iMmMtpDpMetadataMpxAccess->GetAllReferenceL( aAbstractMedia, aReferences ); } // --------------------------------------------------------------------------- -// CMmMtpDpMetadataAccessWrapper::GetPlaylistNameL -// +// CMmMtpDpMetadataAccessWrapper::GetAbstractMediaNameL +// // --------------------------------------------------------------------------- // -EXPORT_C void CMmMtpDpMetadataAccessWrapper::GetPlaylistNameL( CMPXMedia* aPlaylist, TDes& aPlaylistName ) +EXPORT_C HBufC* CMmMtpDpMetadataAccessWrapper::GetAbstractMediaNameL( CMPXMedia* aAbstractMedia, TMPXGeneralCategory aCategory ) { - iMmMtpDpMetadataMpxAccess->GetPlaylistNameL( aPlaylist, aPlaylistName ); + return iMmMtpDpMetadataMpxAccess->GetAbstractMediaNameL( aAbstractMedia, aCategory ); } -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // CMmMtpDpMetadataAccessWrapper::AddObjectL -// Add object (music, video and playlist) info to DB +// Add object (music, video, playlist and abstract media) info to DB // ----------------------------------------------------------------------------- // -void CMmMtpDpMetadataAccessWrapper::AddObjectL( const TDesC& aFullFileName, TBool aIsVideo /*= EFalse */ ) +void CMmMtpDpMetadataAccessWrapper::AddObjectL( const TDesC& aFullFileName, TUint aFormatCode, TUint aSubFormatCode ) { PRINT1( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL aFullFileName = %S" ), &aFullFileName ); - if ( aFullFileName.Length() <= 0) + if ( aFullFileName.Length() <= 0 ) { User::Leave( KErrArgument ); } - if ( aIsVideo ) + if ( MmMtpDpUtility::IsVideoL( aFormatCode, aSubFormatCode ) ) { PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL Addvideo" ) ); iMmMtpDpMetadataVideoAccess->AddVideoL( aFullFileName ); } else { - if ( MmMtpDpUtility::IsVideoL( aFullFileName, iFramework ) ) + if ( aFormatCode == EMTPFormatCodeM3UPlaylist + || aFormatCode == EMTPFormatCodeMPLPlaylist + || aFormatCode == EMTPFormatCodeAbstractAudioVideoPlaylist + || aFormatCode == EMTPFormatCodeAbstractAudioPlaylist + || aFormatCode == EMTPFormatCodeAbstractVideoPlaylist + || aFormatCode == EMTPFormatCodeASXPlaylist + || aFormatCode == EMTPFormatCodePLSPlaylist ) { - PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL Addvideo" ) ); - iMmMtpDpMetadataVideoAccess->AddVideoL( aFullFileName ); + PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL AddPlaylist" ) ); + iMmMtpDpMetadataMpxAccess->AddAbstractMediaL( aFullFileName, + EMPXPlaylist ); } else { - TMTPFormatCode formatCode = MmMtpDpUtility::FormatFromFilename( aFullFileName ); - - if ( formatCode == EMTPFormatCodeM3UPlaylist - || formatCode == EMTPFormatCodeMPLPlaylist - || formatCode == EMTPFormatCodeAbstractAudioVideoPlaylist - || formatCode == EMTPFormatCodeAbstractAudioPlaylist - || formatCode == EMTPFormatCodeAbstractVideoPlaylist - || formatCode == EMTPFormatCodeASXPlaylist - || formatCode == EMTPFormatCodePLSPlaylist ) - { - PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL AddPlaylist" ) ); - iMmMtpDpMetadataMpxAccess->AddPlaylistL( aFullFileName ); - } - else - { - PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL AddSong" ) ); - iMmMtpDpMetadataMpxAccess->AddSongL( aFullFileName ); - } + PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::AddObjectL AddSong" ) ); + iMmMtpDpMetadataMpxAccess->AddSongL( aFullFileName ); } } @@ -454,8 +451,8 @@ // Get Modified content // --------------------------------------------------------------------------- // -EXPORT_C void CMmMtpDpMetadataAccessWrapper::GetModifiedContentL( const TDesC& aStorageRoot, - TInt& arrayCount, +EXPORT_C void CMmMtpDpMetadataAccessWrapper::GetModifiedContentL( const TDesC& aStorageRoot, + TInt& arrayCount, CDesCArray& aModifiedcontent ) { iMmMtpDpMetadataMpxAccess->SetStorageRootL( aStorageRoot ); @@ -479,7 +476,7 @@ return iMmMtpDpMetadataMpxAccess->IsExistL( aSuid ); } -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // CMmMtpDpMetadataAccessWrapper::AddDummyFile // Add one dummy file to dummy files array // ----------------------------------------------------------------------------- @@ -487,10 +484,10 @@ EXPORT_C void CMmMtpDpMetadataAccessWrapper::AddDummyFileL( const TDesC& aDummyFileName ) { PRINT1( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::AddDummyFile aDummyFileName(%S)" ), &aDummyFileName ); - iPlaylistArray->AppendL( aDummyFileName ); + iAbstractMediaArray->AppendL( aDummyFileName ); } -// ----------------------------------------------------------------------------- +// ----------------------------------------------------------------------------- // CMmMtpDpMetadataAccessWrapper::DeleteDummyFile // Delete one dummy file from dummy files array // ----------------------------------------------------------------------------- @@ -499,12 +496,12 @@ { PRINT1( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::DeleteDummyFile aDummyFileName(%S)" ), &aDummyFileName ); TInt pos = 0; - if ( iPlaylistArray->Count() > 0 ) + if ( iAbstractMediaArray->Count() > 0 ) { - if ( 0 == iPlaylistArray->Find( aDummyFileName, pos ) ) + if ( 0 == iAbstractMediaArray->Find( aDummyFileName, pos ) ) { PRINT1( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::DeleteDummyFile pos = %d" ), pos ); - iPlaylistArray->Delete( pos ); + iAbstractMediaArray->Delete( pos ); } } } @@ -549,26 +546,26 @@ void CMmMtpDpMetadataAccessWrapper::RemoveDummyFiles() { PRINT( _L( "MM MTP => CMmMtpDpMetadataAccessWrapper::RemoveDummyFiles" ) ); - - TInt count = iPlaylistArray->Count(); + + TInt count = iAbstractMediaArray->Count(); // Check if playlist file is a dummy file or an imported file for ( TInt i = 0; i < count; i++ ) { - if ( MmMtpDpUtility::FormatFromFilename( (*iPlaylistArray)[i] ) != + if ( MmMtpDpUtility::FormatFromFilename( (*iAbstractMediaArray)[i] ) != EMTPFormatCodeM3UPlaylist ) { // delete the virtual playlist // iFramework has release don't use iFramework.FS() - TInt err = iRfs.Delete( (*iPlaylistArray)[i] ); + TInt err = iRfs.Delete( ( *iAbstractMediaArray )[i] ); PRINT2( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::RemoveDummyFile filename = %S, err %d" ), - &( (*iPlaylistArray)[i] ), + &( (*iAbstractMediaArray)[i] ), err ); } else { // leave the Imported playlist in the file system - PRINT1( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::RemoveDummyFile, Don't delete m3u file [%S]" ), &( (*iPlaylistArray)[i] ) ); + PRINT1( _L( "MM MTP <> CMmMtpDpMetadataAccessWrapper::RemoveDummyFile, Don't delete m3u file [%S]" ), &( (*iAbstractMediaArray)[i] ) ); } } PRINT( _L( "MM MTP <= CMmMtpDpMetadataAccessWrapper::RemoveDummyFiles" ) ); @@ -579,7 +576,7 @@ // Update Music collection // --------------------------------------------------------------------------- // -EXPORT_C void CMmMtpDpMetadataAccessWrapper::UpdateMusicCollectionL() +EXPORT_C void CMmMtpDpMetadataAccessWrapper::UpdateMusicCollectionL() { iMmMtpDpMetadataMpxAccess->UpdateMusicCollectionL( ); }