60 _LIT( KMpxCollectionSetReferenceL, "MpxCollectionSetReferenceL" ); |
60 _LIT( KMpxCollectionSetReferenceL, "MpxCollectionSetReferenceL" ); |
61 _LIT( KMpxCollectionGetAbstractMedia, "MpxCollectionGetAbstractMedia" ); |
61 _LIT( KMpxCollectionGetAbstractMedia, "MpxCollectionGetAbstractMedia" ); |
62 _LIT( KMpxCollectionGetReference, "MpxCollectionGetReference" ); |
62 _LIT( KMpxCollectionGetReference, "MpxCollectionGetReference" ); |
63 _LIT( KMpxCollectionFindAllLValidate, "MpxCollectionValidate" ); |
63 _LIT( KMpxCollectionFindAllLValidate, "MpxCollectionValidate" ); |
64 _LIT( KMpxCollectionFindAllLBeforeAdd, "MpxCollectionFindAllLBeforeAdd" ); |
64 _LIT( KMpxCollectionFindAllLBeforeAdd, "MpxCollectionFindAllLBeforeAdd" ); |
|
65 _LIT( KMpxCollectionFindAllLModified, "MpxCollectionFindAllLModified" ); |
|
66 _LIT( KMpxCollectionCleanupDeletedMediasL, "KMpxCollectionCleanupDeletedMediasL" ); |
65 _LIT( KSetMetadataValue, "SetMetadataValueL" ); |
67 _LIT( KSetMetadataValue, "SetMetadataValueL" ); |
66 #endif |
68 #endif |
67 |
69 |
68 #ifdef _DEBUG |
70 #ifdef _DEBUG |
69 _LIT( KMtpMpxPanic, "CMmMtpDpMetadataMpxAccess" ); |
71 _LIT( KMtpMpxPanic, "CMmMtpDpMetadataMpxAccess" ); |
108 if ( iCollectionHelper != NULL ) |
111 if ( iCollectionHelper != NULL ) |
109 { |
112 { |
110 iCollectionHelper->Close(); |
113 iCollectionHelper->Close(); |
111 iCollectionHelper = NULL; |
114 iCollectionHelper = NULL; |
112 } |
115 } |
|
116 |
|
117 delete iSampleData; |
113 |
118 |
114 // for performance measurement purpose |
119 // for performance measurement purpose |
115 #if defined(_DEBUG) || defined(MMMTPDP_PERFLOG) |
120 #if defined(_DEBUG) || defined(MMMTPDP_PERFLOG) |
116 delete iPerfLog; |
121 delete iPerfLog; |
117 #endif |
122 #endif |
391 |
396 |
392 searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); |
397 searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); |
393 searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); |
398 searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); |
394 searchMedia->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, |
399 searchMedia->SetTObjectValueL<TMPXItemId>( KMPXMediaGeneralId, |
395 KMtpInvalidSongID ); |
400 KMtpInvalidSongID ); |
396 searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); |
401 if ( iStoreRoot.Length() > 0 ) |
|
402 { |
|
403 searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); |
|
404 } |
397 |
405 |
398 RArray<TMPXAttribute> songAttributes; |
406 RArray<TMPXAttribute> songAttributes; |
399 CleanupClosePushL( songAttributes ); // + songAttributes |
407 CleanupClosePushL( songAttributes ); // + songAttributes |
400 songAttributes.AppendL( KMPXMediaGeneralId ); |
408 songAttributes.AppendL( KMPXMediaGeneralId ); |
401 |
409 |
453 CleanupClosePushL( songAttributes ); // + songAttributes |
461 CleanupClosePushL( songAttributes ); // + songAttributes |
454 songAttributes.AppendL( KMPXMediaGeneralUri ); |
462 songAttributes.AppendL( KMPXMediaGeneralUri ); |
455 |
463 |
456 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC searchMedia setup with no problems" ) ); |
464 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC searchMedia setup with no problems" ) ); |
457 |
465 |
|
466 PERFLOGSTART(KMpxCollectionFindAllLModified); |
458 CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, |
467 CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, |
459 songAttributes.Array() ); |
468 songAttributes.Array() ); |
|
469 PERFLOGSTOP(KMpxCollectionFindAllLModified); |
460 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC foundMedia assigned from FindAllL" ) ); |
470 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC foundMedia assigned from FindAllL" ) ); |
461 |
471 |
462 CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes |
472 CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes |
463 CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia |
473 CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia |
464 CleanupStack::PushL( foundMedia ); // + foundMedia |
474 CleanupStack::PushL( foundMedia ); // + foundMedia |
585 // Delete stale records from the audio collection, for files that have been deleted. |
595 // Delete stale records from the audio collection, for files that have been deleted. |
586 // Records are deleted everytime in CloseSession to improve the audio database performance |
596 // Records are deleted everytime in CloseSession to improve the audio database performance |
587 // as there is NOT a separate database for deleted files. |
597 // as there is NOT a separate database for deleted files. |
588 PRINT( _L( "MM MTP <> Deleting metadata for deleted files" ) ); |
598 PRINT( _L( "MM MTP <> Deleting metadata for deleted files" ) ); |
589 |
599 |
|
600 PERFLOGSTART( KMpxCollectionCleanupDeletedMediasL ); |
590 CollectionHelperL()->CleanupDeletedMediasL(); |
601 CollectionHelperL()->CleanupDeletedMediasL(); |
|
602 PERFLOGSTOP( KMpxCollectionCleanupDeletedMediasL ); |
591 |
603 |
592 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::UpdateMusicCollectionL" ) ); |
604 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::UpdateMusicCollectionL" ) ); |
593 } |
605 } |
594 |
606 |
595 // ----------------------------------------------------------------------------- |
607 // ----------------------------------------------------------------------------- |
682 |
694 |
683 // Update the song's metadata with the media object |
695 // Update the song's metadata with the media object |
684 PERFLOGSTART( KMpxCollectionSetL ); |
696 PERFLOGSTART( KMpxCollectionSetL ); |
685 CollectionHelperL()->SetL( media ); |
697 CollectionHelperL()->SetL( media ); |
686 PERFLOGSTOP( KMpxCollectionSetL ); |
698 PERFLOGSTOP( KMpxCollectionSetL ); |
|
699 |
|
700 delete iSampleData; |
|
701 iSampleData = NULL; |
687 |
702 |
688 CleanupStack::PopAndDestroy( 2, &contentIDs ); // - media, contentIDs |
703 CleanupStack::PopAndDestroy( 2, &contentIDs ); // - media, contentIDs |
689 |
704 |
690 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL" ) ); |
705 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL" ) ); |
691 } |
706 } |
879 const CMTPTypeArray& mtpTypeArray = static_cast<const CMTPTypeArray&>( aNewData ); |
894 const CMTPTypeArray& mtpTypeArray = static_cast<const CMTPTypeArray&>( aNewData ); |
880 TUint32 numElements = mtpTypeArray.NumElements(); |
895 TUint32 numElements = mtpTypeArray.NumElements(); |
881 const TDesC& suid = aMediaProp.ValueText( KMPXMediaGeneralUri ); |
896 const TDesC& suid = aMediaProp.ValueText( KMPXMediaGeneralUri ); |
882 PRINT2( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData numElements = %d, suid = %S" ), numElements, &suid ); |
897 PRINT2( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData numElements = %d, suid = %S" ), numElements, &suid ); |
883 |
898 |
884 HBufC8* sampleData = HBufC8::NewLC( numElements * sizeof( TUint8 ) ); |
899 delete iSampleData; |
885 TPtr8 samplePtr = sampleData->Des(); |
900 iSampleData = NULL; |
|
901 |
|
902 iSampleData = HBufC8::NewL( numElements * sizeof( TUint8 ) ); |
|
903 TPtr8 samplePtr = iSampleData->Des(); |
886 mtpTypeArray.ToDes( samplePtr ); |
904 mtpTypeArray.ToDes( samplePtr ); |
887 RFile sampleFile; |
905 RFile sampleFile; |
888 CleanupClosePushL( sampleFile ); |
906 CleanupClosePushL( sampleFile ); |
889 User::LeaveIfError( sampleFile.Replace( iRfs, suid, EFileWrite ) ); |
907 User::LeaveIfError( sampleFile.Replace( iRfs, suid, EFileWrite ) ); |
890 User::LeaveIfError( sampleFile.Write( samplePtr ) ); |
908 User::LeaveIfError( sampleFile.Write( samplePtr ) ); |
|
909 aMediaProp.SetTObjectValueL<TInt>( KMPXMediaMTPSampleData, (TInt)iSampleData ); |
|
910 aMediaProp.SetTObjectValueL<TBool>( attrib, ETrue ); |
891 CleanupStack::PopAndDestroy( &sampleFile ); |
911 CleanupStack::PopAndDestroy( &sampleFile ); |
892 CleanupStack::PopAndDestroy( sampleData ); |
|
893 aMediaProp.SetTObjectValueL<TBool>( attrib, ETrue ); |
|
894 PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData is ready = %u" ), 1 ); |
912 PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData is ready = %u" ), 1 ); |
895 } |
913 } |
896 break; |
914 break; |
897 |
915 |
898 default: |
916 default: |
924 CleanupStack::PushL( searchMedia ); // + searchMedia |
942 CleanupStack::PushL( searchMedia ); // + searchMedia |
925 |
943 |
926 searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); |
944 searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); |
927 searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); |
945 searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXSong ); |
928 searchMedia->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); |
946 searchMedia->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); |
929 searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); |
947 |
|
948 TParsePtrC parse( aFullFileName ); |
|
949 searchMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
930 |
950 |
931 RArray<TMPXAttribute> songAttributes; |
951 RArray<TMPXAttribute> songAttributes; |
932 CleanupClosePushL( songAttributes ); // + songAttributes |
952 CleanupClosePushL( songAttributes ); // + songAttributes |
933 songAttributes.AppendL( KMPXMediaGeneralUri ); |
953 songAttributes.AppendL( KMPXMediaGeneralUri ); |
934 |
954 |
1156 media->SetTextValueL( KMPXMediaGeneralUri, aRefFileArray[j] ); |
1176 media->SetTextValueL( KMPXMediaGeneralUri, aRefFileArray[j] ); |
1157 // TODO: need to confirm that should set drive letter or storage root path. |
1177 // TODO: need to confirm that should set drive letter or storage root path. |
1158 TParsePtrC parse( aRefFileArray[j] ); |
1178 TParsePtrC parse( aRefFileArray[j] ); |
1159 media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
1179 media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
1160 media->SetTObjectValueL( KMPXMediaGeneralModified, EFalse ); |
1180 media->SetTObjectValueL( KMPXMediaGeneralModified, EFalse ); |
1161 |
1181 |
1162 // Add media into array contents |
1182 // Add media into array contents |
1163 abstractMediaArray->AppendL( media ); |
1183 abstractMediaArray->AppendL( media ); |
1164 |
1184 |
1165 CleanupStack::Pop( media ); // - media |
1185 CleanupStack::Pop( media ); // - media |
1166 } |
1186 } |
1566 CleanupStack::PushL( searchMedia ); // + searchMedia |
1586 CleanupStack::PushL( searchMedia ); // + searchMedia |
1567 |
1587 |
1568 searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); |
1588 searchMedia->SetTObjectValueL( KMPXMediaGeneralType, EMPXItem ); |
1569 searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXPlaylist ); |
1589 searchMedia->SetTObjectValueL( KMPXMediaGeneralCategory, EMPXPlaylist ); |
1570 searchMedia->SetTextValueL( KMPXMediaGeneralUri, aSuid ); |
1590 searchMedia->SetTextValueL( KMPXMediaGeneralUri, aSuid ); |
1571 searchMedia->SetTextValueL( KMPXMediaGeneralDrive, iStoreRoot ); |
1591 |
|
1592 TParsePtrC parse( aSuid ); |
|
1593 searchMedia->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
1572 |
1594 |
1573 RArray<TMPXAttribute> playlistAttributes; |
1595 RArray<TMPXAttribute> playlistAttributes; |
1574 CleanupClosePushL( playlistAttributes ); // + playlistAttributes |
1596 CleanupClosePushL( playlistAttributes ); // + playlistAttributes |
1575 playlistAttributes.AppendL( KMPXMediaGeneralId ); |
1597 playlistAttributes.AppendL( KMPXMediaGeneralId ); |
1576 playlistAttributes.AppendL( KMPXMediaGeneralTitle ); |
1598 playlistAttributes.AppendL( KMPXMediaGeneralTitle ); |