public void ShowSplash(SplashInfo splashInfo)
        {
            if (splash != null)
            {
                splash.DataContext = new SplashViewModel(splashInfo);
            }
            else
            {
                Application.Current.Activated   += AppActivated;
                Application.Current.Deactivated += AppDeactivated;

                Window active = AllWindows.FirstOrDefault(w => w.IsActive);
                restoreActiveWindow = active != null;


                foreach (Window window in AllWindows)
                {
                    window.IsEnabled = false;
                }

                splash             = new SplashView();
                splash.DataContext = new SplashViewModel(splashInfo);
                splash.Owner       = active ?? this.MainWindow;

                splash.Show();
                timer.Start();
            }
        }
        public void HideSplash()
        {
            if (splash != null)
            {
                Application.Current.Activated   -= AppActivated;
                Application.Current.Deactivated -= AppDeactivated;

                timer.Stop();
                splash.Close();

                if (restoreActiveWindow)
                {
                    splash.Owner?.Activate();
                }

                splash.DataContext = null;
                splash             = null;

                foreach (Window window in AllWindows)
                {
                    window.IsEnabled = true;
                }
            }
        }