public void Terminate() { var config = Configuration.ApplicationConfiguration; if (HomeDocumentViewModel.BookCabinet != null) { config.BookSorting = BookSorting.GetPropertyName(HomeDocumentViewModel.BookCabinet.Sorting); } config.DisplayAuthorPane = DisplayAuthorPane; config.DisplayInformationPane = DisplayInformationPane; config.DisplayTagPane = DisplayTagPane; config.AuthorSorting = AuthorSorting.GetPropertyName(AuthorManager.Sorting); config.TagSorting = ImageTagCountSorting.GetPropertyName(TagManager.Sorting); if (HomeDocumentViewModel.BookCabinet != null) { config.DisplayType = DisplayType.GetPropertyName(HomeDocumentViewModel.BookCabinet.DisplayType); } if (config.StoreWindowPosition) { config.WindowRect = new Domain.Models.Rect(WindowLeft, WindowTop, WindowWidth, WindowHeight); } Configuration.Save(config); Dispose(); }
public async Task Initialize(bool starting, bool shiftPressed = false) { if (starting) { LibraryVM.ProgressManager.PropertyChanged += ProgressManager_PropertyChanged; TagPaneViewModel.BuildContextMenus_Tags(); AuthorPaneViewModel.BuildContextMenus_Authors(); } WindowLeft = Configuration.ApplicationConfiguration.WindowRect.X; WindowTop = Configuration.ApplicationConfiguration.WindowRect.Y; WindowWidth = Configuration.ApplicationConfiguration.WindowRect.Width; WindowHeight = Configuration.ApplicationConfiguration.WindowRect.Height; if (shiftPressed || Configuration.ApplicationConfiguration.WorkingDirectory == null) { if (!OpenSwitchLibraryDialogAndChangeWorkingDirectory()) { Close(); return; } } CloseAllTab(); var authorSorting = Configuration.ApplicationConfiguration.AuthorSorting; if (authorSorting != null) { AuthorManager.Sorting = AuthorSorting.GetReferenceByName(authorSorting); } var tagSorting = Configuration.ApplicationConfiguration.TagSorting; if (tagSorting != null) { TagManager.Sorting = ImageTagCountSorting.GetReferenceByName(tagSorting); } SetMainWindowTitle(); HomeDocumentViewModel.ClearSearchResult(); InitializeWindowComponent(); ManageAppDB(); IncrementNumberOfBoots(); Configuration.ApplicationConfiguration.ConnectionString = Specifications.GenerateConnectionString(Configuration.ApplicationConfiguration.WorkingDirectory); ConnectionManager.SetDefaultConnection(Configuration.ApplicationConfiguration.ConnectionString, typeof(SQLiteConnection)); try { await LibraryVM.Initialize(); LibraryVM.UnlockIfLocked(); await LibraryVM.Load() .ContinueWith(_ => { HomeDocumentViewModel.BookCabinet = LibraryVM.CreateBookStorage(); (LibraryVM as IObservable <BookCollectionChanged>) .Subscribe(HomeDocumentViewModel.BookCabinet as IObserver <BookCollectionChanged>) .AddTo(_disposable); this.Subscribe((IObserver <ActiveTabChanged>)TagManager) .AddTo(_disposable); this.Subscribe((IObserver <ActiveTabChanged>)AuthorManager) .AddTo(_disposable); var sorting = Configuration.ApplicationConfiguration.BookSorting; if (sorting != null) { HomeDocumentViewModel.BookCabinet.Sorting = BookSorting.GetReferenceByName(sorting); } var displayType = Configuration.ApplicationConfiguration.DisplayType; if (displayType != null) { HomeDocumentViewModel.BookCabinet.DisplayType = DisplayType.GetReferenceByName(displayType); } ((DocumentViewModelBase)HomeDocumentViewModel).IsVisible = true; ((DocumentViewModelBase)HomeDocumentViewModel).IsSelected = true; SetEvent(); NotifyActiveTabChanged(); }); } catch (Exception e) { Close(); } }