示例#1
0
文件: FeedbackView.cs 项目: hdir/ga10
        public FeedbackView()
        {
            var webView = new WebView()
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Fill,
                Source            = Config.FeedbackUrl,
            };
            var spinner = new ActivityIndicator()
            {
                HorizontalOptions = LayoutOptions.Center,
                IsRunning         = true,
            };

            var lbl = new Label()
            {
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                Text = "Laster",
            };

            var retry = new Label()
            {
                HorizontalOptions       = LayoutOptions.Center,
                VerticalOptions         = LayoutOptions.Center,
                HorizontalTextAlignment = TextAlignment.Center,
                VerticalTextAlignment   = TextAlignment.Center,
                IsVisible     = false,
                FormattedText = new FormattedString()
                {
                    Spans =
                    {
                        new Span()
                        {
                            Text     = "\u21BB",
                            FontSize = Sizes.TextLarge,
                        },
                        new Span()
                        {
                            Text = "\nPrøv igjen",
                        },
                    }
                }
            };

            retry.AddTouch(async(sender, args) =>
            {
                if (!spinner.IsRunning)
                {
                    spinner.IsRunning = true;
                    lbl.Text          = "Laster";
                    retry.IsVisible   = false;
                    await Task.Delay(1000);
                    webView.Reload();
                }
            });

            var overlay = new StackLayout()
            {
                HorizontalOptions = LayoutOptions.Center,
                VerticalOptions   = LayoutOptions.Center,
                Children          =
                {
                    spinner,
                    lbl,
                    retry,
                }
            };

            webView.Navigated += (sender, args) =>
            {
                switch (args.Result)
                {
                case WebNavigationResult.Success:
                    overlay.IsVisible = false;
                    webView.IsVisible = true;
                    break;

                case WebNavigationResult.Cancel:
                case WebNavigationResult.Timeout:
                case WebNavigationResult.Failure:
                    lbl.Text          = "Nettverksproblem";
                    spinner.IsRunning = false;
                    webView.IsVisible = false;
                    retry.IsVisible   = true;
                    break;

                default:
                    break;
                }
            };

            Content = new Grid()
            {
                HorizontalOptions = LayoutOptions.Fill,
                VerticalOptions   = LayoutOptions.Fill,
                Children          =
                {
                    webView,
                    overlay
                }
            };
        }