Ejemplo n.º 1
0
        private void ShowSplashScreen(GeneralSettingsModel generalSettingsModel)
        {
            var splashWindow = new SplashWindow
            {
                DataContext = new SplashWindowViewModel()
            };

            SplashScreen = splashWindow;

            if (generalSettingsModel.RememberScreenPosition)
            {
                var positionsInfo = new WindowPositionsInfo
                {
                    Width           = splashWindow.Width,
                    Height          = splashWindow.Height,
                    DisplaySettings = generalSettingsModel.DisplaySettings,
                    StartupLocation = WindowStartupLocation.CenterScreen
                };

                if (positionsInfo.DisplaySettings != null)
                {
                    positionsInfo.DisplaySettings.Maximized = false;
                }

                WindowPositionsService.SetPosition(splashWindow, positionsInfo);
            }

            splashWindow.Show();

            ResetSplashCreated.Set();
            Dispatcher.Run();
        }
Ejemplo n.º 2
0
        private void ShowMainWindow()
        {
            LogProvider.Log.Info($"Screen: {Utils.GetScreenResolution()}");
            LogProvider.Log.Info($"Dpi: {Utils.GetCurrentDpi()}");

            try
            {
                var settingsService = ServiceLocator.Current.GetInstance <ISettingsService>();
                var settingsModel   = settingsService.GetSettings();

                mainWindowViewModel = new MainWindowViewModel();

                var mainRadWindow = (RadWindow)Shell;

                mainRadWindow.DataContext = mainWindowViewModel;

                if (settingsModel != null && settingsModel.GeneralSettings != null)
                {
                    // set logging
                    LogProvider.Log.IsAdvanced = settingsModel.GeneralSettings.IsAdvancedLoggingEnabled;

                    LogProvider.Log.Info($"Advanced logging: {settingsModel.GeneralSettings.IsAdvancedLoggingEnabled}");

                    if (settingsModel.GeneralSettings.RememberScreenPosition)
                    {
                        var positionsInfo = new WindowPositionsInfo
                        {
                            Width           = mainWindowViewModel.WindowMinWidth,
                            Height          = mainWindowViewModel.AppStartupHeight,
                            DisplaySettings = settingsModel?.GeneralSettings?.DisplaySettings,
                            StartupLocation = WindowStartupLocation.Manual
                        };

                        WindowPositionsService.SetPosition(mainRadWindow, positionsInfo);
                    }
                }

                mainRadWindow.IsTopmost = true;
                mainRadWindow.Show();
                mainRadWindow.IsTopmost = false;

                App.SplashScreen.CloseSplashScreen();

                var mainWindow = mainRadWindow.ParentOfType <Window>();

                if (mainWindow != null && App.Current.MainWindow != mainWindow)
                {
                    App.Current.MainWindow = mainWindow;
                }

                if (App.IsUpdateAvailable)
                {
                    mainWindowViewModel.IsActive = true;
                    mainWindowViewModel.ShowUpdate();
                    mainWindowViewModel.IsActive = false;
                }

                var licenseService = ServiceLocator.Current.GetInstance <ILicenseService>();

                if (!isLicenseValid || licenseService.IsTrial ||
                    (licenseService.IsRegistered && licenseService.IsExpiringSoon) ||
                    !licenseService.IsRegistered)
                {
                    var registrationViewModel = new RegistrationViewModel(false);
                    mainWindowViewModel.RegistrationViewRequest.Raise(registrationViewModel);
                    mainWindowViewModel.UpdateHeader();
                }

                if (!licenseService.IsRegistered)
                {
                    System.Windows.Application.Current.Shutdown();
                }

                mainWindowViewModel.IsTrial      = licenseService.IsTrial;
                mainWindowViewModel.IsUpgradable = licenseService.IsUpgradable;

                mainWindowViewModel.IsActive = true;

                if (settingsModel != null && settingsModel.GeneralSettings != null)
                {
                    try
                    {
                        var validationResults = ServiceLocator.Current.GetInstance <ISiteConfigurationService>()
                                                .ValidateSiteConfigurations().ToArray();

                        var detectedSites = validationResults.Where(x => x.IsNew && x.IsDetected).ToArray();

                        if (detectedSites.Length > 0)
                        {
                            var sitesSetupViewModel = new SitesSetupViewModel(detectedSites);
                            mainWindowViewModel.SitesSetupViewRequest?.Raise(sitesSetupViewModel);
                        }

                        var incorrectlyConfiguredSites = validationResults
                                                         .Where(x => x.HasIssue && x.IsEnabled && settingsModel.GeneralSettings.RunSiteDetection)
                                                         .ToArray();

                        if (incorrectlyConfiguredSites.Length > 0)
                        {
                            var incorrectlyConfiguredSitesViewModel = new IncorrectlyConfiguredSitesViewModel(incorrectlyConfiguredSites);
                            mainWindowViewModel.IncorrectlyConfiguredSitesViewRequest?.Raise(incorrectlyConfiguredSitesViewModel);
                        }
                    }
                    catch (Exception ex)
                    {
                        LogProvider.Log.Error(this, "Site validation failed.", ex);
                    }
                }

                mainWindowViewModel.StartHudCommand.Execute(null);
            }
            catch (Exception e)
            {
                LogProvider.Log.Error(this, e);
            }
        }