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 SelectNextImportQueueItem() { foreach (ImportQueueItemViewModel importQueueItemViewModel in ImportQueue) { importQueueItemViewModel.IsNextInQueue = false; } ImportQueueItemViewModel nextImportQueueItem = ImportQueue.FirstOrDefault(importQueueItem => importQueueItem.Status == ImportQueueItemStatus.NOT_IMPORTED || importQueueItem.Status == ImportQueueItemStatus.IMPORT_CANCELLED || importQueueItem.Status == ImportQueueItemStatus.IMPORT_ERROR); if (nextImportQueueItem != null) { nextImportQueueItem.IsNextInQueue = true; HideNextButton(); } else { ShowNextButton(); } }