Пример #1
0
        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;
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
                }
            }
        }