--- 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 <mtp/mmtpdataproviderframework.h>
+#include <mtp/mmtpobjectmgr.h>
#include <bautils.h>
#include <e32math.h>
-#include <mtp/mmtpdataproviderframework.h>
#include <e32property.h>
-#include <MtpPrivatePSKeys.h>
+#include <mtpprivatepskeys.h>
#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( );
}