private void SettingsMenuItemClick() { SettingsWindowViewModel settingsWindowViewModel = new SettingsWindowViewModel(mainModel); IWindowContext settingsWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.SETTINGS_WINDOW, settingsWindowViewModel, CurrentWindowContext); settingsWindowContext.ShowDialog(); }
private void Import() { OpenFileDialogParameters selectSqlDumpFileDialogParameters = new OpenFileDialogParameters { DialogTitle = "Выбор SQL-дампа", Filter = "Все поддерживаемые файлы|*.sql;*zip;*.rar;*.gz;*.7z|SQL -дампы (*.sql)|*.sql|Архивы (*.zip, *.rar, *.gz, *.7z)|*zip;*.rar;*.gz;*.7z|Все файлы (*.*)|*.*", Multiselect = false }; OpenFileDialogResult selectSqlDumpFileDialogResult = WindowManager.ShowOpenFileDialog(selectSqlDumpFileDialogParameters); if (selectSqlDumpFileDialogResult.DialogResult) { ImportWindowViewModel importWindowViewModel = new ImportWindowViewModel(mainModel, selectSqlDumpFileDialogResult.SelectedFilePaths.First()); IWindowContext importWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.IMPORT_WINDOW, importWindowViewModel, CurrentWindowContext); importWindowContext.ShowDialog(); if (IsDefaultSearchTabVisible) { DefaultSearchTabViewModel.Refresh(setFocus: true); } else { foreach (SearchTabViewModel searchTabViewModel in TabViewModels.OfType <SearchTabViewModel>()) { searchTabViewModel.Refresh(setFocus: searchTabViewModel == SelectedTabViewModel); } } } }
private void OpenFictionDetailsRequested(object sender, OpenFictionDetailsEventArgs e) { Logger.Debug($"Opening fiction book with ID = {e.FictionBook.Id}, Libgen ID = {e.FictionBook.LibgenId}."); SearchSettings.DetailsMode openDetailsMode = MainModel.AppSettings.Search.OpenDetailsMode; if (openDetailsMode == SearchSettings.DetailsMode.NEW_TAB) { FictionDetailsTabViewModel fictionDetailsTabViewModel = new FictionDetailsTabViewModel(MainModel, CurrentWindowContext, e.FictionBook, isInModalWindow: false); fictionDetailsTabViewModel.SelectDownloadRequested += SelectDownloadRequested; fictionDetailsTabViewModel.CloseTabRequested += FictionDetailsCloseTabRequested; TabViewModels.Add(fictionDetailsTabViewModel); SelectedTabViewModel = fictionDetailsTabViewModel; } else { bool modalWindow = openDetailsMode == SearchSettings.DetailsMode.NEW_MODAL_WINDOW; FictionDetailsWindowViewModel detailsWindowViewModel = new FictionDetailsWindowViewModel(MainModel, e.FictionBook, modalWindow); detailsWindowViewModel.SelectDownloadRequested += SelectDownloadRequested; IWindowContext detailsWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.FICTION_DETAILS_WINDOW, detailsWindowViewModel, CurrentWindowContext); FictionDetailsWindowSettings detailsWindowSettings = MainModel.AppSettings.Fiction.DetailsWindow; if (modalWindow) { detailsWindowContext.ShowDialog(detailsWindowSettings.Width, detailsWindowSettings.Height); detailsWindowViewModel.SelectDownloadRequested -= SelectDownloadRequested; } else { detailsWindowViewModel.WindowClosed += FictionDetailsWindowClosed; detailsWindowContext.Show(detailsWindowSettings.Width, detailsWindowSettings.Height); } } }
private void OpenSciMagDetailsRequested(object sender, OpenSciMagDetailsEventArgs e) { Logger.Debug($"Opening article with ID = {e.SciMagArticle.Id}, Libgen ID = {e.SciMagArticle.LibgenId}."); SearchSettings.DetailsMode openDetailsMode = MainModel.AppSettings.Search.OpenDetailsMode; if (openDetailsMode == SearchSettings.DetailsMode.NEW_TAB) { SciMagDetailsTabViewModel sciMagDetailsTabViewModel = new SciMagDetailsTabViewModel(MainModel, CurrentWindowContext, e.SciMagArticle, isInModalWindow: false); sciMagDetailsTabViewModel.SelectDownloadRequested += SelectDownloadRequested; sciMagDetailsTabViewModel.CloseTabRequested += SciMagDetailsCloseTabRequested; TabViewModels.Add(sciMagDetailsTabViewModel); SelectedTabViewModel = sciMagDetailsTabViewModel; } else { bool modalWindow = openDetailsMode == SearchSettings.DetailsMode.NEW_MODAL_WINDOW; SciMagDetailsWindowViewModel detailsWindowViewModel = new SciMagDetailsWindowViewModel(MainModel, e.SciMagArticle, modalWindow); detailsWindowViewModel.SelectDownloadRequested += SelectDownloadRequested; IWindowContext detailsWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.SCI_MAG_DETAILS_WINDOW, detailsWindowViewModel, CurrentWindowContext); SciMagDetailsWindowSettings detailsWindowSettings = MainModel.AppSettings.SciMag.DetailsWindow; if (modalWindow) { detailsWindowContext.ShowDialog(detailsWindowSettings.Width, detailsWindowSettings.Height); detailsWindowViewModel.SelectDownloadRequested -= SelectDownloadRequested; } else { detailsWindowViewModel.WindowClosed += SciMagDetailsWindowClosed; detailsWindowContext.Show(detailsWindowSettings.Width, detailsWindowSettings.Height); } } }
private void OpenNonFictionDetailsRequested(object sender, NonFictionSearchResultsTabViewModel.OpenNonFictionDetailsEventArgs e) { Logger.Debug($"Opening non-fiction book with ID = {e.NonFictionBook.Id}, Libgen ID = {e.NonFictionBook.LibgenId}."); SearchSettings.DetailsMode openDetailsMode = mainModel.AppSettings.Search.OpenDetailsMode; if (openDetailsMode == SearchSettings.DetailsMode.NEW_TAB) { NonFictionDetailsTabViewModel nonFictionDetailsTabViewModel = new NonFictionDetailsTabViewModel(mainModel, CurrentWindowContext, e.NonFictionBook, isInModalWindow: false); nonFictionDetailsTabViewModel.CloseTabRequested += NonFictionDetailsCloseTabRequested; TabViewModels.Add(nonFictionDetailsTabViewModel); SelectedTabViewModel = nonFictionDetailsTabViewModel; } else { bool modalWindow = openDetailsMode == SearchSettings.DetailsMode.NEW_MODAL_WINDOW; NonFictionDetailsWindowViewModel detailsWindowViewModel = new NonFictionDetailsWindowViewModel(mainModel, e.NonFictionBook, modalWindow); IWindowContext detailsWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.NON_FICTION_DETAILS_WINDOW, detailsWindowViewModel, CurrentWindowContext); NonFictionDetailsWindowSettings detailsWindowSettings = mainModel.AppSettings.NonFiction.DetailsWindow; if (modalWindow) { detailsWindowContext.ShowDialog(detailsWindowSettings.Width, detailsWindowSettings.Height); } else { detailsWindowContext.Show(detailsWindowSettings.Width, detailsWindowSettings.Height); } } }
private void OpenBook(LibraryItemViewModel book) { BookViewModel bookViewModel = new BookViewModel(book.Id); IWindowContext bookWindowContext = windowManager.CreateWindow(bookViewModel); bookWindowContext.ShowDialog(); }
protected void ShowErrorWindow(Exception exception, IWindowContext parentWindowContext) { Logger.Exception(exception); ErrorWindowViewModel errorWindowViewModel = new ErrorWindowViewModel(exception.ToString()); IWindowContext errorWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.ERROR_WINDOW, errorWindowViewModel, parentWindowContext); errorWindowContext.ShowDialog(); }
private void ShowErrorWindow(Exception exception) { Logger.Exception(exception); ErrorWindowViewModel errorWindowViewModel = new ErrorWindowViewModel(exception?.ToString() ?? "(null)"); IWindowContext errorWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.ERROR_WINDOW, errorWindowViewModel); errorWindowContext.ShowDialog(); }
private void SqlDebuggerMenuItemClick() { SqlDebuggerWindowViewModel sqlDebuggerWindowViewModel = new SqlDebuggerWindowViewModel(MainModel); IWindowContext sqlDebuggerWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.SQL_DEBUGGER_WINDOW, sqlDebuggerWindowViewModel, CurrentWindowContext); sqlDebuggerWindowContext.ShowDialog(); }
private void DatabaseMenuItemClick() { DatabaseWindowViewModel databaseWindowViewModel = new DatabaseWindowViewModel(MainModel); IWindowContext databaseWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.DATABASE_WINDOW, databaseWindowViewModel, CurrentWindowContext); databaseWindowContext.ShowDialog(); }
public void Import(ImportQueueItemViewModel importQueueItemViewModel) { string databaseDumpFilePath; if (SharedSetupContext.SelectedDownloadMode == SharedSetupContext.DownloadMode.DOWNLOAD_MANAGER) { databaseDumpFilePath = importQueueItemViewModel.Collection.DownloadFilePath; } else { OpenFileDialogResult selectDatabaseDumpFileDialogResult = ImportWindowViewModel.SelectDatabaseDumpFile(MainModel); if (!selectDatabaseDumpFileDialogResult.DialogResult) { return; } databaseDumpFilePath = selectDatabaseDumpFileDialogResult.SelectedFilePaths.First(); } importQueueItemViewModel.Status = ImportQueueItemStatus.IMPORTING; TableType expectedTableType; switch (importQueueItemViewModel.Collection.Identifier) { case SharedSetupContext.CollectionIdentifier.NON_FICTION: expectedTableType = TableType.NON_FICTION; break; case SharedSetupContext.CollectionIdentifier.FICTION: expectedTableType = TableType.FICTION; break; case SharedSetupContext.CollectionIdentifier.SCIMAG: expectedTableType = TableType.SCI_MAG; break; default: throw new Exception($"Unexpected collection identifier: {importQueueItemViewModel.Collection.Identifier}."); } ImportWindowViewModel importWindowViewModel = new ImportWindowViewModel(MainModel, databaseDumpFilePath, expectedTableType); IWindowContext importWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.IMPORT_WINDOW, importWindowViewModel, SetupWizardWindowContext); importWindowContext.ShowDialog(); switch (importWindowViewModel.Status) { case ImportWindowViewModel.ImportStatus.IMPORT_COMPLETE: importQueueItemViewModel.Status = ImportQueueItemStatus.IMPORT_SUCCESSFUL; SelectNextImportQueueItem(); break; case ImportWindowViewModel.ImportStatus.IMPORT_CANCELLED: importQueueItemViewModel.Status = ImportQueueItemStatus.IMPORT_CANCELLED; break; default: importQueueItemViewModel.Status = ImportQueueItemStatus.IMPORT_ERROR; break; } }
private void ProxyServerSettingsClick() { IWindowContext setupWizardProxySettingsWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.SETUP_WIZARD_PROXY_SETTINGS_WINDOW, setupWizardProxySettingsWindowViewModel, SetupWizardWindowContext); setupWizardProxySettingsWindowViewModel.PopulateFieldsFromAppSettings(); setupWizardProxySettingsWindowViewModel.SetFocus(); setupWizardProxySettingsWindowContext.ShowDialog(); }
private void DatabaseMenuItemClick() { DatabaseWindowViewModel databaseWindowViewModel = new DatabaseWindowViewModel(MainModel); IWindowContext databaseWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.DATABASE_WINDOW, databaseWindowViewModel, CurrentWindowContext); databaseWindowContext.ShowDialog(); RefreshSearchTabCollectionAvailabilities(); }
private void AboutMenuItemClick() { AboutWindowViewModel aboutWindowViewModel = new AboutWindowViewModel(MainModel); IWindowContext aboutWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.ABOUT_WINDOW, aboutWindowViewModel, CurrentWindowContext); if (aboutWindowContext.ShowDialog() == true && aboutWindowViewModel.ApplicationUpdateRequested) { ShowApplicationUpdate(aboutWindowViewModel.UpdateCheckResult, showSkipVersionButton: false); } }
private void Import() { OpenFileDialogResult selectSqlDumpFileDialogResult = ImportWindowViewModel.SelectDatabaseDumpFile(MainModel); if (selectSqlDumpFileDialogResult.DialogResult) { ImportWindowViewModel importWindowViewModel = new ImportWindowViewModel(MainModel, selectSqlDumpFileDialogResult.SelectedFilePaths.First(), null); IWindowContext importWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.IMPORT_WINDOW, importWindowViewModel, CurrentWindowContext); importWindowContext.ShowDialog(); RefreshSearchTabCollectionAvailabilities(); } }
protected void ShowErrorWindow(Exception exception, IWindowContext parentWindowContext) { try { Logger.Exception(exception); } catch { } ErrorWindowViewModel errorWindowViewModel = new ErrorWindowViewModel(exception.ToString(), MainModel.Localization.CurrentLanguage); IWindowContext errorWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.ERROR_WINDOW, errorWindowViewModel, parentWindowContext); errorWindowContext.ShowDialog(); }
private void ShowApplicationUpdate(Updater.UpdateCheckResult updateCheckResult, bool showSkipVersionButton) { ApplicationUpdateWindowViewModel applicationUpdateWindowViewModel = new ApplicationUpdateWindowViewModel(MainModel, updateCheckResult, showSkipVersionButton); applicationUpdateWindowViewModel.ApplicationShutdownRequested += Shutdown; IWindowContext applicationUpdateWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.APPLICATION_UPDATE_WINDOW, applicationUpdateWindowViewModel, CurrentWindowContext); if (applicationUpdateWindowContext.ShowDialog() == true) { IsApplicationUpdateAvailable = false; } applicationUpdateWindowViewModel.ApplicationShutdownRequested -= Shutdown; }
private void ShowCreateDatabaseWindow(MainModel mainModel) { CreateDatabaseViewModel createDatabaseViewModel = new CreateDatabaseViewModel(mainModel); IWindowContext windowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.CREATE_DATABASE_WINDOW, createDatabaseViewModel); bool?result = windowContext.ShowDialog(); if (result == true) { ShowMainWindow(mainModel); } else { Shutdown(); } }
private void ShowSetupWizardWindow(MainModel mainModel) { SetupWizardWindowViewModel setupWizardWindowViewModel = new SetupWizardWindowViewModel(mainModel); IWindowContext windowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.SETUP_WIZARD_WINDOW, setupWizardWindowViewModel); bool?result = windowContext.ShowDialog(); if (result == true) { ShowMainWindow(mainModel); } else { Close(); } }
public void Synchronize() { SynchronizationLocalizator synchronizationLocalizator = MainModel.Localization.CurrentLanguage.Synchronization; if (MainModel.DatabaseMetadata.NonFictionFirstImportComplete != true) { ShowMessage(synchronizationLocalizator.ErrorMessageTitle, synchronizationLocalizator.ImportRequired); return; } if (MainModel.AppSettings.Mirrors.NonFictionSynchronizationMirrorName == null) { ShowMessage(synchronizationLocalizator.ErrorMessageTitle, synchronizationLocalizator.NoSynchronizationMirror); return; } if (MainModel.AppSettings.Network.OfflineMode) { if (ShowPrompt(synchronizationLocalizator.OfflineModePromptTitle, synchronizationLocalizator.OfflineModePromptText)) { MainModel.AppSettings.Network.OfflineMode = false; MainModel.SaveSettings(); } else { return; } } SynchronizationWindowViewModel synchronizationWindowViewModel = new SynchronizationWindowViewModel(MainModel); IWindowContext synchronizationWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.SYNCHRONIZATION_WINDOW, synchronizationWindowViewModel, CurrentWindowContext); synchronizationWindowContext.ShowDialog(); if (IsDefaultSearchTabVisible) { DefaultSearchTabViewModel.SetFocus(); } else { if (SelectedTabViewModel is SearchTabViewModel searchTabViewModel) { searchTabViewModel.SetFocus(); } } }
public void Synchronize() { if (mainModel.NonFictionBookCount == 0) { MessageBoxWindow.ShowMessage("Ошибка", @"Перед синхронизацией списка нехудожественной литературы необходимо выполнить импорт из дампа базы данных (пункт ""Импорт"" в меню).", CurrentWindowContext); return; } if (mainModel.AppSettings.Mirrors.NonFictionSynchronizationMirrorName == null) { MessageBoxWindow.ShowMessage("Ошибка", @"Не выбрано зеркало для синхронизации списка нехудожественной литературы.", CurrentWindowContext); return; } if (mainModel.AppSettings.Network.OfflineMode) { if (MessageBoxWindow.ShowPrompt("Автономный режим", "Синхронизация невозможна при включенном автономном режиме. Выключить автономный режим?", CurrentWindowContext)) { mainModel.AppSettings.Network.OfflineMode = false; mainModel.SaveSettings(); } else { return; } } SynchronizationWindowViewModel synchronizationWindowViewModel = new SynchronizationWindowViewModel(mainModel); IWindowContext synchronizationWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.SYNCHRONIZATION_WINDOW, synchronizationWindowViewModel, CurrentWindowContext); synchronizationWindowContext.ShowDialog(); if (IsDefaultSearchTabVisible) { DefaultSearchTabViewModel.SetFocus(); } else { if (SelectedTabViewModel is SearchTabViewModel searchTabViewModel) { searchTabViewModel.SetFocus(); } } }
private void Import() { ImportLocalizator importLocalizator = MainModel.Localization.CurrentLanguage.Import; StringBuilder filterBuilder = new StringBuilder(); filterBuilder.Append(importLocalizator.AllSupportedFiles); filterBuilder.Append("|*.sql;*zip;*.rar;*.gz;*.7z|"); filterBuilder.Append(importLocalizator.SqlDumps); filterBuilder.Append(" (*.sql)|*.sql|"); filterBuilder.Append(importLocalizator.Archives); filterBuilder.Append(" (*.zip, *.rar, *.gz, *.7z)|*zip;*.rar;*.gz;*.7z|"); filterBuilder.Append(importLocalizator.AllFiles); filterBuilder.Append(" (*.*)|*.*"); OpenFileDialogParameters selectSqlDumpFileDialogParameters = new OpenFileDialogParameters { DialogTitle = importLocalizator.BrowseImportFileDialogTitle, Filter = filterBuilder.ToString(), Multiselect = false }; OpenFileDialogResult selectSqlDumpFileDialogResult = WindowManager.ShowOpenFileDialog(selectSqlDumpFileDialogParameters); if (selectSqlDumpFileDialogResult.DialogResult) { ImportWindowViewModel importWindowViewModel = new ImportWindowViewModel(MainModel, selectSqlDumpFileDialogResult.SelectedFilePaths.First()); IWindowContext importWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.IMPORT_WINDOW, importWindowViewModel, CurrentWindowContext); importWindowContext.ShowDialog(); if (IsDefaultSearchTabVisible) { DefaultSearchTabViewModel.Refresh(setFocus: true); } else { foreach (SearchTabViewModel searchTabViewModel in TabViewModels.OfType <SearchTabViewModel>()) { searchTabViewModel.Refresh(setFocus: searchTabViewModel == SelectedTabViewModel); } } } }
private void ShowErrorWindow(Exception exception) { if (!Dispatcher.CheckAccess()) { Dispatcher.Invoke(() => ShowErrorWindow(exception)); } else { Logger.Exception(exception); try { ErrorWindowViewModel errorWindowViewModel = new ErrorWindowViewModel(exception?.ToString() ?? "(null)", mainModel?.Localization?.CurrentLanguage); IWindowContext errorWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.ERROR_WINDOW, errorWindowViewModel); errorWindowContext.ShowDialog(); } catch (Exception errorWindowException) { Logger.Exception(errorWindowException); } } }
protected override async void OnStartup(StartupEventArgs e) { base.OnStartup(e); SetupExceptionHandlers(); try { mainModel = new MainModel(); string databaseFilePath = mainModel.AppSettings.DatabaseFileName; bool saveDatabaseFilePathAfterSuccessfulOpen = false; MainModel.OpenDatabaseOptions openDatabaseOptions = MainModel.OpenDatabaseOptions.NONE; DatabaseOpenResult databaseOpenResult = DatabaseOpenResult.IN_PROGRESS; while (databaseOpenResult == DatabaseOpenResult.IN_PROGRESS) { MainModel.DatabaseStatus databaseStatus = await mainModel.OpenDatabase(databaseFilePath, openDatabaseOptions); if (databaseStatus == MainModel.DatabaseStatus.OPENED) { databaseOpenResult = DatabaseOpenResult.DATABASE_OPENED; if (saveDatabaseFilePathAfterSuccessfulOpen) { mainModel.AppSettings.DatabaseFileName = MainModel.GetDatabaseNormalizedPath(databaseFilePath); mainModel.SaveSettings(); } } else if (databaseStatus == MainModel.DatabaseStatus.NOT_SET) { databaseOpenResult = DatabaseOpenResult.SHOW_SETUP_WIZARD; } else { DatabaseErrorWindowViewModel.OptionSet optionSet; switch (databaseStatus) { case MainModel.DatabaseStatus.NOT_FOUND: optionSet = DatabaseErrorWindowViewModel.OptionSet.DATABASE_NOT_FOUND; break; case MainModel.DatabaseStatus.POSSIBLE_DUMP_FILE: optionSet = DatabaseErrorWindowViewModel.OptionSet.DATABASE_DUMP_FILE; break; case MainModel.DatabaseStatus.OLD_FICTION_SCHEMA: optionSet = DatabaseErrorWindowViewModel.OptionSet.OLD_FICTION_SCHEMA; break; case MainModel.DatabaseStatus.CORRUPTED: optionSet = DatabaseErrorWindowViewModel.OptionSet.DATABASE_NOT_VALID; break; case MainModel.DatabaseStatus.SERVER_DATABASE: optionSet = DatabaseErrorWindowViewModel.OptionSet.SERVER_DATABASE; break; default: throw new Exception($"Unknown database status: {databaseStatus}."); } DatabaseErrorWindowViewModel databaseErrorWindowViewModel = new DatabaseErrorWindowViewModel(mainModel, optionSet, databaseFilePath); IWindowContext windowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.DATABASE_ERROR_WINDOW, databaseErrorWindowViewModel); windowContext.ShowDialog(); switch (databaseErrorWindowViewModel.Result) { case DatabaseErrorWindowViewModel.DatabaseErrorWindowResult.OPEN_ANOTHER_DATABASE: OpenFileDialogResult selectDatabaseFileDialogResult = DatabaseWindowViewModel.SelectDatabaseFile(mainModel); if (selectDatabaseFileDialogResult.DialogResult) { databaseFilePath = selectDatabaseFileDialogResult.SelectedFilePaths.First(); saveDatabaseFilePathAfterSuccessfulOpen = true; } break; case DatabaseErrorWindowViewModel.DatabaseErrorWindowResult.START_SETUP_WIZARD: databaseOpenResult = DatabaseOpenResult.SHOW_SETUP_WIZARD; break; case DatabaseErrorWindowViewModel.DatabaseErrorWindowResult.DELETE_FICTION: openDatabaseOptions = MainModel.OpenDatabaseOptions.MIGRATE_FICTION; break; case DatabaseErrorWindowViewModel.DatabaseErrorWindowResult.EXIT: case DatabaseErrorWindowViewModel.DatabaseErrorWindowResult.CANCEL: databaseOpenResult = DatabaseOpenResult.EXIT_REQUESTED; break; default: throw new Exception($"Unknown database error view model result: {databaseErrorWindowViewModel.Result}."); } } } switch (databaseOpenResult) { case DatabaseOpenResult.DATABASE_OPENED: ShowMainWindow(mainModel); break; case DatabaseOpenResult.SHOW_SETUP_WIZARD: ShowSetupWizardWindow(mainModel); break; default: Close(); break; } } catch (Exception exception) { Logger.EnableLogging(); ShowErrorWindow(exception); Close(); } }