Esempio n. 1
0
        public static void showBelow(cave.GuiApplicationContext ctx, Windows.UI.Xaml.UIElement w, cave.ui.Menu menu)
        {
            if (!(w != null))
            {
                return;
            }
            if (!(menu != null))
            {
                return;
            }
            var widget  = w;
            var context = ctx;
            var pm      = new Windows.UI.Xaml.Controls.MenuFlyout();
            var array   = menu.getEntries();

            if (array != null)
            {
                var n = 0;
                var m = array.Count;
                for (n = 0; n < m; n++)
                {
                    var entry = array[n];
                    if (entry != null)
                    {
                        var i = new Windows.UI.Xaml.Controls.MenuFlyoutItem();
                        i.Text   = entry.title;
                        i.Click += (sender, e) => {
                            entry.handler();
                        };
                        pm.Items.Add(i);
                    }
                }
            }
            pm.ShowAt(widget, new Windows.Foundation.Point(0, Widget.getHeight(widget)));
        }
        private async void SingleDownloadBtn_Click(object sender, RoutedEventArgs e)
        {
            var btn   = sender as DropDownButton;
            var video = (BiliVideo)btn.DataContext;

            if (btn.Flyout != null)
            {
                return;
            }
            btn.Content = new ProgressRing()
            {
                IsActive = true, Height = 20, Width = 20
            };

            BiliVideoDashInfo dashInfo;

            try
            {
                dashInfo = await BiliVideoHelper.GetVideoDashStreamAsync((BiliVideo)btn.DataContext, Settings.SESSDATA);
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex.Message);
                btn.Content = "错误";
                return;
            }

            btn.Content = "下载";
            var flyout = new Windows.UI.Xaml.Controls.MenuFlyout();
            var items  = flyout.Items;

            foreach (var info in dashInfo.Videos)
            {
                var item = new Windows.UI.Xaml.Controls.MenuFlyoutItem()
                {
                    Text        = $"{info.Quality.ToQualityString()}-{info.Codec}",
                    DataContext = info
                };
                item.Click += async(s, args) =>
                {
                    var task = VideoDownloadManager.CreateDashDownloadAsync
                                   (video,
                                   (DashVideoInfo)item.DataContext,
                                   dashInfo.Audios.OrderByDescending(a => a.Quality).First());
                    ShowTipWithMessage($"{video.Name}-{info.Quality.ToQualityString()}-{info.Codec}");
                    await task;
                };
                items.Add(item);
            }
            btn.Flyout = flyout;
            flyout.ShowAt(btn);
        }
Esempio n. 3
0
        public object Execute2(object sender, object parameter)
        {
            FrameworkElement senderElement = sender as FrameworkElement;

            Windows.UI.Xaml.Controls.MenuFlyout mf = (Windows.UI.Xaml.Controls.MenuFlyout)FlyoutBase.GetAttachedFlyout(senderElement);
            var e = (Windows.UI.Xaml.Input.TappedRoutedEventArgs)parameter;

            foreach (var item in mf.Items)
            {
                item.DataContext = (e.OriginalSource as FrameworkElement).DataContext;
            }

            mf.ShowAt(senderElement, e.GetPosition(senderElement));
            return(null);
        }