private async void SubtitlesButton_Tapped(object sender, TappedRoutedEventArgs e) { AppBarButton btn = sender as AppBarButton; FlyoutBase f = btn.Flyout; List <Player.SubtitleExtended> subtitles = await PlayerHelper.GetSubtitles(); if (subtitles == null) { e.Handled = true; MessageDialog md = new MessageDialog("No subtitles available", "Change subtitle"); await md.ShowAsync(); } else { Player.SubtitleExtended disabledst = new Player.SubtitleExtended(); disabledst.index = -1; disabledst.name = "Disabled"; disabledst.isInUse = !subtitles.Exists((s) => s.isInUse == true); subtitles.Add(disabledst); SubtitlesFlyout.ItemsSource = subtitles; } }
public static async Task <List <Player.SubtitleExtended> > GetSubtitles() { JArray properties = new JArray("subtitles", "currentsubtitle", "subtitleenabled"); JObject result = await Player.GetProperties(GlobalVariables.CurrentPlayerState.PlayerType, properties); if (result != null) { JArray subtitles = (JArray)result["subtitles"]; if (subtitles.Count != 0) { JToken subtitleenabled = result["subtitleenabled"]; if (subtitleenabled != null) { bool stenabled = (bool)subtitleenabled; List <Player.SubtitleExtended> newsubtitles = new List <Player.SubtitleExtended>(); foreach (JToken s in subtitles) { Player.SubtitleExtended news = new Player.SubtitleExtended(); news.index = (int)s["index"]; news.language = (string)s["language"]; news.name = (string)s["name"]; newsubtitles.Add(news); } JToken cursubtitle = result["currentsubtitle"]; if (cursubtitle.Count() != 0 && stenabled) { int id = (int)cursubtitle["index"]; Player.SubtitleExtended curitem = newsubtitles.FirstOrDefault(s => s.index == id); if (curitem != null) { curitem.isInUse = true; } } foreach (Player.SubtitleExtended se in newsubtitles) { if (se.isInUse == null) { se.isInUse = false; } } return(newsubtitles); } } } return(null); }
private async void SubtitleFlyout_Closed(object sender, object e) { ListPickerFlyout f = (ListPickerFlyout)sender; object result = f.SelectedValue; if (result != null) { Player.SubtitleExtended st = (Player.SubtitleExtended)result; if (st.index == -1) { await Player.DisableSubtitle(GlobalVariables.CurrentPlayerState.PlayerType); } else { await Player.SetAndEnableSubtitle(GlobalVariables.CurrentPlayerState.PlayerType, st.index); } } }