--- a/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp Fri Feb 19 22:48:30 2010 +0200
+++ b/mpxplugins/viewplugins/views/collectionviewhg/src/mpxcollectionviewhgimp.cpp Fri Mar 12 15:42:25 2010 +0200
@@ -163,7 +163,6 @@
const TInt KMPXCollectionArtistAlbum( 3 );
const TInt KMPXCollectionGenre( 5 );
-const TInt KMPXTimeoutTimer = 1000000; // 1 second
// ======== MEMBER FUNCTIONS ========
@@ -271,14 +270,6 @@
delete iMediaRecognizer;
}
- if ( iTimer )
- {
- if ( iTimer->IsActive() )
- iTimer->Cancel();
-
- delete iTimer;
- iTimer = NULL;
- }
#ifdef BACKSTEPPING_INCLUDED
if( iBackSteppingUtility )
{
@@ -297,7 +288,6 @@
delete iContainer;
}
- delete iNaviDecorator;
delete iUserPlaylists;
delete iCommonUiHelper;
delete iSendUi;
@@ -316,6 +306,8 @@
{
delete iOperatorMusicStoreURI;
}
+ if (iStoredAlbum)
+ delete iStoredAlbum;
}
// ---------------------------------------------------------------------------
@@ -324,7 +316,8 @@
// ---------------------------------------------------------------------------
//
CMPXCollectionViewHgImp::CMPXCollectionViewHgImp() :
- iLastDepth( 1 ), iPlayIndex( KErrNotFound ),
+ iLastDepth( 1 ),
+ iPlayIndex( KErrNotFound ),
iSetMediaLCount( KErrNotFound ),
iCurrentHighlightedIndex( KErrNotFound ),
iCachedCommand( KErrNotFound ),
@@ -401,8 +394,6 @@
iViewUtility->AddObserverL( this );
iBottomIndex = new (ELeave) CArrayFixFlat<TInt>( 1 );
- iTimer = CPeriodic::NewL( CActive::EPriorityIdle );
-
iCommonUiHelper = CMPXCommonUiHelper::NewL( iCollectionUtility );
iCollectionUiHelper = CMPXCollectionHelperFactory::NewCollectionUiHelperL();
@@ -441,14 +432,6 @@
MPX_TRAP( iErrorAttachAssignMenu, iServiceHandler->AttachMenuL( R_MPX_USE_AS_CASCADE,
R_MPX_AIW_ASSIGN_INTEREST ) );
- iNaviPane =
- static_cast<CAknNavigationControlContainer*>
- ( iAvkonViewAppUi->StatusPane()->ControlL(
- TUid::Uid( EEikStatusPaneUidNavi ) ) );
- iNaviDecorator = iNaviPane->CreateNavigationLabelL( KNullDesC );
- //Create label to change text in Navi pane
- iNaviLabel = static_cast<CAknNaviLabel*>
- ( iNaviDecorator->DecoratedControl() );
TInt flags( 0 );
CRepository* repository = CRepository::NewL( KCRUidMPXMPFeatures );
@@ -644,14 +627,7 @@
{
CMPXCommonListBoxArrayBase* listboxArray( iContainer->ListBoxArray() );
const CMPXMedia& containerMedia( listboxArray->ContainerMedia() );
-
- TMPXGeneralType containerType(
- containerMedia.ValueTObjectL<TMPXGeneralType>(
- KMPXMediaGeneralType ) );
- TMPXGeneralCategory containerCategory(
- containerMedia.ValueTObjectL<TMPXGeneralCategory>(
- KMPXMediaGeneralCategory ) );
-
+
const TMPXItemId containerId = containerMedia.ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId);
HBufC* promptTxt( NULL );
@@ -662,8 +638,8 @@
CMPXCollectionPath* path( iCollectionUtility->Collection().PathL() );
CleanupStack::PushL( path );
- if ( containerType == EMPXItem && containerCategory == EMPXAlbum )
- {
+ if ( iContainer->IsTBoneView() )
+ {
//get the media object of the selected track in TBone View
CMPXMedia* albumTrack = iContainer->SelectedItemMediaL();
@@ -680,8 +656,18 @@
TMPXItemId trackId = albumTrack->ValueTObjectL<TMPXItemId>(KMPXMediaGeneralId);
const TDesC& trackTitle( albumTrack->ValueText( KMPXMediaGeneralTitle ) );
// create the item path to delete
- path->Back();
- path->Back();
+
+ if ( path->Levels() == 3 )
+ {
+ path->Back();
+ }
+ else if (path->Levels() == 4)
+ {
+ path->Back();
+ path->Back();
+ }
+
+
path->AppendL(containerId);
path->AppendL(trackId);
@@ -717,9 +703,6 @@
if(iCachedCommand != aCommand)
{
iIsWaitNoteCanceled = EFalse;
- StartProgressNoteL();
- TPtr buf = waitNoteText->Des();
- UpdateProcessL(0, buf);
}
if ( !iIsWaitNoteCanceled )
{
@@ -820,6 +803,8 @@
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<TMPXGeneralType>(
KMPXMediaGeneralType ) );
@@ -921,6 +906,11 @@
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 );
@@ -1039,9 +1029,13 @@
if(iCachedCommand != aCommand)
{
iIsWaitNoteCanceled = EFalse;
- StartProgressNoteL();
- TPtr buf = waitNoteText->Des();
- UpdateProcessL(0, buf);
+ // If delete one song, don't show progress note.
+ if ( !singleSong )
+ {
+ StartProgressNoteL();
+ TPtr buf = waitNoteText->Des();
+ UpdateProcessL(0, buf);
+ }
}
if ( !iIsWaitNoteCanceled )
@@ -1261,36 +1255,6 @@
}
// ---------------------------------------------------------------------------
-// Updates the navi pane
-// ---------------------------------------------------------------------------
-//
-void CMPXCollectionViewHgImp::UpdateNaviPaneL()
- {
- MPX_FUNC( "CMPXCollectionViewHgImp::UpdateNaviPaneL" );
- if ( iContainer &&
- (iViewUtility->ActiveViewType() !=
- TUid::Uid( KMPXPluginTypeAddSongsEditorUid )) &&
- (iViewUtility->ActiveViewType() !=
- TUid::Uid( KMPXPluginTypeAlbumArtEditorUid )) &&
- (iViewUtility->ActiveViewType() !=
- TUid::Uid( KMPXPluginTypeMetadataEditorUid ))
- )
- {
- MPX_DEBUG2("CMPXCollectionViewHgImp::UpdateNaviPaneL updating %d", iDuration);
- if ( iDuration )
- {
- iNaviLabel->SetTextL( *iDuration );
- iNaviPane->PushL( *iNaviDecorator );
- }
- else
- {
- iNaviPane->Pop( iNaviDecorator );
- }
- iNaviPane->DrawNow();
- }
- }
-
-// ---------------------------------------------------------------------------
// Updates the title pane
// ---------------------------------------------------------------------------
//
@@ -1496,7 +1460,6 @@
iDuration = StringLoader::LoadL(
R_MPX_CUI_POSITION_COUNTER_TXT, *params );
CleanupStack::PopAndDestroy( params );
- UpdateNaviPaneL();
}
// ---------------------------------------------------------------------------
@@ -1586,10 +1549,6 @@
delete iOriginalDuration;
iOriginalDuration = NULL;
}
- if ( iViewUtility->ActiveViewType() == TUid::Uid( KMPXPluginTypeCollectionUid ) )
- {
- UpdateNaviPaneL();
- }
iContainer->ActivateReorderMode( EFalse );
iContainer->EnableFindBox( ETrue );
}
@@ -1633,7 +1592,7 @@
list, R_AVKON_SOFTKEYS_OK_EMPTY,
AknPopupLayouts::EMenuGraphicHeadingWindow);
CleanupStack::PushL( popupList );
- list->ConstructL( popupList, CEikListBox::ELeftDownInViewRect );
+ list->ConstructL( popupList, EAknListBoxViewerFlags );
list->CreateScrollBarFrameL( ETrue );
list->ScrollBarFrame()->SetScrollBarVisibilityL(
CEikScrollBarFrame::EOff,
@@ -2897,17 +2856,26 @@
CMPXCollectionViewListBoxArray* array =
static_cast<CMPXCollectionViewListBoxArray*>(
iContainer->ListBoxArray() );
- const CMPXMedia& media = array->MediaL(
- iContainer->CurrentLbxItemIndex() );
-
- if ( media.IsSupported( KMPXMediaGeneralFlags ) )
- {
- TUint flags( media.ValueTObjectL<TUint>( KMPXMediaGeneralFlags ) );
- if ( ( flags ) & ( KMPXMediaGeneralFlagsIsMissingDetails ) )
- {
- isHidden = ETrue;
- }
- }
+
+ TInt currentItem = iContainer->CurrentLbxItemIndex();
+ if ( currentItem > KErrNotFound )
+ {
+ const CMPXMedia& media = array->MediaL( currentItem );
+
+ if ( media.IsSupported( KMPXMediaGeneralFlags ) )
+ {
+ TUint flags( media.ValueTObjectL<TUint>( KMPXMediaGeneralFlags ) );
+ if ( ( flags ) & ( KMPXMediaGeneralFlagsIsMissingDetails ) )
+ {
+ isHidden = ETrue;
+ }
+ }
+ }
+ else
+ {
+ isHidden = ETrue;
+ }
+
}
return isHidden;
}
@@ -3366,8 +3334,8 @@
CleanupStack::PopAndDestroy( path );
//support for TBone view add to playlist
- if ( aContainerCategory == EMPXAlbum && aContainerType == EMPXItem)
- {
+ if ( iContainer->IsTBoneView() )
+ {
CMPXMedia* media = iContainer->SelectedItemMediaL();
if ( media->ValueTObjectL<TMPXItemId>( KMPXMediaGeneralId ) == KMPXInvalidItemId )
{
@@ -4014,7 +3982,6 @@
// USB flags
//
CEikMenuBar* menuBar( MenuBar() );
-#ifdef SINGLE_CLICK_INCLUDED
if(iContainer)
{
iContainer->EnableMarking( EFalse );
@@ -4023,16 +3990,6 @@
{
menuBar->SetMenuTitleResourceId( R_MPX_COLLECTION_VIEW_MENUBAR_NO_MARKING );
}
-#else
- if(iContainer)
- {
- iContainer->EnableMarking( ETrue );
- }
- if(menuBar)
- {
- menuBar->SetMenuTitleResourceId( R_MPX_COLLECTION_VIEW_MENUBAR );
- }
-#endif
TBool IsUSBEvent( EFalse );
if( type == EMcMsgUSBMassStorageStart || type == EMcMsgUSBMTPStart )
{
@@ -4273,9 +4230,16 @@
}
else if ( cba )
{
- cba->SetCommandSetL(
- ( cpath->Levels() == 3 && !iIsEmbedded ) ?
- R_MPX_OPTIONS_HIDE_CBA : R_AVKON_SOFTKEYS_OPTIONS_BACK );
+ if ( iContainer->IsTBoneView() )
+ {
+ cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+ }
+ else
+ {
+ cba->SetCommandSetL(
+ ( cpath->Levels() == 3 && !iIsEmbedded ) ?
+ R_MPX_OPTIONS_HIDE_CBA : R_AVKON_SOFTKEYS_OPTIONS_BACK );
+ }
cba->MakeVisible( ETrue );
cba->DrawDeferred();
}
@@ -4416,13 +4380,8 @@
else
{
// tracks view
-#ifdef SINGLE_CLICK_INCLUDED
iContainer->EnableMarking( EFalse );
menuBar->SetMenuTitleResourceId( R_MPX_COLLECTION_VIEW_MENUBAR_NO_MARKING );
-#else
- iContainer->EnableMarking( ETrue );
- menuBar->SetMenuTitleResourceId( R_MPX_COLLECTION_VIEW_MENUBAR );
-#endif
resId = R_MPX_COLLECTION_SONG_LBX_EMPTYTEXT;
#ifdef __ENABLE_MSK
mskId = R_QTN_MSK_PLAY;
@@ -4608,13 +4567,6 @@
}
}
- MPX_DEBUG1( "HandleOpenL CheckingTimer" );
- if ( iTimer && !iTimer->IsActive() )
- {
- MPX_DEBUG1( "HandleOpenL Starting" );
- iTimer->Start( KMPXTimeoutTimer, KMPXTimeoutTimer, TCallBack( IADCheckTimerCallBack, this));
- }
-
MPX_PERF_CHECKPT("Collection View opened");
}
@@ -4662,7 +4614,6 @@
iDuration = iCommonUiHelper->DisplayableDurationInTextL( duration/KMilliSecondsToSeconds );
}
}
- UpdateNaviPaneL();
break;
}
case EMPXOpMediaLSend:
@@ -5245,13 +5196,11 @@
OpenPodcastsL();
break;
}
-#ifdef SINGLE_CLICK_INCLUDED
case EMPXCmdPlayItem:
{
iContainer->HandleItemCommandL(EMPXCmdPlay);
break;
}
-#endif
case EMPXCmdCreatePlaylist:
{
iCurrentPlaylistOp = EMPXOpPLCreating;
@@ -5298,9 +5247,9 @@
if ( containerMedia.IsSupported( KMPXMediaGeneralCategory ) )
{
containerCategory = containerMedia.ValueTObjectL<TMPXGeneralCategory>( KMPXMediaGeneralCategory );
- }
-
- if ( mediaCategory == EMPXSong || (containerCategory == EMPXAlbum && containerType== EMPXItem) )
+ }
+
+ if ( mediaCategory == EMPXSong || iContainer->IsTBoneView() )
{
CMPXMedia* tracks = CMPXMedia::NewL();
CleanupStack::PushL( tracks );
@@ -5576,6 +5525,18 @@
}
case EAknSoftkeyBack:
{
+ if (iContainer->OfferCommandL(EAknSoftkeyBack))
+ {
+ CEikButtonGroupContainer* cba = Cba();
+ if (cba)
+ {
+ cba->SetCommandSetL( R_MPX_OPTIONS_HIDE_CBA );
+ cba->MakeVisible( ETrue );
+ cba->DrawDeferred();
+ }
+ break;
+ }
+
iMarkedAll = EFalse;
if( iIsDeleting )
{
@@ -5880,7 +5841,7 @@
if ( !iContainer )
{
- iContainer = CMPXCollectionViewHgContainer::NewL( this, this, iIsEmbedded );
+ iContainer = CMPXCollectionViewHgContainer::NewL( this, this, this, iIsEmbedded );
iContainer->SetCbaHandler( this );
}
iContainer->SetMopParent( this );
@@ -5913,11 +5874,13 @@
#endif
UpdateTitlePaneL();
- UpdateNaviPaneL();
if ( iViewUtility->PreviousViewType().iUid == KMPXPluginTypePlaybackUid )
{
+ // Set the previous view for animatin purposes.
+ iContainer->SetPreviousViewId(TUid::Uid(KMPXPluginTypePlaybackUid));
+
#ifdef __ENABLE_PODCAST_IN_MUSIC_MENU
// If previous view is Playback view, it can only be normal playback view
// Podcast shouldn't be highlighted in any case.
@@ -6004,7 +5967,6 @@
{
delete iDuration;
iDuration = NULL;
- TRAP_IGNORE(UpdateNaviPaneL());
}
// Cleanup view deactivation observer
@@ -6062,6 +6024,32 @@
#endif // BACKSTEPPING_INCLUDED
}
+
+
+// -----------------------------------------------------------------------------
+// checks if Now Playing option should be shown
+// -----------------------------------------------------------------------------
+//
+TBool CMPXCollectionViewHgImp::NowPlayingOptionVisibilityL()
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::SendOptionVisibilityL" );
+ TBool isHidden( iContainer->TotalListItemCount() < 1 );
+
+ // First check if there's a local playback source
+ MMPXSource* source( iPlaybackUtility->Source() );
+ if ( source == 0 )
+ {
+ // If no local playback, check if there's a progressive download playback source.
+ MMPXPlaybackUtility* pdPlaybackUtility;
+ pdPlaybackUtility = MMPXPlaybackUtility::UtilityL( TUid::Uid( KProgressDownloadUid ) );
+ isHidden = pdPlaybackUtility->Source() ? EFalse : ETrue;
+ pdPlaybackUtility->Close();
+ }
+
+ return isHidden;
+ }
+
+
// ---------------------------------------------------------------------------
// Handle initialing a music menu pane.
// ---------------------------------------------------------------------------
@@ -6077,6 +6065,9 @@
TMPXGeneralCategory containerCategory(
containerMedia.ValueTObjectL<TMPXGeneralCategory>(
KMPXMediaGeneralCategory ) );
+
+ TMPXGeneralType containerType(
+ containerMedia.ValueTObjectL<TMPXGeneralType>( KMPXMediaGeneralType ) );
switch ( containerCategory )
{
@@ -6084,8 +6075,18 @@
{
// playlist view
aMenuPane->SetItemDimmed( EMPXCmdGoToPlaylists, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdGoToGenre, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, iGoToMusicShopOptionHidden );
+ if (containerType != EMPXGroup ) // EMPXItem -> playlist tracks level
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToArtistAlbums, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToAllSongs, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToPodcasts, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToGenre, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdMusicLibraryDetails, ETrue);
+ aMenuPane->SetItemDimmed( EMPXCmdGoToMusicShop, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue);
+ }
break;
}
case EMPXAlbum:
@@ -6093,20 +6094,42 @@
{
// Artists & Albums view
aMenuPane->SetItemDimmed( EMPXCmdGoToArtistAlbums, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdGoToGenre, ETrue );
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, iGoToMusicShopOptionHidden );
+ if ( iContainer->IsTBoneView() ) //TBone View
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToAllSongs, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToPlaylists, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToPodcasts, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToGenre, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdMusicLibraryDetails, ETrue);
+ }
break;
}
case EMPXGenre:
{
// Genre view
- aMenuPane->SetItemDimmed( EMPXCmdGoToGenre, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToGenre, ETrue );
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, iGoToMusicShopOptionHidden );
+ if ( containerType != EMPXGroup ) // EMPXItem -> tracks level
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToAllSongs, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToArtistAlbums, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToPlaylists, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToPodcasts, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdMusicLibraryDetails, ETrue);
+ aMenuPane->SetItemDimmed( EMPXCmdGoToMusicShop, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue);
+ }
+
break;
}
case EMPXSong:
{
+ // Song view and Genre Track view
aMenuPane->SetItemDimmed( EMPXCmdGoToAllSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, iGoToMusicShopOptionHidden );
break;
}
default:
@@ -6116,6 +6139,678 @@
}
}
// ---------------------------------------------------------------------------
+// Dynamically initialises a menu pane for the Album context
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::DynInitMenuPaneAlbumL(
+ TInt aResourceId,
+ CEikMenuPane* aMenuPane )
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPaneAlbumL" );
+ ASSERT( iContainer && aMenuPane != NULL);
+ TBool isListEmpty( iContainer->TotalListItemCount() == 0 );
+
+ switch ( aResourceId )
+ {
+ case R_MPX_COLLECTION_VIEW_MENU_1:
+ {
+ HandleInitMusicMenuPaneL(aMenuPane);
+ if ( isListEmpty )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue);
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+
+ TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation();
+ 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 ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlayItem,
+ iContainer->IsTBoneView() ? ETrue : EFalse );
+ }
+ }
+ if ( iContainer->IsSelectedItemASong() && iContainer->IsTBoneView() )
+ {
+ if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, 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);
+ }
+ }
+ }
+
+ break;
+ }
+
+ case R_MPX_COLLECTION_VIEW_MENU_2:
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
+ if( !iContainer->IsTBoneView()&& (iContainer->CurrentLbxItemIndex() > KErrNotFound))
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, !iUsingNokiaService );
+ }
+ break;
+ }
+ case R_MPX_ADD_TO_PL_SUB_MENU:
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToSavedPlaylist, !FindPlaylistsL() );
+ break;
+ }
+ default:
+ {
+ // Do nothing
+ break;
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
+// Dynamically initialises a menu pane for the Playlist context
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::DynInitMenuPanePlaylistL(
+ TInt aResourceId,
+ CEikMenuPane* aMenuPane )
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPanePlaylistL" );
+
+ TBool isListEmpty( (iContainer->TotalListItemCount()) == 0 );
+
+ switch ( aResourceId )
+ {
+ case R_MPX_COLLECTION_VIEW_MENU_1:
+ {
+ HandleInitMusicMenuPaneL(aMenuPane);
+
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, 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 );
+
+ TInt usbUnblockingStatus;
+ RProperty::Get( KMPXViewPSUid,
+ KMPXUSBUnblockingPSStatus,
+ usbUnblockingStatus);
+ if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, EFalse );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
+ }
+
+ TInt currentItem( iContainer->CurrentLbxItemIndex() );
+
+ CMPXCollectionViewListBoxArray* array =
+ static_cast<CMPXCollectionViewListBoxArray*>(
+ iContainer->ListBoxArray() );
+ const CMPXMedia& media = array->MediaL( currentItem );
+
+ if ( media.IsSupported( KMPXMediaGeneralNonPermissibleActions ) )
+ {
+ // check for auto playlist, disable delete
+ TMPXGeneralNonPermissibleActions attr(
+ media.ValueTObjectL<TMPXGeneralNonPermissibleActions>(
+ KMPXMediaGeneralNonPermissibleActions ) );
+ if ( attr & EMPXWrite )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ }
+ }
+
+ TInt trackCount (0);
+ if( media.IsSupported(KMPXMediaGeneralCount) )
+ {
+ trackCount = media.ValueTObjectL<TInt>( KMPXMediaGeneralCount );
+ }
+ if( trackCount < 1 )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+ }
+
+ if ( iOperatorMusicStore )
+ {
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue);
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue);
+ }
+
+ break;
+ }
+
+ case R_MPX_COLLECTION_VIEW_MENU_2:
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
+
+ TInt currentItem( iContainer->CurrentLbxItemIndex() );
+
+ CMPXCollectionViewListBoxArray* array =
+ static_cast<CMPXCollectionViewListBoxArray*>(
+ 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<TMPXGeneralNonPermissibleActions>(
+ 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:
+ {
+ // Do nothing
+ break;
+ }
+ }
+ }
+
+
+
+// ---------------------------------------------------------------------------
+// Dynamically initialises a menu pane for the Genre context
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::DynInitMenuPaneGenreL(
+ TInt aResourceId,
+ CEikMenuPane* aMenuPane )
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPanePlaylistL" );
+
+ switch ( aResourceId )
+ {
+ case R_MPX_COLLECTION_VIEW_MENU_1:
+ {
+ HandleInitMusicMenuPaneL(aMenuPane);
+
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+
+ if ( iContainer->CurrentLbxItemIndex() > KErrNotFound )
+ {
+ TInt usbUnblockingStatus;
+ RProperty::Get( KMPXViewPSUid,
+ KMPXUSBUnblockingPSStatus,
+ usbUnblockingStatus);
+ if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
+ aMenuPane->SetItemDimmed( EMPXCmdPlayItem, EFalse );
+ }
+ }
+
+ if ( iOperatorMusicStore )
+ {
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue);
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue);
+ }
+ break;
+ }
+
+ case R_MPX_COLLECTION_VIEW_MENU_2:
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
+
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, !iUsingNokiaService );
+ break;
+ }
+ case R_MPX_ADD_TO_PL_SUB_MENU:
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToSavedPlaylist, !FindPlaylistsL() );
+ break;
+ }
+ default:
+ {
+ // Do nothing
+ break;
+ }
+ }
+ }
+
+
+// ---------------------------------------------------------------------------
+// Dynamically initialises a menu pane for the Songs context
+// Handling for any tracks view except playlist tracks.
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::DynInitMenuPaneSongsL(
+ TInt aResourceId,
+ CEikMenuPane* aMenuPane )
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPaneAllSongsL" );
+
+ TBool isListEmpty( iContainer->TotalListItemCount() == 0 );
+ TInt selectionCount( 0 );
+ iSelectionIndexCache = iContainer->CurrentSelectionIndicesL(); // not owned
+ switch ( aResourceId )
+ {
+ case R_MPX_COLLECTION_VIEW_MENU_1:
+ {
+ HandleInitMusicMenuPaneL(aMenuPane);
+ if ( isListEmpty )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, 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 );
+ aMenuPane->SetItemDimmed( EMPXCmdGoToMultipleMusicShop, ETrue);
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+
+ TInt usbUnblockingStatus;
+ RProperty::Get( KMPXViewPSUid,
+ KMPXUSBUnblockingPSStatus,
+ usbUnblockingStatus);
+
+ if ( iContainer->IsSelectedItemASong() )
+ {
+ if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
+ }
+ }
+ if ( iOperatorMusicStore )
+ {
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue);
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue);
+ }
+ }
+
+ break;
+ }
+
+ case R_MPX_COLLECTION_VIEW_MENU_2:
+ {
+
+
+ if ( iSelectionIndexCache)
+ {
+ selectionCount = iSelectionIndexCache->Count();
+ }
+ if ( selectionCount > 0 )
+ {
+ // multiple selection
+ aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails,
+ FileDetailsOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
+
+ TInt currentItem( iContainer->CurrentLbxItemIndex() );
+ if ( currentItem > KErrNotFound )
+ {
+ CMPXCollectionViewListBoxArray* array =
+ static_cast<CMPXCollectionViewListBoxArray*>(
+ iContainer->ListBoxArray() );
+
+ if ( array->IsItemBrokenLinkL( currentItem ) ||
+ array->IsItemCorruptedL( currentItem ) )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
+ }
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, !iUsingNokiaService );
+ }
+ }
+ aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
+ if (iServiceHandler->HandleSubmenuL(*aMenuPane))
+ {
+ return;
+ }
+
+ break;
+ }
+ case R_MPX_ADD_TO_PL_SUB_MENU:
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddToSavedPlaylist, !FindPlaylistsL() );
+ break;
+ }
+ default:
+ {
+ // Do nothing
+ break;
+ }
+ }
+ }
+
+
+
+// ---------------------------------------------------------------------------
+// Dynamically initialises a menu pane for the playlist Songs context
+// ---------------------------------------------------------------------------
+//
+void CMPXCollectionViewHgImp::DynInitMenuPanePlaylistSongsL(
+ TInt aResourceId,
+ CEikMenuPane* aMenuPane )
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPanePlaylistSongsL" );
+
+ TBool isListEmpty( iContainer->TotalListItemCount() == 0 );
+
+ switch ( aResourceId )
+ {
+ case R_MPX_COLLECTION_VIEW_MENU_1:
+ {
+ HandleInitMusicMenuPaneL(aMenuPane);
+
+ if ( isListEmpty )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddSongs, EFalse );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, NowPlayingOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
+
+ TInt usbUnblockingStatus;
+ RProperty::Get( KMPXViewPSUid,
+ KMPXUSBUnblockingPSStatus,
+ usbUnblockingStatus);
+
+ if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+ }
+ else
+ {
+ TInt selectionCount( 0 );
+ iSelectionIndexCache = iContainer->CurrentSelectionIndicesL(); // not owned
+ if ( iSelectionIndexCache)
+ {
+ selectionCount = iSelectionIndexCache->Count();
+ }
+ // do not display add songs option when marking is on
+ aMenuPane->SetItemDimmed( EMPXCmdAddSongs, selectionCount > 0 );
+
+ if ( iContainer->CurrentLbxItemIndex() > KErrNotFound )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
+ aMenuPane->SetItemDimmed( EMPXCmdRemove, EFalse );
+ }
+ }
+
+ CMPXCollectionViewListBoxArray* array =
+ static_cast<CMPXCollectionViewListBoxArray*>(
+ iContainer->ListBoxArray() );
+ const CMPXMedia& containerMedia = array->ContainerMedia();
+
+ if ( containerMedia.IsSupported( KMPXMediaGeneralNonPermissibleActions ) )
+ {
+ // check for auto playlist, disable add, remove and reorder
+ TMPXGeneralNonPermissibleActions attr(
+ containerMedia.ValueTObjectL<TMPXGeneralNonPermissibleActions>(
+ KMPXMediaGeneralNonPermissibleActions ) );
+ if ( attr & EMPXWrite )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
+ }
+ }
+ }
+
+ break;
+ }
+
+ case R_MPX_COLLECTION_VIEW_MENU_2:
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
+
+ TInt selectionCount( 0 );
+ iSelectionIndexCache = iContainer->CurrentSelectionIndicesL(); // not owned
+ if ( iSelectionIndexCache)
+ {
+ selectionCount = iSelectionIndexCache->Count();
+ }
+ if ( selectionCount > 0 )
+ {
+ // multiple selection
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
+ }
+ else
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails,
+ FileDetailsOptionVisibilityL() );
+
+ TInt currentItem( iContainer->CurrentLbxItemIndex() );
+
+ if ( currentItem > KErrNotFound )
+ {
+ CMPXCollectionViewListBoxArray* array =
+ static_cast<CMPXCollectionViewListBoxArray*>(
+ iContainer->ListBoxArray() );
+ if ( array->IsItemBrokenLinkL( currentItem ) ||
+ array->IsItemCorruptedL( currentItem ) )
+ {
+ aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
+ }
+ aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, !iUsingNokiaService );
+ }
+ }
+ if (iServiceHandler->HandleSubmenuL(*aMenuPane))
+ {
+ return;
+ }
+
+ break;
+ }
+ default:
+ {
+ // Do nothing
+ break;
+ }
+ }
+ }
+
+// ---------------------------------------------------------------------------
// From MEikMenuObserver
// Dynamically initialises a menu pane.
// ---------------------------------------------------------------------------
@@ -6125,701 +6820,82 @@
CEikMenuPane* aMenuPane )
{
MPX_FUNC( "CMPXCollectionViewHgImp::DynInitMenuPaneL" );
+
CMPXCollectionViewListBoxArray* array =
static_cast<CMPXCollectionViewListBoxArray*>(
iContainer->ListBoxArray() );
- TInt currentItem( iContainer->CurrentLbxItemIndex() );
- TBool isListEmpty( currentItem < 0 );
- TInt selectionCount( 0 );
-
- iSelectionIndexCache = iContainer->CurrentSelectionIndicesL(); // not owned
- if ( iSelectionIndexCache)
- {
- selectionCount = iSelectionIndexCache->Count();
- }
+ const CMPXMedia& containerMedia = array->ContainerMedia();
+ TMPXGeneralType containerType(
+ containerMedia.ValueTObjectL<TMPXGeneralType>( KMPXMediaGeneralType ) );
+ TMPXGeneralCategory containerCategory(
+ containerMedia.ValueTObjectL<TMPXGeneralCategory>(
+ KMPXMediaGeneralCategory ) );
TInt usbUnblockingStatus;
RProperty::Get( KMPXViewPSUid,
KMPXUSBUnblockingPSStatus,
usbUnblockingStatus);
+ // We first construct options menu based on collection browsing context.
+ // For resource R_MPX_COLLECTION_VIEW_MENU_1, R_MPX_COLLECTION_VIEW_MENU_2.
+ if ( containerType == EMPXGroup )
+ {
+ switch (containerCategory)
+ {
+ case EMPXCollection:
+ break;
+ case EMPXArtist:
+ break;
+ case EMPXAlbum:
+ // Artist & Album view
+ DynInitMenuPaneAlbumL(aResourceId, aMenuPane);
+ break;
+ case EMPXPlaylist:
+ // Playlist view
+ DynInitMenuPanePlaylistL(aResourceId, aMenuPane);
+ break;
+ case EMPXSong:
+ // Songs (All Songs) View
+ DynInitMenuPaneSongsL(aResourceId, aMenuPane);
+ break;
+ case EMPXGenre:
+ // Genre View
+ DynInitMenuPaneGenreL(aResourceId, aMenuPane);
+ break;
+ case EMPXComposer:
+ break;
+ default:
+ User::Leave(KErrNotSupported);
+ break;
+ }
+ }
+ else if ( containerType == EMPXItem )
+ {
+ switch (containerCategory)
+ {
+ case EMPXSong:
+ break;
+ case EMPXArtist:
+ break;
+ case EMPXPlaylist:
+ // Playlist tracks view
+ DynInitMenuPanePlaylistSongsL(aResourceId, aMenuPane);
+ break;
+ case EMPXAlbum:
+ case EMPXGenre:
+ case EMPXComposer:
+ // Other tracks view
+ DynInitMenuPaneSongsL(aResourceId, aMenuPane);
+ break;
+ default:
+ User::Leave(KErrNotSupported);
+ break;
+ }
+ }
+
+ // Handle other menu resources.
switch ( aResourceId )
{
- case R_MPX_COLLECTION_VIEW_MENU_1:
- {
- const CMPXMedia& containerMedia = array->ContainerMedia();
- TMPXGeneralType containerType(
- containerMedia.ValueTObjectL<TMPXGeneralType>( KMPXMediaGeneralType ) );
- TMPXGeneralCategory containerCategory(
- containerMedia.ValueTObjectL<TMPXGeneralCategory>(
- KMPXMediaGeneralCategory ) );
-
- HandleInitMusicMenuPaneL(aMenuPane);
-
- MPX_DEBUG3( "CMPXCollectionViewHgImp::DynInitMenuPaneL container type = %d, category = %d", containerType, containerCategory );
-
- // Always dim the find in hg implementation
- aMenuPane->SetItemDimmed( EMPXCmdFind, ETrue );
-
- // Determine if we should hide "Goto now playing" option.
- TBool hideNowPlaying(EFalse);
- MMPXSource* source( iPlaybackUtility->Source() );
- if ( source == 0 )
- {
- MMPXPlaybackUtility* pdPlaybackUtility;
- pdPlaybackUtility = MMPXPlaybackUtility::UtilityL( TUid::Uid( KProgressDownloadUid ) );
- hideNowPlaying = pdPlaybackUtility->Source() ? EFalse : ETrue;
- pdPlaybackUtility->Close();
- }
- if (usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive)
- {
- aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
- }
-
- aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, hideNowPlaying );
-
- if ( !isListEmpty )
- {
- const CMPXMedia& media = array->MediaL( currentItem );
- TMPXGeneralType type(
- media.ValueTObjectL<TMPXGeneralType>( KMPXMediaGeneralType ) );
- TMPXGeneralCategory category(
- media.ValueTObjectL<TMPXGeneralCategory>(
- KMPXMediaGeneralCategory ) );
- MPX_DEBUG3( "CMPXCollectionViewHgImp::DynInitMenuPaneL item type = %d, category = %d", type, category );
-#ifdef SINGLE_CLICK_INCLUDED
- if ( containerType == EMPXGroup && containerCategory == EMPXAlbum )
- {
- // Artists & Albums view
- switch ( category )
- {
- case EMPXAlbum:
- {
- TBool landscapeOrientation = Layout_Meta_Data::IsLandscapeOrientation();
- 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
- {
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- 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, EFalse );
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, EFalse );
- }
- }
- break;
- }
- case EMPXCommand:
- {
- 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 );
- break;
- }
- }
- }
- else
-#endif
- if ( containerType == EMPXItem && containerCategory == EMPXPlaylist )
- {
- // in playlist tracks view
- // enable reordering and add songs in playlist view
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
-#endif
-
- }
- else
- {
- // do not display add songs option when marking is on
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, selectionCount > 0 );
- TInt totalItemCount( iContainer->TotalListItemCount() );
- // display reorder option only when more than 1 item is visible
- // do not display reorder option when marking is on
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
-#else
- aMenuPane->SetItemDimmed( EMPXCmdReorder,
- ( totalItemCount > 1 && selectionCount == 0 ) ?
- EFalse : ETrue );
-#endif
- aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, EFalse );
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
-#endif
- }
-
- if ( containerMedia.IsSupported(
- KMPXMediaGeneralNonPermissibleActions ) )
- {
- // check for auto playlist, disable add, remove and reorder
- TMPXGeneralNonPermissibleActions attr(
- containerMedia.ValueTObjectL<TMPXGeneralNonPermissibleActions>(
- KMPXMediaGeneralNonPermissibleActions ) );
- if ( attr & EMPXWrite )
- {
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
- }
- }
- }
- else if ( type == EMPXItem )
- {
- switch ( category )
- {
- case EMPXPlaylist:
- {
- // playlist view
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
- }
- if ( media.IsSupported(
- KMPXMediaGeneralNonPermissibleActions ) )
- {
- // check for auto playlist, disable delete
- TMPXGeneralNonPermissibleActions attr(
- media.ValueTObjectL<TMPXGeneralNonPermissibleActions>(
- KMPXMediaGeneralNonPermissibleActions ) );
- if ( attr & EMPXWrite )
- {
- aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
- }
- }
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
- TInt trackCount (0);
- if(media.IsSupported(KMPXMediaGeneralCount))
- {
- trackCount = media.ValueTObjectL<TInt>( KMPXMediaGeneralCount );
- }
- if( trackCount < 1 )
- {
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
- }
- break;
- }
-#ifdef SINGLE_CLICK_INCLUDED
- case EMPXAlbum:
- {
- // Album > Tracks view
- if ( iContainer->IsSelectedItemASong() )
- {
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
- 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 );
- }
- break;
- }
- case EMPXGenre:
- {
- // genre view
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- 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 );
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
- }
- break;
- }
-#endif
-
-#ifdef SINGLE_CLICK_INCLUDED
- case EMPXArtist:
- case EMPXComposer:
-#else
- case EMPXAlbum:
- case EMPXArtist:
- case EMPXGenre:
- case EMPXComposer:
-#endif
- {
- // artist, album, genre, composer view
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- 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 );
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
- }
- break;
- }
- case EMPXSong:
- {
- // any tracks view except playlist tracks
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
-#endif
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, SendOptionVisibilityL() );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, EFalse );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
-#endif
- }
- break;
- }
- case EMPXCommand:
- {
- 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 );
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
-#endif
-
- }
- break;
- default:
- {
- ASSERT( 0 );
- break;
- }
- }
- }
-
- if ( iUpnpFrameworkSupport )
- {
- HandleDynInitUpnpL( aResourceId, *aMenuPane );
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
- }
- }
- else
- {
- // list empty
-
- aMenuPane->SetItemDimmed( EMPXCmdCreatePlaylist,
- ( containerType == EMPXGroup && containerCategory == EMPXPlaylist) ? // in playlist view?
- EFalse : ETrue );
- if ( containerType == EMPXItem && containerCategory == EMPXPlaylist)
- {
- // in playlist tracks view
- if ( containerMedia.IsSupported(
- KMPXMediaGeneralNonPermissibleActions ) )
- {
- // check for auto playlist, disable add songs
- TMPXGeneralNonPermissibleActions attr(
- containerMedia.ValueTObjectL<TMPXGeneralNonPermissibleActions>(
- KMPXMediaGeneralNonPermissibleActions ) );
- if ( attr & EMPXWrite )
- {
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- }
- }
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdAddSongs, ETrue );
- }
- aMenuPane->SetItemDimmed( EMPXCmdUpnpPlayVia, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdUPnPAiwCmdCopyToExternalCriteria, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAddToPlaylist, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdReorder, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSend, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdDelete, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRemove, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlayItem, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, ETrue );
- }
- break;
- }
- case R_MPX_COLLECTION_VIEW_MENU_2:
- {
- if ( !isListEmpty )
- {
- const CMPXMedia& media = array->MediaL( currentItem );
- TMPXGeneralType type(
- media.ValueTObjectL<TMPXGeneralType>( KMPXMediaGeneralType ) );
- TMPXGeneralCategory category(
- media.ValueTObjectL<TMPXGeneralCategory>(
- KMPXMediaGeneralCategory ) );
- const CMPXMedia& containerMedia = array->ContainerMedia();
- TMPXGeneralType containerType(
- containerMedia.ValueTObjectL<TMPXGeneralType>(
- KMPXMediaGeneralType ) );
- TMPXGeneralCategory containerCategory(
- containerMedia.ValueTObjectL<TMPXGeneralCategory>(
- KMPXMediaGeneralCategory ) );
- MPX_DEBUG3( "CMPXCollectionViewHgImp::DynInitMenuPaneL container type = %d, category = %d", containerType, containerCategory );
- MPX_DEBUG3( "CMPXCollectionViewHgImp::DynInitMenuPaneL item type = %d, category = %d", type, category );
- if ( type == EMPXItem)
- {
- switch ( category )
- {
- case EMPXPlaylist:
- {
- // playlist view
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdRename, EFalse );
- }
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, EFalse );
- if ( media.IsSupported(
- KMPXMediaGeneralNonPermissibleActions ) )
- {
- // check for auto playlist, disable delete
- TMPXGeneralNonPermissibleActions attr(
- media.ValueTObjectL<TMPXGeneralNonPermissibleActions>(
- KMPXMediaGeneralNonPermissibleActions ) );
- if ( attr & EMPXWrite )
- {
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
- }
- }
- if ( array->IsItemBrokenLinkL( currentItem ) ||
- array->IsItemCorruptedL( currentItem ) )
- {
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
- }
- break;
- }
- case EMPXAlbum:
- case EMPXArtist:
- case EMPXGenre:
- case EMPXComposer:
- {
- // artist, album, genre, composer view
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
- if ( usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive )
- {
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
- }
- else
- {
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
-#else
- aMenuPane->SetItemDimmed( EMPXCmdRename, EFalse );
-#endif
- }
-#ifndef SINGLE_CLICK_INCLUDED
- if ( category == EMPXAlbum )
- {
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, EFalse );
- // if unknown entry exist in album level, disable album art
- // for last item, if unknown exist it'll be at this
- // location
- if ( array->IsCategoryUnknownExist() &&
- category == EMPXAlbum &&
- currentItem == iContainer->TotalListItemCount() - 1 )
- {
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
- }
- if ( containerCategory == EMPXArtist )
- {
- // in artist/album view, do not display album art/rename
- // option on All ( first item in list )
- if ( currentItem == 0 )
- {
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
- }
- }
- }
- else
-#endif
- {
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
- }
-#ifdef SINGLE_CLICK_INCLUDED
- if ( category == EMPXComposer )
-#else
- if ( ( category == EMPXGenre ) || ( category == EMPXComposer ) )
-#endif
- {
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- }
-#ifdef SINGLE_CLICK_INCLUDED
- else if ( category == EMPXGenre )
- {
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, EFalse );
- }
-#endif
- else
- {
- if ( array->IsCategoryUnknownExist() &&
- ( category == EMPXAlbum || category == EMPXArtist ) &&
- currentItem == iContainer->TotalListItemCount() - 1 )
- {
- // if unknown entry exist in artist or album level
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- }
- else
- {
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
-#else
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, EFalse );
-#endif
- }
- }
- aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
-
- if ( !iUsingNokiaService )
- {
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- }
- break;
- }
- case EMPXSong:
- {
- // any tracks view
-#ifdef __ENABLE_MSK
- // show context menu if MSK selected and there are
- // multiple selections; otherwise, show options menu
- if ( ( selectionCount > 0 ) && iShowContextMenu )
- {
- MenuBar()->SetMenuType(CEikMenuBar::EMenuContext);
- iShowContextMenu = EFalse;
- }
- else
- {
- MenuBar()->SetMenuType(CEikMenuBar::EMenuOptions);
- }
-#endif //__ENABLE_MSK
-
- if ( selectionCount > 0 )
- {
- // multiple selection
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- }
- else
- {
- TBool fileDetailVisibility( FileDetailsOptionVisibilityL() );
- // use the same criteria for showing/hiding song details
- // and album art
- aMenuPane->SetItemDimmed( EMPXCmdSongDetails,
- fileDetailVisibility );
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
-#else
- TBool vis = ETrue;
- TRAPD( err, vis = SetAsRingToneOptionVisibilityL() );
-
- if ( err )
- {
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade,
- ETrue); // dim the option if any sql error.
- }
- else
- {
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade,
- vis);
- }
-#endif
-
- if ( array->IsItemBrokenLinkL( currentItem ) ||
- array->IsItemCorruptedL( currentItem ) )
- {
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- }
- else // Show this option even when song is DRM protected
- {
-#ifdef SINGLE_CLICK_INCLUDED
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
-#else
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, EFalse );
-#endif
- }
- }
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
- if ( !iUsingNokiaService )
- {
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- }
- if (iServiceHandler->HandleSubmenuL(*aMenuPane))
- {
- return;
- }
- break;
- }
- case EMPXCommand:
- {
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
-
- }
- break;
- default:
- {
- // other types, not handled
- break;
- }
- }
- }
- }
- else
- {
- // list empty
- aMenuPane->SetItemDimmed( EMPXCmdUseAsCascade, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdSongDetails, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdRename, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdAlbumArt, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, ETrue );
- aMenuPane->SetItemDimmed( EMPXCmdPlaylistDetails, ETrue );
- }
- aMenuPane->SetItemDimmed( EAknCmdExit, iExitOptionHidden );
- break;
- }
case R_MPX_ADD_TO_PL_SUB_MENU:
{
aMenuPane->SetItemDimmed( EMPXCmdAddToSavedPlaylist, !FindPlaylistsL() );
@@ -6833,43 +6909,13 @@
}
break;
}
- case R_MPX_COLLECTION_VIEW_MUSIC_MENU:
- {
- MMPXPlaybackUtility* pdPlaybackUtility;
- pdPlaybackUtility = MMPXPlaybackUtility::UtilityL( TUid::Uid( KProgressDownloadUid ) );
- MMPXSource* pdsource( pdPlaybackUtility->Source() );
- MMPXSource* source( iPlaybackUtility->Source() );
- TBool hideNowPlaying;
- hideNowPlaying = ( (pdsource == 0)
- && (source == 0));
- pdPlaybackUtility->Close();
- if ( hideNowPlaying )
- {
- aMenuPane->SetItemDimmed( EMPXCmdGoToNowPlaying, ETrue );
- }
- if (usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive)
- {
- aMenuPane->SetItemDimmed( EMPXCmdRefreshLibrary, ETrue );
- }
- aMenuPane->SetItemDimmed( EAknCmdExit, iExitOptionHidden );
- aMenuPane->SetItemDimmed(
- EMPXCmdGoToMusicShop, iGoToMusicShopOptionHidden );
- if (iOperatorMusicStore)
- {
- aMenuPane->SetItemDimmed(EMPXCmdGoToMusicShop, ETrue);
- }
- else
- {
- aMenuPane->SetItemDimmed(EMPXCmdGoToMultipleMusicShop, ETrue);
- }
- break;
- }
case R_MPX_COLLECTION_VIEW_EMBEDDED_PLAYLIST_VIEW:
{
// if it's from browser/messaging, display save option if
// it has not been saved
aMenuPane->SetItemDimmed( EMPXCmdSavePlaylist,
( !iCommonUiHelper->IsHostMessagingBrowserL() || !MPXTlsHelper::NeedSave() ) );
+ TBool isListEmpty( iContainer->TotalListItemCount() == 0 );
aMenuPane->SetItemDimmed( EMPXCmdFindInMusicShop, isListEmpty );
break;
@@ -6896,20 +6942,6 @@
}
}
-#ifndef SINGLE_CLICK_INCLUDED
- if ( iServiceHandler->IsAiwMenu(aResourceId) && aResourceId == R_MPX_USE_AS_CASCADE )
- {
- MPX_DEBUG1( "CMPXCollectionViewHgImp::DynInitMenuPaneL(): Aiw menu for assign" );
- CAiwGenericParamList& paramList = iServiceHandler->InParamListL();
- FillAiwParametersL(paramList);
- iServiceHandler->InitializeMenuPaneL(*aMenuPane,
- aResourceId,
- EMPXCmdAiwCmdAssign,
- paramList);
- MPX_DEBUG1( "CMPXCollectionViewHgImp::DynInitMenuPaneL(): Aiw menu for assign end" );
- }
-#endif
-
if (!(aResourceId == R_AVKON_MENUPANE_MARKABLE_LIST && usbUnblockingStatus == EMPXUSBUnblockingPSStatusActive))
{
// Custom handling of menu pane for markable lists
@@ -6934,11 +6966,7 @@
if ( iContainer )
{
//to keep/change focus on right song in rename/remove
-#ifdef SINGLE_CLICK_INCLUDED
if ( aEventType == EEventItemSingleClicked )
-#else
- if ( aEventType == EEventItemClicked )
-#endif
{
if ( !iHandlingKeyEvent && iCollectionCacheReady )
{
@@ -6957,9 +6985,7 @@
}
if ( aEventType == EEventEnterKeyPressed || aEventType == EEventItemDoubleClicked
-#ifdef SINGLE_CLICK_INCLUDED
|| aEventType == EEventItemSingleClicked
-#endif
)
{
if ( iContainer->IsInReorderMode() )
@@ -7746,7 +7772,6 @@
{
iAddingSong = EFalse;
TRAP_IGNORE( GetDurationL() );
- TRAP_IGNORE( UpdateNaviPaneL() );
}
if( iInAlbumArtDialog )
{
@@ -7780,11 +7805,6 @@
void CMPXCollectionViewHgImp::HandleViewActivation(const TVwsViewId& aNewlyActivatedViewId,
const TVwsViewId& /*aViewIdToBeDeactivated */)
{
- if( aNewlyActivatedViewId.iAppUid == TUid::Uid(KMusicPlayerAppUidConstant) &&
- aNewlyActivatedViewId.iViewUid == Id() )
- {
- TRAP_IGNORE( UpdateNaviPaneL() );
- }
}
// -----------------------------------------------------------------------------
@@ -7794,18 +7814,6 @@
void CMPXCollectionViewHgImp::HandleViewDeactivation(const TVwsViewId& aViewIdToBeDeactivated,
const TVwsViewId& /*aNewlyActivatedViewId*/)
{
- if( aViewIdToBeDeactivated.iAppUid == TUid::Uid(KMusicPlayerAppUidConstant) &&
- aViewIdToBeDeactivated.iViewUid == Id() )
- {
- if( iContainer )
- {
- if ( iNaviPane && iNaviDecorator )
- {
- if (iNaviPane->Top() == iNaviDecorator) // Only pop if it's the top, don't pop when it's behind a dialog
- iNaviPane->Pop( iNaviDecorator );
- }
- }
- }
}
// -----------------------------------------------------------------------------
@@ -8048,9 +8056,16 @@
}
else if ( cba )
{
- cba->SetCommandSetL(
- ( cpath->Levels() == 3 && !iIsEmbedded ) ?
- R_MPX_OPTIONS_HIDE_CBA : R_AVKON_SOFTKEYS_OPTIONS_BACK );
+ if ( iContainer->IsTBoneView() )
+ {
+ cba->SetCommandSetL( R_AVKON_SOFTKEYS_OPTIONS_BACK );
+ }
+ else
+ {
+ cba->SetCommandSetL(
+ ( cpath->Levels() == 3 && !iIsEmbedded ) ?
+ R_MPX_OPTIONS_HIDE_CBA : R_AVKON_SOFTKEYS_OPTIONS_BACK );
+ }
cba->MakeVisible( ETrue );
cba->DrawDeferred();
}
@@ -8126,40 +8141,32 @@
CleanupStack::PopAndDestroy( path );
}
-// -----------------------------------------------------------------------------
-// CMPXCollectionViewHgImp::IADCheckTimerCallBack
-// -----------------------------------------------------------------------------
-//
-TInt CMPXCollectionViewHgImp::IADCheckTimerCallBack(TAny* aHgViewObject)
- {
- MPX_FUNC( "CMPXCollectionViewHgImp::IADCheckTimerCallBack" );
-
- if (aHgViewObject)
- {
- CMPXCollectionViewHgImp* hgViewObject = static_cast<CMPXCollectionViewHgImp*>(aHgViewObject);
- hgViewObject->StartCheckingforIADUpdates();
- }
-
- return KErrNone;
- }
+
// -----------------------------------------------------------------------------
-// CMPXCollectionViewHgImp::StartCheckingforIADUpdates
+// CMPXCollectionViewHgImp::SaveSelectedAlbum
// -----------------------------------------------------------------------------
//
-void CMPXCollectionViewHgImp::StartCheckingforIADUpdates()
- {
- MPX_FUNC( "CMPXCollectionViewHgImp::StartCheckingforIADUpdates" );
-
- if ( iTimer )
- {
- iTimer->Cancel();
- delete iTimer;
- iTimer = NULL;
- }
-
- AppUi()->HandleCommandL(EMPXCmdCheckIADUpdates);
- }
-
+void CMPXCollectionViewHgImp::SaveSelectedAlbum (CMPXMedia &aMedia)
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::SaveSelectedAlbum" );
+ if (iStoredAlbum)
+ {
+ delete iStoredAlbum;
+ }
+ iStoredAlbum = CMPXMedia::NewL(aMedia);
+ }
+
+
+// -----------------------------------------------------------------------------
+// CMPXCollectionViewHgImp::RestoreSelectedAlbum
+// -----------------------------------------------------------------------------
+//
+const CMPXMedia* CMPXCollectionViewHgImp::RestoreSelectedAlbum ()
+ {
+ MPX_FUNC( "CMPXCollectionViewHgImp::RestoreSelectedAlbum" );
+
+ return iStoredAlbum;
+ }
// End of File