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" ); |
103 // Destructor |
106 // Destructor |
104 // --------------------------------------------------------------------------- |
107 // --------------------------------------------------------------------------- |
105 // |
108 // |
106 CMmMtpDpMetadataMpxAccess::~CMmMtpDpMetadataMpxAccess() |
109 CMmMtpDpMetadataMpxAccess::~CMmMtpDpMetadataMpxAccess() |
107 { |
110 { |
108 if ( iCollectionHelper ) |
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 |
|
123 } |
|
124 |
|
125 // --------------------------------------------------------------------------- |
|
126 // CMmMtpDpMetadataMpxAccess::OpenSession |
|
127 // This is introduced to fix CollectionHelper Flush problem |
|
128 // --------------------------------------------------------------------------- |
|
129 // |
|
130 void CMmMtpDpMetadataMpxAccess::OpenSession() |
|
131 { |
|
132 // do nothing |
|
133 } |
|
134 |
|
135 // --------------------------------------------------------------------------- |
|
136 // CMmMtpDpMetadataMpxAccess::CloseSession |
|
137 // This is introduced to fix CollectionHelper Flush problem |
|
138 // --------------------------------------------------------------------------- |
|
139 // |
|
140 void CMmMtpDpMetadataMpxAccess::CloseSession() |
|
141 { |
|
142 PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::CloseSession" ) ); |
|
143 |
|
144 // flush cache |
|
145 if ( iCollectionHelper != NULL ) |
|
146 { |
|
147 PRINT( _L( "MM MTP <> Delete & Close CollectionHelper" ) ); |
|
148 iCollectionHelper->Close(); |
|
149 iCollectionHelper = NULL; |
|
150 } |
|
151 |
|
152 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::CloseSession" ) ); |
118 } |
153 } |
119 |
154 |
120 // --------------------------------------------------------------------------- |
155 // --------------------------------------------------------------------------- |
121 // CMmMtpDpMetadataMpxAccess::GetObjectMetadataValueL |
156 // CMmMtpDpMetadataMpxAccess::GetObjectMetadataValueL |
122 // Gets a piece of metadata from the collection |
157 // Gets a piece of metadata from the collection |
423 CleanupClosePushL( songAttributes ); // + songAttributes |
458 CleanupClosePushL( songAttributes ); // + songAttributes |
424 songAttributes.AppendL( KMPXMediaGeneralUri ); |
459 songAttributes.AppendL( KMPXMediaGeneralUri ); |
425 |
460 |
426 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC searchMedia setup with no problems" ) ); |
461 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC searchMedia setup with no problems" ) ); |
427 |
462 |
|
463 PERFLOGSTART(KMpxCollectionFindAllLModified); |
428 CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, |
464 CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, |
429 songAttributes.Array() ); |
465 songAttributes.Array() ); |
|
466 PERFLOGSTOP(KMpxCollectionFindAllLModified); |
430 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC foundMedia assigned from FindAllL" ) ); |
467 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::FindWMPMediaLC foundMedia assigned from FindAllL" ) ); |
431 |
468 |
432 CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes |
469 CleanupStack::PopAndDestroy( &songAttributes ); // - songAttributes |
433 CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia |
470 CleanupStack::PopAndDestroy( searchMedia ); // - searchMedia |
434 CleanupStack::PushL( foundMedia ); // + foundMedia |
471 CleanupStack::PushL( foundMedia ); // + foundMedia |
555 // Delete stale records from the audio collection, for files that have been deleted. |
592 // Delete stale records from the audio collection, for files that have been deleted. |
556 // Records are deleted everytime in CloseSession to improve the audio database performance |
593 // Records are deleted everytime in CloseSession to improve the audio database performance |
557 // as there is NOT a separate database for deleted files. |
594 // as there is NOT a separate database for deleted files. |
558 PRINT( _L( "MM MTP <> Deleting metadata for deleted files" ) ); |
595 PRINT( _L( "MM MTP <> Deleting metadata for deleted files" ) ); |
559 |
596 |
|
597 PERFLOGSTART( KMpxCollectionCleanupDeletedMediasL ); |
560 CollectionHelperL()->CleanupDeletedMediasL(); |
598 CollectionHelperL()->CleanupDeletedMediasL(); |
|
599 PERFLOGSTOP( KMpxCollectionCleanupDeletedMediasL ); |
561 |
600 |
562 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::UpdateMusicCollectionL" ) ); |
601 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::UpdateMusicCollectionL" ) ); |
563 } |
602 } |
564 |
603 |
565 // ----------------------------------------------------------------------------- |
604 // ----------------------------------------------------------------------------- |
642 media->SetTObjectValueL<TMPXGeneralType>( KMPXMediaGeneralType, EMPXItem ); |
681 media->SetTObjectValueL<TMPXGeneralType>( KMPXMediaGeneralType, EMPXItem ); |
643 |
682 |
644 TParsePtrC parse( aFullFileName ); |
683 TParsePtrC parse( aFullFileName ); |
645 media->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); |
684 media->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); |
646 media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
685 media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
|
686 media->SetTObjectValueL( KMPXMediaGeneralModified, EFalse ); |
647 |
687 |
648 PERFLOGSTART( KSetMetadataValue ); |
688 PERFLOGSTART( KSetMetadataValue ); |
649 SetMetadataValueL( aPropCode, aNewData, *media ); |
689 SetMetadataValueL( aPropCode, aNewData, *media ); |
650 PERFLOGSTOP( KSetMetadataValue ); |
690 PERFLOGSTOP( KSetMetadataValue ); |
651 |
691 |
652 // Update the song's metadata with the media object |
692 // Update the song's metadata with the media object |
653 PERFLOGSTART( KMpxCollectionSetL ); |
693 PERFLOGSTART( KMpxCollectionSetL ); |
654 CollectionHelperL()->SetL( media ); |
694 CollectionHelperL()->SetL( media ); |
655 PERFLOGSTOP( KMpxCollectionSetL ); |
695 PERFLOGSTOP( KMpxCollectionSetL ); |
|
696 |
|
697 delete iSampleData; |
|
698 iSampleData = NULL; |
656 |
699 |
657 CleanupStack::PopAndDestroy( 2, &contentIDs ); // - media, contentIDs |
700 CleanupStack::PopAndDestroy( 2, &contentIDs ); // - media, contentIDs |
658 |
701 |
659 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL" ) ); |
702 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetObjectMetadataValueL" ) ); |
660 } |
703 } |
666 void CMmMtpDpMetadataMpxAccess::SetMetadataValueL( const TUint16 aPropCode, |
709 void CMmMtpDpMetadataMpxAccess::SetMetadataValueL( const TUint16 aPropCode, |
667 const MMTPType& aNewData, |
710 const MMTPType& aNewData, |
668 CMPXMedia& aMediaProp ) |
711 CMPXMedia& aMediaProp ) |
669 { |
712 { |
670 PRINT1( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::SetMetadataValueL aPropCode = 0x%x" ), aPropCode ); |
713 PRINT1( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::SetMetadataValueL aPropCode = 0x%x" ), aPropCode ); |
671 CMTPTypeString* textData = CMTPTypeString::NewLC(); // + textData |
|
672 CMTPTypeArray* desData = NULL; |
714 CMTPTypeArray* desData = NULL; |
673 TMTPTypeUint16 uint16Data; |
715 TMTPTypeUint16 uint16Data; |
674 TMTPTypeUint32 uint32Data; |
716 TMTPTypeUint32 uint32Data; |
675 |
717 |
676 TMPXAttributeData attrib( MpxAttribFromPropL( aPropCode ) ); |
718 TMPXAttributeData attrib( MpxAttribFromPropL( aPropCode ) ); |
682 case EMTPObjectPropCodeGenre: |
724 case EMTPObjectPropCodeGenre: |
683 case EMTPObjectPropCodeAlbumName: |
725 case EMTPObjectPropCodeAlbumName: |
684 case EMTPObjectPropCodeComposer: |
726 case EMTPObjectPropCodeComposer: |
685 case EMTPObjectPropCodeAlbumArtist: |
727 case EMTPObjectPropCodeAlbumArtist: |
686 { |
728 { |
687 PRINT1( _L( "MM MTP <> SetMetadataValueL Before Copy, string length = %d" ), aNewData.Size() ); |
729 const CMTPTypeString& textData = static_cast<const CMTPTypeString&>( aNewData ); |
688 MMTPType::CopyL( aNewData, *textData ); |
730 HBufC* string = textData.StringChars().AllocLC(); // + string |
689 HBufC* string = textData->StringChars().AllocLC(); |
731 PRINT2( _L( "MM MTP <> SetMetadataValueL des.ptr() = 0x%x, string length = %d" ),string->Des().Ptr(), string->Des().Length() ); |
690 PRINT1( _L( "MM MTP <> SetMetadataValueL string length = %d" ), string->Des().Length() ); |
732 PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL string = %S" ), string ); |
691 aMediaProp.SetTextValueL( attrib, string->Des() ); |
733 aMediaProp.SetTextValueL( attrib, string->Des() ); |
692 PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL string = %S" ), string ); |
734 CleanupStack::PopAndDestroy( string ); // - string |
693 CleanupStack::PopAndDestroy(string); |
|
694 } |
735 } |
695 break; |
736 break; |
696 |
737 |
697 case EMTPObjectPropCodeTrack: |
738 case EMTPObjectPropCodeTrack: |
698 { |
739 { |
732 } |
773 } |
733 break; |
774 break; |
734 |
775 |
735 case EMTPObjectPropCodeOriginalReleaseDate: |
776 case EMTPObjectPropCodeOriginalReleaseDate: |
736 { |
777 { |
737 MMTPType::CopyL( aNewData, *textData ); |
778 const CMTPTypeString& textData = static_cast<const CMTPTypeString&>( aNewData ); |
738 |
779 |
739 TBuf<KMtpMaxStringLength> data; |
780 TBuf<KMtpMaxStringLength> data; |
740 data.Copy( textData->StringChars().Left( KMtpMaxDateTimeStringLength ) ); |
781 data.Copy( textData.StringChars().Left( KMtpMaxDateTimeStringLength ) ); |
741 PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL 0xDC99 date = %S" ), |
782 PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL 0xDC99 date = %S" ), |
742 &data ); |
783 &data ); |
743 if ( data.Length() < KMtpMaxDateTimeStringLength ) |
784 if ( data.Length() < KMtpMaxDateTimeStringLength ) |
744 { |
785 { |
745 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL 0xDC99 date string is too short" ) ); |
786 PRINT( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL 0xDC99 date string is too short" ) ); |
850 const CMTPTypeArray& mtpTypeArray = static_cast<const CMTPTypeArray&>( aNewData ); |
891 const CMTPTypeArray& mtpTypeArray = static_cast<const CMTPTypeArray&>( aNewData ); |
851 TUint32 numElements = mtpTypeArray.NumElements(); |
892 TUint32 numElements = mtpTypeArray.NumElements(); |
852 const TDesC& suid = aMediaProp.ValueText( KMPXMediaGeneralUri ); |
893 const TDesC& suid = aMediaProp.ValueText( KMPXMediaGeneralUri ); |
853 PRINT2( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData numElements = %d, suid = %S" ), numElements, &suid ); |
894 PRINT2( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData numElements = %d, suid = %S" ), numElements, &suid ); |
854 |
895 |
855 HBufC8* sampleData = HBufC8::NewLC( numElements * sizeof( TUint8 ) ); |
896 delete iSampleData; |
856 TPtr8 samplePtr = sampleData->Des(); |
897 iSampleData = NULL; |
|
898 |
|
899 iSampleData = HBufC8::NewL( numElements * sizeof( TUint8 ) ); |
|
900 TPtr8 samplePtr = iSampleData->Des(); |
857 mtpTypeArray.ToDes( samplePtr ); |
901 mtpTypeArray.ToDes( samplePtr ); |
858 RFile sampleFile; |
902 RFile sampleFile; |
859 CleanupClosePushL( sampleFile ); |
903 CleanupClosePushL( sampleFile ); |
860 User::LeaveIfError( sampleFile.Replace( iRfs, suid, EFileWrite ) ); |
904 User::LeaveIfError( sampleFile.Replace( iRfs, suid, EFileWrite ) ); |
861 User::LeaveIfError( sampleFile.Write( samplePtr ) ); |
905 User::LeaveIfError( sampleFile.Write( samplePtr ) ); |
|
906 aMediaProp.SetTObjectValueL<TInt>( KMPXMediaMTPSampleData, (TInt)iSampleData ); |
|
907 aMediaProp.SetTObjectValueL<TBool>( attrib, ETrue ); |
862 CleanupStack::PopAndDestroy( &sampleFile ); |
908 CleanupStack::PopAndDestroy( &sampleFile ); |
863 CleanupStack::PopAndDestroy( sampleData ); |
|
864 aMediaProp.SetTObjectValueL<TBool>( attrib, ETrue ); |
|
865 PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData is ready = %u" ), 1 ); |
909 PRINT1( _L( "MM MTP <> CMmMtpDpMetadataMpxAccess::SetMetadataValueL SampleData is ready = %u" ), 1 ); |
866 } |
910 } |
867 break; |
911 break; |
868 |
912 |
869 default: |
913 default: |
871 User::Leave( KErrNotSupported ); |
915 User::Leave( KErrNotSupported ); |
872 } |
916 } |
873 break; |
917 break; |
874 } |
918 } |
875 |
919 |
876 CleanupStack::PopAndDestroy( textData ); // - textData |
|
877 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetMetadataValueL" ) ); |
920 PRINT( _L( "MM MTP <= CMmMtpDpMetadataMpxAccess::SetMetadataValueL" ) ); |
878 } |
921 } |
879 |
922 |
880 // --------------------------------------------------------------------------- |
923 // --------------------------------------------------------------------------- |
881 // CMmMtpDpMetadataMpxAccess::AddSongL |
924 // CMmMtpDpMetadataMpxAccess::AddSongL |
1019 |
1062 |
1020 RArray<TMPXAttribute> abstractMediaAttributes; |
1063 RArray<TMPXAttribute> abstractMediaAttributes; |
1021 CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes |
1064 CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes |
1022 abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); |
1065 abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); |
1023 abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); |
1066 abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); |
1024 if ( aCategory == EMPXPlaylist ) |
1067 abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); |
1025 { |
|
1026 abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); |
|
1027 } |
|
1028 |
1068 |
1029 PERFLOGSTART( KMpxCollectionFindAllLBeforeAdd ); |
1069 PERFLOGSTART( KMpxCollectionFindAllLBeforeAdd ); |
1030 CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, |
1070 CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, |
1031 abstractMediaAttributes.Array() ); |
1071 abstractMediaAttributes.Array() ); |
1032 PERFLOGSTOP( KMpxCollectionFindAllLBeforeAdd ); |
1072 PERFLOGSTOP( KMpxCollectionFindAllLBeforeAdd ); |
1067 // File Path |
1107 // File Path |
1068 // |
1108 // |
1069 media->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); |
1109 media->SetTextValueL( KMPXMediaGeneralUri, aFullFileName ); |
1070 |
1110 |
1071 TParsePtrC parse( aFullFileName ); |
1111 TParsePtrC parse( aFullFileName ); |
1072 |
|
1073 media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
1112 media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
1074 if ( ( aCategory == EMPXPlaylist ) || ( aCategory == EMPXAbstractAlbum ) ) |
1113 media->SetTextValueL( KMPXMediaGeneralTitle, parse.Name() ); |
1075 { |
|
1076 media->SetTextValueL( KMPXMediaGeneralTitle, parse.Name() ); |
|
1077 } |
|
1078 media->SetTObjectValueL<TBool>( KMPXMediaGeneralSynchronized, ETrue ); |
1114 media->SetTObjectValueL<TBool>( KMPXMediaGeneralSynchronized, ETrue ); |
1079 media->SetCObjectValueL( KMPXMediaArrayContents, abstractMediaArray ); |
1115 media->SetCObjectValueL( KMPXMediaArrayContents, abstractMediaArray ); |
1080 media->SetTObjectValueL( KMPXMediaArrayCount, abstractMediaArray->Count() ); |
1116 media->SetTObjectValueL( KMPXMediaArrayCount, abstractMediaArray->Count() ); |
1081 if ( aCategory == EMPXAbstractAlbum ) |
1117 if ( aCategory == EMPXAbstractAlbum ) |
1082 { |
1118 { |
1134 |
1170 |
1135 media->SetTextValueL( KMPXMediaGeneralUri, aRefFileArray[j] ); |
1171 media->SetTextValueL( KMPXMediaGeneralUri, aRefFileArray[j] ); |
1136 // TODO: need to confirm that should set drive letter or storage root path. |
1172 // TODO: need to confirm that should set drive letter or storage root path. |
1137 TParsePtrC parse( aRefFileArray[j] ); |
1173 TParsePtrC parse( aRefFileArray[j] ); |
1138 media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
1174 media->SetTextValueL( KMPXMediaGeneralDrive, parse.Drive() ); |
1139 |
1175 media->SetTObjectValueL( KMPXMediaGeneralModified, EFalse ); |
|
1176 |
1140 // Add media into array contents |
1177 // Add media into array contents |
1141 abstractMediaArray->AppendL( media ); |
1178 abstractMediaArray->AppendL( media ); |
1142 |
1179 |
1143 CleanupStack::Pop( media ); // - media |
1180 CleanupStack::Pop( media ); // - media |
1144 } |
1181 } |
1315 |
1352 |
1316 RArray<TMPXAttribute> abstractMediaAttributes; |
1353 RArray<TMPXAttribute> abstractMediaAttributes; |
1317 CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes |
1354 CleanupClosePushL( abstractMediaAttributes ); // + abstractMediaAttributes |
1318 abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); |
1355 abstractMediaAttributes.AppendL( KMPXMediaGeneralId ); |
1319 abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); |
1356 abstractMediaAttributes.AppendL( KMPXMediaGeneralTitle ); |
1320 if ( aCategory == EMPXPlaylist ) |
1357 |
1321 { |
1358 abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); |
1322 abstractMediaAttributes.AppendL( KMPXMediaGeneralUri ); |
|
1323 } |
|
1324 |
1359 |
1325 PERFLOGSTART( KMpxCollectionGetAbstractMedia ); |
1360 PERFLOGSTART( KMpxCollectionGetAbstractMedia ); |
1326 CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, |
1361 CMPXMedia* foundMedia = CollectionHelperL()->FindAllL( *searchMedia, |
1327 abstractMediaAttributes.Array() ); |
1362 abstractMediaAttributes.Array() ); |
1328 PERFLOGSTOP( KMpxCollectionGetAbstractMedia ); |
1363 PERFLOGSTOP( KMpxCollectionGetAbstractMedia ); |
1449 HBufC* CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL( CMPXMedia* aAbstractMedia, |
1484 HBufC* CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL( CMPXMedia* aAbstractMedia, |
1450 TMPXGeneralCategory aCategory ) |
1485 TMPXGeneralCategory aCategory ) |
1451 { |
1486 { |
1452 PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL" ) ); |
1487 PRINT( _L( "MM MTP => CMmMtpDpMetadataMpxAccess::GetAbstractMediaNameL" ) ); |
1453 HBufC* name = NULL; |
1488 HBufC* name = NULL; |
1454 if ( aCategory == EMPXPlaylist ) |
1489 if ( aCategory == EMPXPlaylist || aCategory == EMPXAbstractAlbum ) |
1455 { |
1490 { |
1456 if( !aAbstractMedia->IsSupported( KMPXMediaGeneralUri ) ) |
1491 if( !aAbstractMedia->IsSupported( KMPXMediaGeneralUri ) ) |
1457 { |
1492 { |
1458 User::Leave( KErrNotSupported ); |
1493 User::Leave( KErrNotSupported ); |
1459 } |
1494 } |
1460 name = aAbstractMedia->ValueText( KMPXMediaGeneralUri ).AllocL(); |
1495 name = aAbstractMedia->ValueText( KMPXMediaGeneralUri ).AllocL(); |
1461 } |
|
1462 else if ( aCategory == EMPXAbstractAlbum ) |
|
1463 { |
|
1464 if ( !aAbstractMedia->IsSupported( KMPXMediaGeneralTitle ) ) |
|
1465 { |
|
1466 User::Leave( KErrNotSupported ); |
|
1467 } |
|
1468 name = aAbstractMedia->ValueText( KMPXMediaGeneralTitle ).AllocL(); |
|
1469 } |
1496 } |
1470 else |
1497 else |
1471 { |
1498 { |
1472 User::Leave( KErrNotSupported ); |
1499 User::Leave( KErrNotSupported ); |
1473 } |
1500 } |