35 #include <avkon.rsg> |
35 #include <avkon.rsg> |
36 #include <avkon.mbg> |
36 #include <avkon.mbg> |
37 #include <sendui.h> |
37 #include <sendui.h> |
38 #include <CMessageData.h> |
38 #include <CMessageData.h> |
39 #include <centralrepository.h> |
39 #include <centralrepository.h> |
40 #include <mprofileengine.h> |
40 #include <MProfileEngine.h> |
41 #include <akndlgshut.h> |
41 #include <AknDlgShut.h> |
42 #ifdef RD_MULTIPLE_DRIVE |
42 #ifdef RD_MULTIPLE_DRIVE |
43 #include <driveinfo.h> |
43 #include <driveinfo.h> |
44 #endif //RD_MULTIPLE_DRIVE |
44 #endif //RD_MULTIPLE_DRIVE |
45 |
45 |
46 #include <upnpcopycommand.h> |
46 #include <upnpcopycommand.h> |
47 #include <AiwServiceHandler.h> //Copy to remote feature |
47 #include <AiwServiceHandler.h> //Copy to remote feature |
48 |
48 |
49 #include <mediarecognizer.h> |
49 #include <mediarecognizer.h> |
50 #include <featmgr.h> |
50 #include <featmgr.h> |
51 #include <aknmediatorfacade.h> |
51 #include <AknMediatorFacade.h> |
52 #include <MediatorCommandInitiator.h> |
52 #include <MediatorCommandInitiator.h> |
53 #include <mediatordomainuids.h> |
53 #include <MediatorDomainUIDs.h> |
54 |
54 |
55 #include <mplayersecondarydisplayapi.h> |
55 #include <mplayersecondarydisplayapi.h> |
56 #include <data_caging_path_literals.hrh> |
56 #include <data_caging_path_literals.hrh> |
57 #include <layoutmetadata.cdl.h> |
57 #include <layoutmetadata.cdl.h> |
58 #include <mpxplaybackframeworkdefs.h> |
58 #include <mpxplaybackframeworkdefs.h> |
128 |
128 |
129 const TInt KIncrementalDelayNone = 0; |
129 const TInt KIncrementalDelayNone = 0; |
130 const TInt KIncrementalDelayHalfSecond = 1000000; |
130 const TInt KIncrementalDelayHalfSecond = 1000000; |
131 const TInt KIncrementalFetchBlockSize = 400; |
131 const TInt KIncrementalFetchBlockSize = 400; |
132 const TInt KIncrementalDirectionCount = 8; |
132 const TInt KIncrementalDirectionCount = 8; |
133 const TInt KProgressBarMaxValue = 100; // Max Value for the Progress Info bar |
|
134 const TInt KWaitNoteImpUid = 0x101FFC6C; // refresh wait note UID |
133 const TInt KWaitNoteImpUid = 0x101FFC6C; // refresh wait note UID |
135 #ifdef __ENABLE_PODCAST_IN_MUSIC_MENU |
134 #ifdef __ENABLE_PODCAST_IN_MUSIC_MENU |
136 const TInt KMusicMenuPodcastMenuItemIndex = 4; // podcast menu item index |
135 const TInt KMusicMenuPodcastMenuItemIndex = 4; // podcast menu item index |
137 #define KPodcastCollectionUid 0x101FFC3C |
136 #define KPodcastCollectionUid 0x101FFC3C |
138 #endif |
137 #endif |
320 iPlayIndex( KErrNotFound ), |
322 iPlayIndex( KErrNotFound ), |
321 iSetMediaLCount( KErrNotFound ), |
323 iSetMediaLCount( KErrNotFound ), |
322 iCurrentHighlightedIndex( KErrNotFound ), |
324 iCurrentHighlightedIndex( KErrNotFound ), |
323 iCachedCommand( KErrNotFound ), |
325 iCachedCommand( KErrNotFound ), |
324 iNoteType( EMPXNoteNotDefined ), |
326 iNoteType( EMPXNoteNotDefined ), |
325 iFirstIncrementalBatch( ETrue ) |
327 iFirstIncrementalBatch( ETrue ), |
|
328 iDialogDismissed( EFalse ), |
|
329 iTitleWait( NULL ) |
326 { |
330 { |
327 MPX_FUNC( "CMPXCollectionViewHgImp::CMPXCollectionViewHgImp" ); |
331 MPX_FUNC( "CMPXCollectionViewHgImp::CMPXCollectionViewHgImp" ); |
328 iUsingNokiaService = EFalse; |
332 iUsingNokiaService = EFalse; |
329 #ifdef __ENABLE_MSK |
333 #ifdef __ENABLE_MSK |
330 iCurrentMskId = KErrNotFound; |
334 iCurrentMskId = KErrNotFound; |
655 // tracks level in Tbone View |
656 // tracks level in Tbone View |
656 TMPXItemId trackId = albumTrack->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
657 TMPXItemId trackId = albumTrack->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
657 const TDesC& trackTitle( albumTrack->ValueText( KMPXMediaGeneralTitle ) ); |
658 const TDesC& trackTitle( albumTrack->ValueText( KMPXMediaGeneralTitle ) ); |
658 // create the item path to delete |
659 // create the item path to delete |
659 |
660 |
660 if ( path->Levels() == 3 ) |
661 if ( 2 == path->Levels() ) |
|
662 { |
|
663 path->Back(); |
|
664 path->AppendL(3); |
|
665 } |
|
666 else if ( path->Levels() == 3 ) |
661 { |
667 { |
662 path->Back(); |
668 path->Back(); |
663 } |
669 } |
664 else if (path->Levels() == 4) |
670 else if (path->Levels() == 4) |
665 { |
671 { |
666 path->Back(); |
672 path->Back(); |
667 path->Back(); |
673 path->Back(); |
668 } |
674 } |
669 |
675 |
670 |
676 TInt currentIndex( iContainer->CurrentLbxItemIndex() ); |
671 path->AppendL(containerId); |
677 const CMPXMediaArray& albums = listboxArray->MediaArray(); |
672 path->AppendL(trackId); |
678 CMPXMedia* album( albums.AtL( currentIndex ) ); |
|
679 const TMPXItemId albumId = album->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
|
680 |
|
681 path->AppendL(albumId); |
|
682 path->AppendL(trackId); |
|
683 |
|
684 MPX_DEBUG_PATH(*path); |
673 |
685 |
674 waitNoteText = StringLoader::LoadLC( |
686 waitNoteText = StringLoader::LoadLC( |
675 R_MPX_QTN_ALBUM_WAITING_DELETING, trackTitle ); |
687 R_MPX_QTN_ALBUM_WAITING_DELETING, trackTitle ); |
676 promptTxt = StringLoader::LoadLC( |
688 promptTxt = StringLoader::LoadLC( |
677 R_MPX_QTN_QUERY_COMMON_CONF_DELETE, |
689 R_MPX_QTN_QUERY_COMMON_CONF_DELETE, |
796 if ( !isIgnore ) |
811 if ( !isIgnore ) |
797 { |
812 { |
798 // Create a copy of collection path |
813 // Create a copy of collection path |
799 CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() ); |
814 CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() ); |
800 CleanupStack::PushL( path ); |
815 CleanupStack::PushL( path ); |
|
816 |
|
817 if ( 2 == path->Levels() ) |
|
818 { |
|
819 path->Back(); |
|
820 path->AppendL(3); |
|
821 |
|
822 const CMPXMediaArray& albums = listboxArray->MediaArray(); |
|
823 |
|
824 RArray<TMPXItemId> ids; |
|
825 CleanupClosePushL(ids); |
|
826 |
|
827 TInt albumCount = albums.Count(); |
|
828 for (TInt i=0; i<albumCount; ++i) |
|
829 { |
|
830 CMPXMedia* album = albums.AtL(i); |
|
831 const TMPXItemId id = album->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
|
832 ids.AppendL(id); |
|
833 } |
|
834 path->AppendL(ids.Array()); // top level items |
|
835 ids.Reset(); |
|
836 path->Set(currentIndex); |
|
837 CleanupStack::PopAndDestroy(&ids); |
|
838 } |
|
839 MPX_DEBUG_PATH(*path); |
|
840 |
801 HBufC* promptTxt( NULL ); |
841 HBufC* promptTxt( NULL ); |
802 HBufC* waitNoteText( NULL ); |
842 HBufC* waitNoteText( NULL ); |
803 TInt waitNoteCBA( R_AVKON_SOFTKEYS_EMPTY ); |
843 TInt waitNoteCBA( R_AVKON_SOFTKEYS_EMPTY ); |
804 MPX_DEBUG2( "CMPXCollectionViewHgImp::DeleteSelectedItemsL delete array count = %d", arrayCount ); |
844 MPX_DEBUG2( "CMPXCollectionViewHgImp::DeleteSelectedItemsL delete array count = %d", arrayCount ); |
805 |
845 |
806 // delete single song, not show wait note |
|
807 TBool singleSong( EFalse ); |
|
808 TMPXGeneralType containerType( |
846 TMPXGeneralType containerType( |
809 containerMedia.ValueTObjectL<TMPXGeneralType>( |
847 containerMedia.ValueTObjectL<TMPXGeneralType>( |
810 KMPXMediaGeneralType ) ); |
848 KMPXMediaGeneralType ) ); |
811 TMPXGeneralCategory containerCategory( |
849 TMPXGeneralCategory containerCategory( |
812 containerMedia.ValueTObjectL<TMPXGeneralCategory>( |
850 containerMedia.ValueTObjectL<TMPXGeneralCategory>( |
904 else |
942 else |
905 { |
943 { |
906 if ( ( type == EMPXItem && category == EMPXSong ) || |
944 if ( ( type == EMPXItem && category == EMPXSong ) || |
907 ( type == EMPXItem && category == EMPXPlaylist ) ) |
945 ( type == EMPXItem && category == EMPXPlaylist ) ) |
908 { |
946 { |
909 // delete single song |
|
910 if ( type == EMPXItem && category == EMPXSong ) |
|
911 { |
|
912 singleSong = ETrue; |
|
913 } |
|
914 // tracks level, or deleting a playlist |
947 // tracks level, or deleting a playlist |
915 waitNoteText = StringLoader::LoadLC( |
948 waitNoteText = StringLoader::LoadLC( |
916 R_MPX_QTN_ALBUM_WAITING_DELETING, title ); |
949 R_MPX_QTN_ALBUM_WAITING_DELETING, title ); |
917 promptTxt = StringLoader::LoadLC( |
950 promptTxt = StringLoader::LoadLC( |
918 R_MPX_QTN_QUERY_COMMON_CONF_DELETE, |
951 R_MPX_QTN_QUERY_COMMON_CONF_DELETE, |
1388 CleanupStack::PopAndDestroy( arg ); |
1417 CleanupStack::PopAndDestroy( arg ); |
1389 } |
1418 } |
1390 } |
1419 } |
1391 |
1420 |
1392 // --------------------------------------------------------------------------- |
1421 // --------------------------------------------------------------------------- |
1393 // Start a Progress note |
1422 // Start a Wait note |
1394 // --------------------------------------------------------------------------- |
1423 // --------------------------------------------------------------------------- |
1395 // |
1424 // |
1396 void CMPXCollectionViewHgImp::StartProgressNoteL() |
1425 void CMPXCollectionViewHgImp::StartDeleteWaitNoteL() |
1397 { |
1426 { |
1398 iProgressDialog = new (ELeave) CAknProgressDialog( |
1427 iWaitDialog = new (ELeave) CAknWaitDialog( |
1399 (REINTERPRET_CAST(CEikDialog**, &iProgressDialog)), |
1428 (REINTERPRET_CAST(CEikDialog**, &iWaitDialog)), |
1400 ETrue); |
1429 ETrue); |
1401 iProgressDialog->PrepareLC(R_MPX_PROGRESS_NOTE); |
1430 iWaitDialog->PrepareLC(R_MPX_WAIT_NOTE); |
1402 iProgressInfo = iProgressDialog->GetProgressInfoL(); |
1431 |
1403 iProgressDialog->SetCallback(this); |
1432 iWaitDialog->SetCallback(this); |
1404 iProgressDialog->RunLD(); |
1433 iWaitDialog->RunLD(); |
1405 iProgressInfo->SetFinalValue(KProgressBarMaxValue); |
|
1406 } |
1434 } |
1407 |
1435 |
1408 // --------------------------------------------------------------------------- |
1436 // --------------------------------------------------------------------------- |
1409 // Update the Progress note |
1437 // Update the Progress note |
1410 // --------------------------------------------------------------------------- |
1438 // --------------------------------------------------------------------------- |
1411 // |
1439 // |
1412 void CMPXCollectionViewHgImp::UpdateProcessL( TInt aProgress, const TDesC& aProgressText ) |
1440 void CMPXCollectionViewHgImp::UpdateProcessL( const TDesC& aProgressText ) |
1413 { |
1441 { |
1414 if ( iProgressDialog ) |
1442 if ( iWaitDialog ) |
1415 { |
1443 { |
1416 iProgressDialog->SetTextL(aProgressText); |
1444 iWaitDialog->SetTextL(aProgressText); |
1417 iProgressInfo->SetAndDraw(aProgress); |
|
1418 } |
1445 } |
1419 } |
1446 } |
1420 |
1447 |
1421 // --------------------------------------------------------------------------- |
1448 // --------------------------------------------------------------------------- |
1422 // Close waitnote dialog |
1449 // Close waitnote dialog |
2894 CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() ); |
2926 CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() ); |
2895 CleanupStack::PushL( path ); |
2927 CleanupStack::PushL( path ); |
2896 |
2928 |
2897 CMPXMedia* albumTrack = iContainer->SelectedItemMediaL(); |
2929 CMPXMedia* albumTrack = iContainer->SelectedItemMediaL(); |
2898 TMPXItemId trackId = albumTrack->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
2930 TMPXItemId trackId = albumTrack->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
2899 |
2931 // create the item path to send |
2900 path->Back(); |
2932 |
2901 path->Back(); |
2933 if ( path->Levels() == 3 ) //TBone album level |
|
2934 { |
|
2935 path->Back(); |
|
2936 } |
|
2937 else if (path->Levels() == 4) //TBone Song Node level |
|
2938 { |
|
2939 path->Back(); |
|
2940 path->Back(); |
|
2941 } |
2902 path->AppendL(aContainerId); |
2942 path->AppendL(aContainerId); |
2903 path->AppendL(trackId); |
2943 path->AppendL(trackId); |
2904 |
2944 |
2905 RArray<TMPXAttribute> attrs; |
2945 RArray<TMPXAttribute> attrs; |
2906 CleanupClosePushL(attrs); |
2946 CleanupClosePushL(attrs); |
3672 void CMPXCollectionViewHgImp::HandleAddCompletedL( |
3712 void CMPXCollectionViewHgImp::HandleAddCompletedL( |
3673 CMPXMedia* aPlaylist, TInt aError ) |
3713 CMPXMedia* aPlaylist, TInt aError ) |
3674 { |
3714 { |
3675 MPX_FUNC( "CMPXCollectionViewHgImp::HandleAddCompletedL" ); |
3715 MPX_FUNC( "CMPXCollectionViewHgImp::HandleAddCompletedL" ); |
3676 iAddingToNewPlaylist = EFalse; |
3716 iAddingToNewPlaylist = EFalse; |
|
3717 iDialogDismissed = EFalse; |
3677 iCommonUiHelper->DismissWaitNoteL(); |
3718 iCommonUiHelper->DismissWaitNoteL(); |
3678 HandleCommandL( EMPXCmdHandleExternalCommand ); |
3719 HandleCommandL( EMPXCmdHandleExternalCommand ); |
3679 if ( aError == KErrNone ) |
3720 if ( aError == KErrNone ) |
3680 { |
3721 { |
3681 // Show confirmation note |
3722 // Show confirmation note |
3684 iPlaylistId = aPlaylist->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ); |
3725 iPlaylistId = aPlaylist->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ); |
3685 } |
3726 } |
3686 MPX_DEBUG2( "CMPXCollectionViewHgImp::HandleAddCompletedL iPlaylistId = 0x%x", iPlaylistId.iId1 ); |
3727 MPX_DEBUG2( "CMPXCollectionViewHgImp::HandleAddCompletedL iPlaylistId = 0x%x", iPlaylistId.iId1 ); |
3687 if ( iCurrentPlaylistOp != EMPXOpPLCreating ) |
3728 if ( iCurrentPlaylistOp != EMPXOpPLCreating ) |
3688 { |
3729 { |
3689 HBufC* confirmTxt( NULL ); |
3730 if( !iTitleWait ) |
3690 const TDesC& title( aPlaylist->ValueText( KMPXMediaGeneralTitle ) ); |
3731 { |
3691 TMPlayerSecondaryDisplayNote noteId( EMPlayerNoteNone ); |
3732 delete iTitleWait; |
3692 if ( iNumSongAddedToPlaylist > 1 ) |
3733 iTitleWait = NULL; |
3693 { |
3734 } |
3694 confirmTxt = StringLoader::LoadLC( |
3735 iTitleWait = aPlaylist->ValueText( KMPXMediaGeneralTitle ).AllocL(); |
3695 R_MPX_QTN_MUS_MULTIPLE_TRACKS_ADDED_TO_PL, |
3736 if( iDialogDismissed ) |
3696 title, iNumSongAddedToPlaylist ); |
3737 { |
3697 noteId = EMPlayerNoteAddManySongToPlaylist; |
3738 ShowAddedItemsDialogL(); |
3698 } |
3739 } |
3699 else |
|
3700 { |
|
3701 confirmTxt = StringLoader::LoadLC( |
|
3702 R_MPX_QTN_MUS_NOTE_TRACK_ADDED_TO_PL, title ); |
|
3703 noteId = EMPlayerNoteAddSongToPlaylist; |
|
3704 } |
|
3705 |
|
3706 CAknConfirmationNote* note = new ( ELeave ) CAknConfirmationNote(); |
|
3707 |
|
3708 note->PublishDialogL( |
|
3709 noteId, |
|
3710 KMPlayerNoteCategory ); |
|
3711 |
|
3712 if ( iCoverDisplay ) |
|
3713 { |
|
3714 CAknMediatorFacade* covercl = AknMediatorFacade( note ); |
|
3715 if ( covercl ) |
|
3716 { |
|
3717 covercl->BufStream() << title; |
|
3718 if ( iNumSongAddedToPlaylist > 1 ) |
|
3719 { |
|
3720 covercl->BufStream().WriteInt32L( iNumSongAddedToPlaylist ); |
|
3721 } |
|
3722 } |
|
3723 } |
|
3724 |
|
3725 note->ExecuteLD( *confirmTxt ); |
|
3726 CleanupStack::PopAndDestroy( confirmTxt ); |
|
3727 |
|
3728 } |
3740 } |
3729 else // iCurrentPlaylistOp == EMPXOpPLCreating |
3741 else // iCurrentPlaylistOp == EMPXOpPLCreating |
3730 { |
3742 { |
3731 // Re-open the collection, because we cannot |
3743 // Re-open the collection, because we cannot |
3732 // depend on the change events that could be a race condition |
3744 // depend on the change events that could be a race condition |
3743 delete aPlaylist; |
3755 delete aPlaylist; |
3744 if ( iContainer ) |
3756 if ( iContainer ) |
3745 { |
3757 { |
3746 iContainer->ClearLbxSelection(); |
3758 iContainer->ClearLbxSelection(); |
3747 } |
3759 } |
|
3760 } |
|
3761 |
|
3762 // --------------------------------------------------------------------------- |
|
3763 // Shows the added items dialog |
|
3764 // --------------------------------------------------------------------------- |
|
3765 // |
|
3766 void CMPXCollectionViewHgImp::ShowAddedItemsDialogL() |
|
3767 { |
|
3768 HBufC* confirmTxt( NULL ); |
|
3769 |
|
3770 TMPlayerSecondaryDisplayNote noteId( EMPlayerNoteNone ); |
|
3771 if ( iNumSongAddedToPlaylist > 1 ) |
|
3772 { |
|
3773 |
|
3774 confirmTxt = StringLoader::LoadLC( |
|
3775 R_MPX_QTN_MUS_MULTIPLE_TRACKS_ADDED_TO_PL, |
|
3776 iTitleWait->Des(), iNumSongAddedToPlaylist ); |
|
3777 noteId = EMPlayerNoteAddManySongToPlaylist; |
|
3778 } |
|
3779 else |
|
3780 { |
|
3781 confirmTxt = StringLoader::LoadLC( |
|
3782 R_MPX_QTN_MUS_NOTE_TRACK_ADDED_TO_PL, iTitleWait->Des() ); |
|
3783 noteId = EMPlayerNoteAddSongToPlaylist; |
|
3784 } |
|
3785 |
|
3786 CAknConfirmationNote* note = new ( ELeave ) CAknConfirmationNote(); |
|
3787 |
|
3788 note->PublishDialogL( |
|
3789 noteId, |
|
3790 KMPlayerNoteCategory ); |
|
3791 |
|
3792 if ( iCoverDisplay ) |
|
3793 { |
|
3794 CAknMediatorFacade* covercl = AknMediatorFacade( note ); |
|
3795 if ( covercl ) |
|
3796 { |
|
3797 covercl->BufStream() << iTitleWait; |
|
3798 if ( iNumSongAddedToPlaylist > 1 ) |
|
3799 { |
|
3800 covercl->BufStream().WriteInt32L( iNumSongAddedToPlaylist ); |
|
3801 } |
|
3802 } |
|
3803 } |
|
3804 note->ExecuteLD( *confirmTxt ); |
|
3805 CleanupStack::PopAndDestroy( confirmTxt ); |
|
3806 if( iTitleWait ) |
|
3807 { |
|
3808 delete iTitleWait; |
|
3809 iTitleWait = NULL; |
|
3810 } |
3748 } |
3811 } |
3749 |
3812 |
3750 // ----------------------------------------------------------------------------- |
3813 // ----------------------------------------------------------------------------- |
3751 // Handles the completion of setting a media event. |
3814 // Handles the completion of setting a media event. |
3752 // ----------------------------------------------------------------------------- |
3815 // ----------------------------------------------------------------------------- |
4090 // Callback method. Get's called when a dialog is dismissed |
4153 // Callback method. Get's called when a dialog is dismissed |
4091 // --------------------------------------------------------------------------- |
4154 // --------------------------------------------------------------------------- |
4092 // |
4155 // |
4093 void CMPXCollectionViewHgImp::DialogDismissedL( TInt aButtonId ) |
4156 void CMPXCollectionViewHgImp::DialogDismissedL( TInt aButtonId ) |
4094 { |
4157 { |
|
4158 iDialogDismissed = ETrue; |
4095 MPX_FUNC( "CMPXCollectionViewHgImp::DialogDismissedL" ); |
4159 MPX_FUNC( "CMPXCollectionViewHgImp::DialogDismissedL" ); |
4096 if ( iCommandInitiator ) |
4160 if ( iCommandInitiator ) |
4097 { |
4161 { |
4098 iCommandInitiator->CancelCommand( KMediatorSecondaryDisplayDomain, |
4162 iCommandInitiator->CancelCommand( KMediatorSecondaryDisplayDomain, |
4099 KMPlayerNoteCategory, |
4163 KMPlayerNoteCategory, |
5445 { |
5497 { |
5446 iCurrentMediaLOp = EMPXOpMediaLFindInMusicShopSongDetails; |
5498 iCurrentMediaLOp = EMPXOpMediaLFindInMusicShopSongDetails; |
5447 } |
5499 } |
5448 CMPXCollectionPath* path = iCollectionUtility->Collection().PathL(); |
5500 CMPXCollectionPath* path = iCollectionUtility->Collection().PathL(); |
5449 CleanupStack::PushL( path ); |
5501 CleanupStack::PushL( path ); |
|
5502 |
|
5503 if ( 2 == path->Levels() ) |
|
5504 { |
|
5505 path->Back(); |
|
5506 path->AppendL(3); |
|
5507 |
|
5508 const CMPXMediaArray& albums = listboxArray->MediaArray(); |
|
5509 |
|
5510 RArray<TMPXItemId> ids; |
|
5511 CleanupClosePushL(ids); |
|
5512 |
|
5513 TInt albumCount = albums.Count(); |
|
5514 for (TInt i=0; i<albumCount; ++i) |
|
5515 { |
|
5516 CMPXMedia* album = albums.AtL(i); |
|
5517 const TMPXItemId id = album->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId); |
|
5518 ids.AppendL(id); |
|
5519 } |
|
5520 path->AppendL(ids.Array()); // top level items |
|
5521 ids.Reset(); |
|
5522 CleanupStack::PopAndDestroy(&ids); |
|
5523 } |
5450 path->Set( iContainer->CurrentLbxItemIndex() ); |
5524 path->Set( iContainer->CurrentLbxItemIndex() ); |
5451 RArray<TMPXAttribute> attrs; |
5525 RArray<TMPXAttribute> attrs; |
5452 CleanupClosePushL( attrs ); |
5526 CleanupClosePushL( attrs ); |
5453 attrs.Append( |
5527 attrs.Append( |
5454 TMPXAttribute( KMPXMediaIdGeneral, |
5528 TMPXAttribute( KMPXMediaIdGeneral, |
6175 { |
6259 { |
6176 aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() ); |
6260 aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() ); |
6177 aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue ); |
6261 aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue ); |
6178 aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue ); |
6262 aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue ); |
6179 aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue ); |
6263 aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue ); |
|
6264 aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue ); |
|
6265 aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); |
|
6266 aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); |
|
6267 aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); |
|
6268 aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue ); |
|
6269 aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); |
|
6270 aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); |
|
6271 aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); |
6180 |
6272 |
6181 TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); |
6273 TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); |
6182 if ( landscapeOrientation ) |
6274 if ( !landscapeOrientation ) |
6183 { |
6275 { |
6184 aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue ); |
|
6185 aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); |
|
6186 aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); |
|
6187 aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); |
|
6188 aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue ); |
|
6189 aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); |
|
6190 aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); |
|
6191 aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); |
|
6192 } |
|
6193 else |
|
6194 { |
|
6195 aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue ); |
|
6196 aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); |
|
6197 aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); |
|
6198 aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); |
|
6199 aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue ); |
|
6200 aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); |
|
6201 aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); |
|
6202 aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); |
|
6203 |
|
6204 TInt usbUnblockingStatus; |
6276 TInt usbUnblockingStatus; |
6205 RProperty::Get( KMPXViewPSUid, |
6277 RProperty::Get( KMPXViewPSUid, |
6206 KMPXUSBUnblockingPSStatus, |
6278 KMPXUSBUnblockingPSStatus, |
6207 usbUnblockingStatus); |
6279 usbUnblockingStatus); |
6208 |
6280 |
6209 if ( iContainer->CurrentLbxItemIndex() > KErrNotFound ) |
6281 if ( iContainer->CurrentLbxItemIndex() > KErrNotFound && !iContainer->IsTBoneView()) |
6210 { |
6282 { |
6211 if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) |
6283 if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) |
6212 { |
6284 { |
6213 aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); |
6285 aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); |
6214 aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); |
6286 aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); |
6215 } |
6287 } |
6216 else |
6288 else |
6217 { |
6289 { |
6218 aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); |
6290 aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); |
6219 aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); |
6291 aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); |
6220 aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue ); |
6292 aMenuPane->SetItemDimmed( EMPXCmdPlayItem, EFalse ); |
6221 aMenuPane->SetItemDimmed( EMPXCmdPlayItem, |
|
6222 iContainer->IsTBoneView() ? ETrue : EFalse ); |
|
6223 } |
6293 } |
6224 } |
6294 } |
6225 if ( iContainer->IsSelectedItemASong() && iContainer->IsTBoneView() ) |
6295 if ( iContainer->IsSelectedItemASong() && iContainer->IsTBoneView() ) |
6226 { |
6296 { |
6227 if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) |
6297 if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) |
6321 aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, EFalse ); |
6392 aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, EFalse ); |
6322 aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); |
6393 aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); |
6323 } |
6394 } |
6324 |
6395 |
6325 TInt currentItem( iContainer->CurrentLbxItemIndex() ); |
6396 TInt currentItem( iContainer->CurrentLbxItemIndex() ); |
6326 |
6397 if(currentItem > KErrNotFound ) |
6327 CMPXCollectionViewListBoxArray* array = |
6398 { |
6328 static_cast<CMPXCollectionViewListBoxArray*>( |
6399 CMPXCollectionViewListBoxArray* array = |
6329 iContainer->ListBoxArray() ); |
6400 static_cast<CMPXCollectionViewListBoxArray*>( |
6330 const CMPXMedia& media = array->MediaL( currentItem ); |
6401 iContainer->ListBoxArray() ); |
6331 |
6402 const CMPXMedia& media = array->MediaL( currentItem ); |
6332 if ( media.IsSupported( KMPXMediaGeneralNonPermissibleActions ) ) |
6403 |
6333 { |
6404 if ( media.IsSupported( KMPXMediaGeneralNonPermissibleActions ) ) |
6334 // check for auto playlist, disable delete |
6405 { |
6335 TMPXGeneralNonPermissibleActions attr( |
6406 // check for auto playlist, disable delete |
6336 media.ValueTObjectL<TMPXGeneralNonPermissibleActions>( |
6407 TMPXGeneralNonPermissibleActions attr( |
6337 KMPXMediaGeneralNonPermissibleActions ) ); |
6408 media.ValueTObjectL<TMPXGeneralNonPermissibleActions>( |
6338 if ( attr & EMPXWrite ) |
6409 KMPXMediaGeneralNonPermissibleActions ) ); |
6339 { |
6410 if ( attr & EMPXWrite ) |
6340 aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); |
6411 { |
6341 } |
6412 aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); |
6342 } |
6413 } |
6343 |
6414 } |
6344 TInt trackCount (0); |
6415 |
6345 if( media.IsSupported(KMPXMediaGeneralCount) ) |
6416 TInt trackCount (0); |
6346 { |
6417 if( media.IsSupported(KMPXMediaGeneralCount) ) |
6347 trackCount = media.ValueTObjectL<TInt>( KMPXMediaGeneralCount ); |
6418 { |
6348 } |
6419 trackCount = media.ValueTObjectL<TInt>( KMPXMediaGeneralCount ); |
6349 if( trackCount < 1 ) |
6420 } |
6350 { |
6421 if( trackCount < 1 ) |
6351 aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); |
6422 { |
6352 } |
6423 aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); |
6353 |
6424 } |
|
6425 } |
6354 if ( iOperatorMusicStore ) |
6426 if ( iOperatorMusicStore ) |
6355 { |
6427 { |
6356 aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue); |
6428 aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue); |
6357 } |
6429 } |
6358 else |
6430 else |
6370 aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue ); |
6442 aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue ); |
6371 aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue ); |
6443 aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue ); |
6372 aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); |
6444 aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); |
6373 |
6445 |
6374 TInt currentItem( iContainer->CurrentLbxItemIndex() ); |
6446 TInt currentItem( iContainer->CurrentLbxItemIndex() ); |
6375 |
6447 |
6376 CMPXCollectionViewListBoxArray* array = |
6448 if(currentItem > KErrNotFound ) |
6377 static_cast<CMPXCollectionViewListBoxArray*>( |
6449 { |
6378 iContainer->ListBoxArray() ); |
6450 CMPXCollectionViewListBoxArray* array = |
6379 const CMPXMedia& media = array->MediaL( currentItem ); |
6451 static_cast<CMPXCollectionViewListBoxArray*>( |
6380 |
6452 iContainer->ListBoxArray() ); |
6381 TInt usbUnblockingStatus; |
6453 const CMPXMedia& media = array->MediaL( currentItem ); |
6382 RProperty::Get( KMPXViewPSUid, |
6454 |
6383 KMPXUSBUnblockingPSStatus, |
6455 TInt usbUnblockingStatus; |
6384 usbUnblockingStatus); |
6456 RProperty::Get( KMPXViewPSUid, |
6385 if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) |
6457 KMPXUSBUnblockingPSStatus, |
6386 { |
6458 usbUnblockingStatus); |
6387 aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); |
6459 if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) |
6388 } |
6460 { |
6389 else |
6461 aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); |
6390 { |
6462 } |
6391 aMenuPane->SetItemDimmed( EMPXCmdRename, EFalse ); |
6463 else |
6392 } |
6464 { |
6393 |
6465 aMenuPane->SetItemDimmed( EMPXCmdRename, EFalse ); |
6394 if ( media.IsSupported( |
6466 } |
6395 KMPXMediaGeneralNonPermissibleActions ) ) |
6467 |
6396 { |
6468 if ( media.IsSupported( |
6397 // check for auto playlist, disable delete |
6469 KMPXMediaGeneralNonPermissibleActions ) ) |
6398 TMPXGeneralNonPermissibleActions attr( |
6470 { |
6399 media.ValueTObjectL<TMPXGeneralNonPermissibleActions>( |
6471 // check for auto playlist, disable delete |
6400 KMPXMediaGeneralNonPermissibleActions ) ); |
6472 TMPXGeneralNonPermissibleActions attr( |
6401 if ( attr & EMPXWrite ) |
6473 media.ValueTObjectL<TMPXGeneralNonPermissibleActions>( |
6402 { |
6474 KMPXMediaGeneralNonPermissibleActions ) ); |
6403 aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); |
6475 if ( attr & EMPXWrite ) |
6404 // TODO: this should be an item specific command. |
6476 { |
6405 aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); |
6477 aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); |
6406 } |
6478 // TODO: this should be an item specific command. |
6407 } |
6479 aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); |
6408 if ( array->IsItemBrokenLinkL( currentItem ) || |
6480 } |
6409 array->IsItemCorruptedL( currentItem ) ) |
6481 } |
6410 { |
6482 if ( array->IsItemBrokenLinkL( currentItem ) || |
6411 aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); |
6483 array->IsItemCorruptedL( currentItem ) ) |
6412 // TODO: this should be an item specific command. |
6484 { |
6413 aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); |
6485 aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); |
6414 } |
6486 // TODO: this should be an item specific command. |
6415 |
6487 aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); |
|
6488 } |
|
6489 } |
6416 break; |
6490 break; |
6417 } |
6491 } |
6418 default: |
6492 default: |
6419 { |
6493 { |
6420 // Do nothing |
6494 // Do nothing |
6729 { |
6803 { |
6730 aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() ); |
6804 aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() ); |
6731 aMenuPane->SetItemDimmed( EMPXCmdRemove, EFalse ); |
6805 aMenuPane->SetItemDimmed( EMPXCmdRemove, EFalse ); |
6732 } |
6806 } |
6733 } |
6807 } |
6734 |
6808 } |
6735 CMPXCollectionViewListBoxArray* array = |
6809 |
6736 static_cast<CMPXCollectionViewListBoxArray*>( |
6810 CMPXCollectionViewListBoxArray* array = |
6737 iContainer->ListBoxArray() ); |
6811 static_cast<CMPXCollectionViewListBoxArray*>( |
6738 const CMPXMedia& containerMedia = array->ContainerMedia(); |
6812 iContainer->ListBoxArray() ); |
6739 |
6813 const CMPXMedia& containerMedia = array->ContainerMedia(); |
6740 if ( containerMedia.IsSupported( KMPXMediaGeneralNonPermissibleActions ) ) |
6814 |
6741 { |
6815 if ( containerMedia.IsSupported( KMPXMediaGeneralNonPermissibleActions ) ) |
6742 // check for auto playlist, disable add, remove and reorder |
6816 { |
6743 TMPXGeneralNonPermissibleActions attr( |
6817 // check for auto playlist, disable add, remove and reorder |
6744 containerMedia.ValueTObjectL<TMPXGeneralNonPermissibleActions>( |
6818 TMPXGeneralNonPermissibleActions attr( |
6745 KMPXMediaGeneralNonPermissibleActions ) ); |
6819 containerMedia.ValueTObjectL<TMPXGeneralNonPermissibleActions>( |
6746 if ( attr & EMPXWrite ) |
6820 KMPXMediaGeneralNonPermissibleActions ) ); |
6747 { |
6821 if ( attr & EMPXWrite ) |
6748 aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); |
6822 { |
6749 aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); |
6823 aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); |
6750 aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); |
6824 aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); |
6751 } |
6825 aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); |
6752 } |
6826 } |
6753 } |
6827 } |
6754 |
|
6755 break; |
6828 break; |
6756 } |
6829 } |
6757 |
6830 |
6758 case R_MPX_COLLECTION_VIEW_MENU_2: |
6831 case R_MPX_COLLECTION_VIEW_MENU_2: |
6759 { |
6832 { |