Esempio n. 1
0
        private async Task InitializeApp()
        {
            if (NavigationStackState == null)
            {
                var SplashScreen = new GradientContentPage()
                {
                    StartColor = Color.FromHex("E6EBEF"),
                    EndColor   = Color.FromHex("A6CFED")
                };
                var SplashImage = new Image()
                {
                    VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand, WidthRequest = 400, HeightRequest = 400
                };
                var LoadingIndicator = new ActivityIndicator()
                {
                    IsRunning = true, Color = Color.FromHex("8CB9DB"), VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center
                };
                var LoadingError = new Label()
                {
                    TextColor = Color.FromHex("ff3333"), VerticalOptions = LayoutOptions.Center, HorizontalOptions = LayoutOptions.Center
                };
                var SplashGrid = new Grid()
                {
                    VerticalOptions   = LayoutOptions.FillAndExpand,
                    HorizontalOptions = LayoutOptions.FillAndExpand,
                    ColumnDefinitions = new ColumnDefinitionCollection()
                    {
                        new ColumnDefinition()
                        {
                            Width = new GridLength(1, GridUnitType.Star)
                        },
                        new ColumnDefinition()
                        {
                            Width = new GridLength(7, GridUnitType.Star)
                        },
                        new ColumnDefinition()
                        {
                            Width = new GridLength(1, GridUnitType.Star)
                        }
                    },
                    RowDefinitions = new RowDefinitionCollection()
                    {
                        new RowDefinition()
                        {
                            Height = new GridLength(1, GridUnitType.Star)
                        },
                        new RowDefinition()
                        {
                            Height = new GridLength(7, GridUnitType.Star)
                        },
                        new RowDefinition()
                        {
                            Height = new GridLength(1, GridUnitType.Star)
                        },
                        new RowDefinition()
                        {
                            Height = new GridLength(1, GridUnitType.Star)
                        }
                    },
                };
                SplashGrid.Children.Add(SplashImage, 1, 1);
                SplashGrid.Children.Add(LoadingIndicator, 1, 2);
                SplashGrid.Children.Add(LoadingError, 1, 3);

                SplashScreen.Content = SplashGrid;

                SplashImage.Source = ImageSource.FromFile("splash_logo.png");
                SplashImage.Aspect = Aspect.AspectFit;

                MainPage = new NavigationPage(SplashScreen);
                NavigationPage.SetHasNavigationBar(SplashScreen, false);

                var CreateTablesTask   = DB.CreateTablesAsync();
                var CreateTablesResult = await CreateTablesTask;
                if (!CreateTablesResult.Success)
                {
                    LoadingIndicator.IsVisible = false;
                    LoadingError.IsVisible     = true;
                    LoadingError.Text          = CreateTablesResult.Message;
                    return;
                }

                ContentPage NextForm = UserId.Value != Guid.Empty ?
                                       (ContentPage) new MainMenu()
                {
                    StartColor = Color.FromHex("E6EBEF"),
                    EndColor   = Color.FromHex("A6CFED")
                } :
                (ContentPage) new LoginForm()
                {
                    StartColor = Color.FromHex("E6EBEF"),
                    EndColor   = Color.FromHex("A6CFED")
                };

                await Task.Delay(2000);

                await MainPage.Navigation.PushAsync(NextForm);

                MainPage.Navigation.RemovePage(SplashScreen);
            }
            else
            {
                MainPage = new NavigationPage();
                for (int i = 0; i < NavigationStackState.Length; i++)
                {
                    if (NavigationStackState[i] != null)
                    {
                        var page = NavigationStackState[i];
                        try
                        {
                            page.Parent = null;
                            await MainPage.Navigation.PushAsync(page, false);
                        }
                        catch (Exception err)
                        {
                        }
                    }
                }
            }

            var AccessesResult = await App.DB.FetchUserAccessesAsync();

            CheckForPersonnelWorkingTime();

            StaticMainPage = MainPage;

            await Task.Delay(500);

            OrderPreviewFontSize = new SettingField <int>("OrderPreviewFontSize", (int)Math.Round(Math.Min(StaticMainPage.Width, StaticMainPage.Height) * App.DeviceSizeDensity / 70));

            if (QRScanner != null)
            {
                QRScanner.OnScanResult = new Action <QRScanResult>((result) =>
                {
                    //TODO
                });
            }
        }