diff -r 943ff5625028 -r 171e07ac910f mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp --- a/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp Fri Mar 12 15:42:25 2010 +0200 +++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp Mon Mar 15 12:40:11 2010 +0200 @@ -37,8 +37,8 @@ #include #include #include -#include -#include +#include +#include #ifdef RD_MULTIPLE_DRIVE #include #endif //RD_MULTIPLE_DRIVE @@ -48,9 +48,9 @@ #include #include -#include +#include #include -#include +#include #include #include @@ -130,7 +130,6 @@ const TInt KIncrementalDelayHalfSecond = 1000000; const TInt KIncrementalFetchBlockSize = 400; const TInt KIncrementalDirectionCount = 8; -const TInt KProgressBarMaxValue = 100; // Max Value for the Progress Info bar const TInt KWaitNoteImpUid = 0x101FFC6C; // refresh wait note UID #ifdef __ENABLE_PODCAST_IN_MUSIC_MENU const TInt KMusicMenuPodcastMenuItemIndex = 4; // podcast menu item index @@ -287,7 +286,10 @@ AppUi()->RemoveFromStack( iContainer ); delete iContainer; } - + if( iTitleWait ) + { + delete iTitleWait; + } delete iUserPlaylists; delete iCommonUiHelper; delete iSendUi; @@ -322,7 +324,9 @@ iCurrentHighlightedIndex( KErrNotFound ), iCachedCommand( KErrNotFound ), iNoteType( EMPXNoteNotDefined ), - iFirstIncrementalBatch( ETrue ) + iFirstIncrementalBatch( ETrue ), + iDialogDismissed( EFalse ), + iTitleWait( NULL ) { MPX_FUNC( "CMPXCollectionViewHgImp::CMPXCollectionViewHgImp" ); iUsingNokiaService = EFalse; @@ -626,9 +630,6 @@ if ( !isIgnore && iCollectionReady ) { CMPXCommonListBoxArrayBase* listboxArray( iContainer->ListBoxArray() ); - const CMPXMedia& containerMedia( listboxArray->ContainerMedia() ); - - const TMPXItemId containerId = containerMedia.ValueTObjectL(KMPXMediaGeneralId); HBufC* promptTxt( NULL ); HBufC* waitNoteText( NULL ); @@ -657,7 +658,12 @@ const TDesC& trackTitle( albumTrack->ValueText( KMPXMediaGeneralTitle ) ); // create the item path to delete - if ( path->Levels() == 3 ) + if ( 2 == path->Levels() ) + { + path->Back(); + path->AppendL(3); + } + else if ( path->Levels() == 3 ) { path->Back(); } @@ -667,9 +673,15 @@ path->Back(); } - - path->AppendL(containerId); - path->AppendL(trackId); + TInt currentIndex( iContainer->CurrentLbxItemIndex() ); + const CMPXMediaArray& albums = listboxArray->MediaArray(); + CMPXMedia* album( albums.AtL( currentIndex ) ); + const TMPXItemId albumId = album->ValueTObjectL(KMPXMediaGeneralId); + + path->AppendL(albumId); + path->AppendL(trackId); + + MPX_DEBUG_PATH(*path); waitNoteText = StringLoader::LoadLC( R_MPX_QTN_ALBUM_WAITING_DELETING, trackTitle ); @@ -703,6 +715,9 @@ if(iCachedCommand != aCommand) { iIsWaitNoteCanceled = EFalse; + StartDeleteWaitNoteL(); + TPtr buf = waitNoteText->Des(); + UpdateProcessL( buf ); } if ( !iIsWaitNoteCanceled ) { @@ -798,13 +813,36 @@ // Create a copy of collection path CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() ); CleanupStack::PushL( path ); + + if ( 2 == path->Levels() ) + { + path->Back(); + path->AppendL(3); + + const CMPXMediaArray& albums = listboxArray->MediaArray(); + + RArray ids; + CleanupClosePushL(ids); + + TInt albumCount = albums.Count(); + for (TInt i=0; iValueTObjectL(KMPXMediaGeneralId); + ids.AppendL(id); + } + path->AppendL(ids.Array()); // top level items + ids.Reset(); + path->Set(currentIndex); + CleanupStack::PopAndDestroy(&ids); + } + MPX_DEBUG_PATH(*path); + HBufC* promptTxt( NULL ); HBufC* waitNoteText( NULL ); TInt waitNoteCBA( R_AVKON_SOFTKEYS_EMPTY ); MPX_DEBUG2( "CMPXCollectionViewHgImp::DeleteSelectedItemsL delete array count = %d", arrayCount ); - // delete single song, not show wait note - TBool singleSong( EFalse ); TMPXGeneralType containerType( containerMedia.ValueTObjectL( KMPXMediaGeneralType ) ); @@ -906,11 +944,6 @@ if ( ( type == EMPXItem && category == EMPXSong ) || ( type == EMPXItem && category == EMPXPlaylist ) ) { - // delete single song - if ( type == EMPXItem && category == EMPXSong ) - { - singleSong = ETrue; - } // tracks level, or deleting a playlist waitNoteText = StringLoader::LoadLC( R_MPX_QTN_ALBUM_WAITING_DELETING, title ); @@ -1029,13 +1062,9 @@ if(iCachedCommand != aCommand) { iIsWaitNoteCanceled = EFalse; - // If delete one song, don't show progress note. - if ( !singleSong ) - { - StartProgressNoteL(); - TPtr buf = waitNoteText->Des(); - UpdateProcessL(0, buf); - } + StartDeleteWaitNoteL(); + TPtr buf = waitNoteText->Des(); + UpdateProcessL( buf ); } if ( !iIsWaitNoteCanceled ) @@ -1390,31 +1419,29 @@ } // --------------------------------------------------------------------------- -// Start a Progress note +// Start a Wait note // --------------------------------------------------------------------------- // -void CMPXCollectionViewHgImp::StartProgressNoteL() +void CMPXCollectionViewHgImp::StartDeleteWaitNoteL() { - iProgressDialog = new (ELeave) CAknProgressDialog( - (REINTERPRET_CAST(CEikDialog**, &iProgressDialog)), + iWaitDialog = new (ELeave) CAknWaitDialog( + (REINTERPRET_CAST(CEikDialog**, &iWaitDialog)), ETrue); - iProgressDialog->PrepareLC(R_MPX_PROGRESS_NOTE); - iProgressInfo = iProgressDialog->GetProgressInfoL(); - iProgressDialog->SetCallback(this); - iProgressDialog->RunLD(); - iProgressInfo->SetFinalValue(KProgressBarMaxValue); + iWaitDialog->PrepareLC(R_MPX_WAIT_NOTE); + + iWaitDialog->SetCallback(this); + iWaitDialog->RunLD(); } // --------------------------------------------------------------------------- // Update the Progress note // --------------------------------------------------------------------------- // -void CMPXCollectionViewHgImp::UpdateProcessL( TInt aProgress, const TDesC& aProgressText ) +void CMPXCollectionViewHgImp::UpdateProcessL( const TDesC& aProgressText ) { - if ( iProgressDialog ) - { - iProgressDialog->SetTextL(aProgressText); - iProgressInfo->SetAndDraw(aProgress); + if ( iWaitDialog ) + { + iWaitDialog->SetTextL(aProgressText); } } @@ -2743,11 +2770,16 @@ else { //single selection - isHidden = array->IsItemBrokenLinkL( - iContainer->CurrentLbxItemIndex() ); - isHidden = isHidden || - array->IsItemCorruptedL( - iContainer->CurrentLbxItemIndex() ); + TInt currentIndex( iContainer->CurrentLbxItemIndex() ); + if( currentIndex > KErrNotFound ) + { + isHidden = array->IsItemBrokenLinkL( currentIndex ); + isHidden = isHidden || array->IsItemCorruptedL( currentIndex ); + } + else + { + isHidden = ETrue; + } } } @@ -2896,9 +2928,17 @@ CMPXMedia* albumTrack = iContainer->SelectedItemMediaL(); TMPXItemId trackId = albumTrack->ValueTObjectL(KMPXMediaGeneralId); - - path->Back(); - path->Back(); + // create the item path to send + + if ( path->Levels() == 3 ) //TBone album level + { + path->Back(); + } + else if (path->Levels() == 4) //TBone Song Node level + { + path->Back(); + path->Back(); + } path->AppendL(aContainerId); path->AppendL(trackId); @@ -3674,6 +3714,7 @@ { MPX_FUNC( "CMPXCollectionViewHgImp::HandleAddCompletedL" ); iAddingToNewPlaylist = EFalse; + iDialogDismissed = EFalse; iCommonUiHelper->DismissWaitNoteL(); HandleCommandL( EMPXCmdHandleExternalCommand ); if ( aError == KErrNone ) @@ -3686,45 +3727,16 @@ MPX_DEBUG2( "CMPXCollectionViewHgImp::HandleAddCompletedL iPlaylistId = 0x%x", iPlaylistId.iId1 ); if ( iCurrentPlaylistOp != EMPXOpPLCreating ) { - HBufC* confirmTxt( NULL ); - const TDesC& title( aPlaylist->ValueText( KMPXMediaGeneralTitle ) ); - TMPlayerSecondaryDisplayNote noteId( EMPlayerNoteNone ); - if ( iNumSongAddedToPlaylist > 1 ) - { - confirmTxt = StringLoader::LoadLC( - R_MPX_QTN_MUS_MULTIPLE_TRACKS_ADDED_TO_PL, - title, iNumSongAddedToPlaylist ); - noteId = EMPlayerNoteAddManySongToPlaylist; - } - else - { - confirmTxt = StringLoader::LoadLC( - R_MPX_QTN_MUS_NOTE_TRACK_ADDED_TO_PL, title ); - noteId = EMPlayerNoteAddSongToPlaylist; - } - - CAknConfirmationNote* note = new ( ELeave ) CAknConfirmationNote(); - - note->PublishDialogL( - noteId, - KMPlayerNoteCategory ); - - if ( iCoverDisplay ) - { - CAknMediatorFacade* covercl = AknMediatorFacade( note ); - if ( covercl ) - { - covercl->BufStream() << title; - if ( iNumSongAddedToPlaylist > 1 ) - { - covercl->BufStream().WriteInt32L( iNumSongAddedToPlaylist ); - } - } - } - - note->ExecuteLD( *confirmTxt ); - CleanupStack::PopAndDestroy( confirmTxt ); - + if( !iTitleWait ) + { + delete iTitleWait; + iTitleWait = NULL; + } + iTitleWait = aPlaylist->ValueText( KMPXMediaGeneralTitle ).AllocL(); + if( iDialogDismissed ) + { + ShowAddedItemsDialogL(); + } } else // iCurrentPlaylistOp == EMPXOpPLCreating { @@ -3747,6 +3759,57 @@ } } +// --------------------------------------------------------------------------- +// Shows the added items dialog +// --------------------------------------------------------------------------- +// +void CMPXCollectionViewHgImp::ShowAddedItemsDialogL() + { + HBufC* confirmTxt( NULL ); + + TMPlayerSecondaryDisplayNote noteId( EMPlayerNoteNone ); + if ( iNumSongAddedToPlaylist > 1 ) + { + + confirmTxt = StringLoader::LoadLC( + R_MPX_QTN_MUS_MULTIPLE_TRACKS_ADDED_TO_PL, + iTitleWait->Des(), iNumSongAddedToPlaylist ); + noteId = EMPlayerNoteAddManySongToPlaylist; + } + else + { + confirmTxt = StringLoader::LoadLC( + R_MPX_QTN_MUS_NOTE_TRACK_ADDED_TO_PL, iTitleWait->Des() ); + noteId = EMPlayerNoteAddSongToPlaylist; + } + + CAknConfirmationNote* note = new ( ELeave ) CAknConfirmationNote(); + + note->PublishDialogL( + noteId, + KMPlayerNoteCategory ); + + if ( iCoverDisplay ) + { + CAknMediatorFacade* covercl = AknMediatorFacade( note ); + if ( covercl ) + { + covercl->BufStream() << iTitleWait; + if ( iNumSongAddedToPlaylist > 1 ) + { + covercl->BufStream().WriteInt32L( iNumSongAddedToPlaylist ); + } + } + } + note->ExecuteLD( *confirmTxt ); + CleanupStack::PopAndDestroy( confirmTxt ); + if( iTitleWait ) + { + delete iTitleWait; + iTitleWait = NULL; + } + } + // ----------------------------------------------------------------------------- // Handles the completion of setting a media event. // ----------------------------------------------------------------------------- @@ -4092,6 +4155,7 @@ // void CMPXCollectionViewHgImp::DialogDismissedL( TInt aButtonId ) { + iDialogDismissed = ETrue; MPX_FUNC( "CMPXCollectionViewHgImp::DialogDismissedL" ); if ( iCommandInitiator ) { @@ -4127,6 +4191,15 @@ } break; } + case EAknSoftkeyDone: + { + // Double check that we should be showing the dialog + if( iTitleWait ) + { + ShowAddedItemsDialogL(); + } + break; + } default: { // no special handling for other cases @@ -4515,9 +4588,9 @@ { // nothing else to delete iIsDeleting = EFalse; - if ( iProgressDialog ) - { - iProgressDialog->ProcessFinishedL(); + if ( iWaitDialog ) + { + iWaitDialog->ProcessFinishedL(); } HandleCommandL( EMPXCmdHandleExternalCommand ); } @@ -4891,9 +4964,9 @@ { // only dismiss wait note if the wait note is not // canceled - if ( iProgressDialog ) + if ( iWaitDialog ) { - iProgressDialog->ProcessFinishedL(); + iWaitDialog->ProcessFinishedL(); } HandleCommandL( EMPXCmdHandleExternalCommand ); iIsWaitNoteCanceled = EFalse; @@ -4916,9 +4989,9 @@ iIsDeleting = EFalse; if ( !iIsWaitNoteCanceled ) { - if ( iProgressDialog ) + if ( iWaitDialog ) { - iProgressDialog->ProcessFinishedL(); + iWaitDialog->ProcessFinishedL(); } HandleCommandL( EMPXCmdHandleExternalCommand ); iIsWaitNoteCanceled = EFalse; @@ -5028,27 +5101,6 @@ } break; } - case EDeleteStatusOp: - { - if ( aArgument ) - { - CMPXMedia* media = (CMPXMedia*)aArgument; - CleanupStack::PushL( media ); - if ( media->IsSupported( KMPXMediaGeneralCount ) ) - { - TInt deletePercent = media->ValueTObjectL( KMPXMediaGeneralCount ); - MPX_DEBUG2( "CMPXCollectionViewHgImp::HandleOperationCompleteL % Files Deleted: %d", deletePercent ); - // update WaitNote dialog. - HBufC* string = StringLoader::LoadLC(R_MPX_QTN_NMP_DEL_BATCH_SONGS_WAIT_NOTE, deletePercent); - TPtr buf = string->Des(); - UpdateProcessL(deletePercent, buf); - CleanupStack::PopAndDestroy( string ); - } - CleanupStack::PopAndDestroy( media ); - aArgument = NULL; - } - break; - } default: { break; @@ -5447,6 +5499,28 @@ } CMPXCollectionPath* path = iCollectionUtility->Collection().PathL(); CleanupStack::PushL( path ); + + if ( 2 == path->Levels() ) + { + path->Back(); + path->AppendL(3); + + const CMPXMediaArray& albums = listboxArray->MediaArray(); + + RArray ids; + CleanupClosePushL(ids); + + TInt albumCount = albums.Count(); + for (TInt i=0; iValueTObjectL(KMPXMediaGeneralId); + ids.AppendL(id); + } + path->AppendL(ids.Array()); // top level items + ids.Reset(); + CleanupStack::PopAndDestroy(&ids); + } path->Set( iContainer->CurrentLbxItemIndex() ); RArray attrs; CleanupClosePushL( attrs ); @@ -6068,7 +6142,17 @@ TMPXGeneralType containerType( containerMedia.ValueTObjectL( KMPXMediaGeneralType ) ); - + + TInt usbUnblockingStatus; + RProperty::Get( KMPXViewPSUid, + KMPXUSBUnblockingPSStatus, + usbUnblockingStatus); + + if(usbUnblockingStatus) + { + aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue ); + } + switch ( containerCategory ) { case EMPXPlaylist: @@ -6177,36 +6261,24 @@ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue ); aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue ); aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation(); - if ( landscapeOrientation ) + if ( !landscapeOrientation ) { - aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); - TInt usbUnblockingStatus; RProperty::Get( KMPXViewPSUid, KMPXUSBUnblockingPSStatus, usbUnblockingStatus); - if ( iContainer->CurrentLbxItemIndex() > KErrNotFound ) + if ( iContainer->CurrentLbxItemIndex() > KErrNotFound && !iContainer->IsTBoneView()) { if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) { @@ -6217,9 +6289,7 @@ { aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); - aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdPlayItem, - iContainer->IsTBoneView() ? ETrue : EFalse ); + aMenuPane->SetItemDimmed( EMPXCmdPlayItem, EFalse ); } } if ( iContainer->IsSelectedItemASong() && iContainer->IsTBoneView() ) @@ -6233,19 +6303,20 @@ { aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse ); aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse ); + aMenuPane->SetItemDimmed( EMPXCmdSend, EFalse ); } } + } - //If Operator Music store exist, show the cascade menu with Nokia and Operator music store. - if ( iOperatorMusicStore ) - { - aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue); - } - else - { - aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue); - } - } + //If Operator Music store exist, show the cascade menu with Nokia and Operator music store. + if ( iOperatorMusicStore ) + { + aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue); + } + else + { + aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue); + } } break; @@ -6323,34 +6394,35 @@ } TInt currentItem( iContainer->CurrentLbxItemIndex() ); - - CMPXCollectionViewListBoxArray* array = - static_cast( - iContainer->ListBoxArray() ); - const CMPXMedia& media = array->MediaL( currentItem ); - - if ( media.IsSupported( KMPXMediaGeneralNonPermissibleActions ) ) - { - // check for auto playlist, disable delete - TMPXGeneralNonPermissibleActions attr( - media.ValueTObjectL( - KMPXMediaGeneralNonPermissibleActions ) ); - if ( attr & EMPXWrite ) - { - aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); - } - } - - TInt trackCount (0); - if( media.IsSupported(KMPXMediaGeneralCount) ) - { - trackCount = media.ValueTObjectL( KMPXMediaGeneralCount ); - } - if( trackCount < 1 ) - { - aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); - } - + if(currentItem > KErrNotFound ) + { + CMPXCollectionViewListBoxArray* array = + static_cast( + iContainer->ListBoxArray() ); + const CMPXMedia& media = array->MediaL( currentItem ); + + if ( media.IsSupported( KMPXMediaGeneralNonPermissibleActions ) ) + { + // check for auto playlist, disable delete + TMPXGeneralNonPermissibleActions attr( + media.ValueTObjectL( + KMPXMediaGeneralNonPermissibleActions ) ); + if ( attr & EMPXWrite ) + { + aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue ); + } + } + + TInt trackCount (0); + if( media.IsSupported(KMPXMediaGeneralCount) ) + { + trackCount = media.ValueTObjectL( KMPXMediaGeneralCount ); + } + if( trackCount < 1 ) + { + aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue ); + } + } if ( iOperatorMusicStore ) { aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue); @@ -6372,47 +6444,49 @@ aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); TInt currentItem( iContainer->CurrentLbxItemIndex() ); - - CMPXCollectionViewListBoxArray* array = - static_cast( - iContainer->ListBoxArray() ); - const CMPXMedia& media = array->MediaL( currentItem ); - - TInt usbUnblockingStatus; - RProperty::Get( KMPXViewPSUid, - KMPXUSBUnblockingPSStatus, - usbUnblockingStatus); - if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) - { - aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); - } - else - { - aMenuPane->SetItemDimmed( EMPXCmdRename, EFalse ); - } - - if ( media.IsSupported( - KMPXMediaGeneralNonPermissibleActions ) ) - { - // check for auto playlist, disable delete - TMPXGeneralNonPermissibleActions attr( - media.ValueTObjectL( - KMPXMediaGeneralNonPermissibleActions ) ); - if ( attr & EMPXWrite ) - { - aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); - // TODO: this should be an item specific command. - aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); - } - } - if ( array->IsItemBrokenLinkL( currentItem ) || - array->IsItemCorruptedL( currentItem ) ) - { - aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); - // TODO: this should be an item specific command. - aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); - } - + + if(currentItem > KErrNotFound ) + { + CMPXCollectionViewListBoxArray* array = + static_cast( + iContainer->ListBoxArray() ); + const CMPXMedia& media = array->MediaL( currentItem ); + + TInt usbUnblockingStatus; + RProperty::Get( KMPXViewPSUid, + KMPXUSBUnblockingPSStatus, + usbUnblockingStatus); + if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive ) + { + aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); + } + else + { + aMenuPane->SetItemDimmed( EMPXCmdRename, EFalse ); + } + + if ( media.IsSupported( + KMPXMediaGeneralNonPermissibleActions ) ) + { + // check for auto playlist, disable delete + TMPXGeneralNonPermissibleActions attr( + media.ValueTObjectL( + KMPXMediaGeneralNonPermissibleActions ) ); + if ( attr & EMPXWrite ) + { + aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); + // TODO: this should be an item specific command. + aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); + } + } + if ( array->IsItemBrokenLinkL( currentItem ) || + array->IsItemCorruptedL( currentItem ) ) + { + aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue ); + // TODO: this should be an item specific command. + aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue ); + } + } break; } default: @@ -6731,27 +6805,26 @@ aMenuPane->SetItemDimmed( EMPXCmdRemove, EFalse ); } } - - CMPXCollectionViewListBoxArray* array = - static_cast( - iContainer->ListBoxArray() ); - const CMPXMedia& containerMedia = array->ContainerMedia(); - - if ( containerMedia.IsSupported( KMPXMediaGeneralNonPermissibleActions ) ) - { - // check for auto playlist, disable add, remove and reorder - TMPXGeneralNonPermissibleActions attr( - containerMedia.ValueTObjectL( - KMPXMediaGeneralNonPermissibleActions ) ); - if ( attr & EMPXWrite ) - { - aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); - aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); - } - } - } - + } + + CMPXCollectionViewListBoxArray* array = + static_cast( + iContainer->ListBoxArray() ); + const CMPXMedia& containerMedia = array->ContainerMedia(); + + if ( containerMedia.IsSupported( KMPXMediaGeneralNonPermissibleActions ) ) + { + // check for auto playlist, disable add, remove and reorder + TMPXGeneralNonPermissibleActions attr( + containerMedia.ValueTObjectL( + KMPXMediaGeneralNonPermissibleActions ) ); + if ( attr & EMPXWrite ) + { + aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue ); + aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue ); + } + } break; }