private void MainWindowOnClosing(object sender, CancelEventArgs cancelEventArgs)
        {
            using (var session = DocumentStore.OpenSession())
            {
                var settings = session.Query<ApplicationSettings>().FirstOrDefault();

                if (settings == null)
                {
                    settings = new ApplicationSettings();
                }

                var mainWindow = Application.Current.MainWindow;
                settings.WindowHeight = mainWindow.ActualHeight;
                settings.WindowWidth = mainWindow.ActualWidth;
                settings.WindowLeft = mainWindow.Left;
                settings.WindowTop = mainWindow.Top;
                settings.Culture = LocalizeDictionary.Instance.Culture.ToString();
                session.Store(settings);
                session.SaveChanges();
            }
        }
        private void ExecuteFinish()
        {
            try
            {
                using (var session = DocumentStore.OpenSession())
                {
                    var settings = session.Query<ApplicationSettings>().FirstOrDefault();

                    if (settings == null)
                    {
                        settings = new ApplicationSettings();
                    }

                    settings.FirstTimeWizardRun = true;
                    session.Store(settings);
                    session.SaveChanges();
                }
            }
            catch (Exception e)
            {
                Logger.Log(e.Message, Category.Exception, Priority.Medium);
            }

            RegionManager.RequestNavigate(AppRegions.MainRegion, typeof(MainView).FullName);
            RegionManager.RequestNavigate(AppRegions.ViewRegion, typeof(StationsView).FullName);
        }
        public void Initialize()
        {
            bool displayWizard;

            using (var session = DocumentStore.OpenSession())
            {
                var settings = session.Query<ApplicationSettings>().FirstOrDefault();

                if (settings == null)
                {
                    settings = new ApplicationSettings();
                    session.Store(settings);
                    session.SaveChanges();
                }

                displayWizard = !settings.FirstTimeWizardRun;

                if (!string.IsNullOrEmpty(settings.Culture))
                {
                    LocalizeDictionary.Instance.Culture = CultureInfo.GetCultureInfo(settings.Culture);
                }
                else
                {
                    LocalizeDictionary.Instance.Culture = CultureInfo.GetCultureInfo("en");
                }

                if (settings.AccentColor.HasValue)
                {
                    ModifyAccentColor(settings.AccentColor.GetValueOrDefault());
                }
            }

            RegionManager.RegisterViewWithRegion(AppRegions.MainRegion, typeof(MainView));
            RegionManager.RegisterViewWithRegion(AppRegions.BottomRegion, typeof(ControlsView));
            RegionManager.RegisterViewWithRegion(AppRegions.ViewRegion, typeof(SettingsView));
            RegionManager.RegisterViewWithRegion(AppRegions.ViewRegion, typeof(StationsView));

            RegionManager.Regions[AppRegions.ViewRegion].NavigationService.Navigating += OnViewRegionNavigating;

            if (displayWizard)
            {
                RegionManager.RequestNavigate(AppRegions.MainRegion, typeof(FirstTimeUseView).FullName);
            }
            else
            {
                RegionManager.RequestNavigate(AppRegions.MainRegion, typeof(MainView).FullName);
                RegionManager.RequestNavigate(AppRegions.ViewRegion, typeof(StationsView).FullName);
            }

            foreach (var startable in Startables)
            {
                startable.Start();
            }

            AppDomain.CurrentDomain.ProcessExit += CurrentDomainOnProcessExit;
        }