public MenuFlyout GetPlaylistMenuFlyout(IMenuFlyoutItemClickListener listener = null, MenuFlyoutOption option = null) { if (option == null) { option = new MenuFlyoutOption() { ShowSelect = false } } ; var flyout = new MenuFlyout(); var shuffleItem = new MenuFlyoutItem() { Icon = new SymbolIcon(Symbol.Shuffle), Text = Helper.Localize("Shuffle"), Name = PlaylistMenuName }; shuffleItem.SetToolTip("Shuffle and Play"); shuffleItem.Click += (s, args) => { MediaHelper.ShuffleAndPlay(Data as IEnumerable <Music>); }; flyout.Items.Add(shuffleItem); flyout.Items.Add(GetAddToMenuFlyoutSubItem(listener)); if (option.ShowMultiSelect) { flyout.Items.Add(GetMultiSelectItem(listener, option.MultiSelectOption)); } else if (option.ShowSelect) { flyout.Items.Add(GetSelectItem(listener, option.MultiSelectOption)); } return(flyout); }
public static MenuFlyout SetMusicMenu(object sender, IMenuFlyoutItemClickListener clickListener = null, IMenuFlyoutHelperBuildListener buildListener = null, MenuFlyoutOption option = null) { return(SetMenu(helper => helper.GetMusicMenuFlyout(clickListener, option), sender, buildListener)); }
public MenuFlyout GetMusicMenuFlyout(IMenuFlyoutItemClickListener listener = null, MenuFlyoutOption option = null) { if (option == null) { option = new MenuFlyoutOption(); } Music music = (Data as IMusicable).ToMusic(); var flyout = new MenuFlyout(); var localizedPlay = Helper.Localize("Play"); var playItem = new MenuFlyoutItem() { Icon = new SymbolIcon(Symbol.Play), Text = localizedPlay, Name = MusicMenuName }; playItem.SetToolTip(localizedPlay + Helper.LocalizeMessage("MusicName", music.Name)); playItem.Click += (s, args) => { MediaHelper.SetMusicAndPlay(music); }; flyout.Items.Add(playItem); if (MediaHelper.CurrentMusic != null && music != MediaHelper.CurrentMusic) { var playNextItem = new MenuFlyoutItem() { Text = Helper.LocalizeText("PlayNext"), Icon = new SymbolIcon(Symbol.Upload) }; playNextItem.Click += (s, args) => { int index = MediaHelper.CurrentMusic.Index + 1; if (music.Index >= 0) { MediaHelper.MoveMusic(music.Index, index); } else { MediaHelper.AddMusic(music, index); listener?.AddTo(music, MediaHelper.CurrentPlaylist, index, AddToCollectionType.NowPlaying); foreach (var clickListener in ClickListeners) { clickListener.AddTo(music, MediaHelper.CurrentPlaylist, index, AddToCollectionType.NowPlaying); } } Helper.ShowNotificationWithoutLocalization(Helper.LocalizeMessage("SetPlayNext", music.Name)); }; flyout.Items.Add(playNextItem); } flyout.Items.Add(GetAddToMenuFlyoutSubItem(listener)); if (option.ShowRemove) { flyout.Items.Add(GetRemovableMenuFlyoutItem(music, listener)); } if (option.ShowSelect || option.MultiSelectOption != null) { flyout.Items.Add(GetSelectItem(listener, option.MultiSelectOption)); } flyout.Items.Add(GetShowInExplorerItem(music.Path, StorageItemTypes.File)); var deleteItem = new MenuFlyoutItem() { Icon = new SymbolIcon(Symbol.Delete), Text = Helper.Localize("Delete From Disk") }; deleteItem.Click += async(s, args) => { await new RemoveDialog() { Message = Helper.LocalizeMessage("DeleteMusicMessage", music.Name), Confirm = async() => { MainPage.Instance?.Loader.ShowIndeterminant("ProcessRequest"); MusicLibraryPage.AllSongs.Remove(music); Settings.settings.RemoveMusic(music); MediaHelper.DeleteMusic(music); listener?.Delete(music); if (!await Helper.FileNotExist(music.Path)) { StorageFile file = await StorageFile.GetFileFromPathAsync(music.Path); await file.DeleteAsync(); } MainPage.Instance?.Loader.Hide(); Helper.ShowNotification(Helper.LocalizeMessage("MusicDeleted", music.Name)); } }.ShowAsync(); }; deleteItem.SetToolTip(Helper.LocalizeMessage("DeleteMusic", music.Name), false); flyout.Items.Add(deleteItem); foreach (var item in GetMusicPropertiesMenuFlyout(option.ShowSeeArtistsAndSeeAlbum).Items) { flyout.Items.Add(item); } return(flyout); }