コード例 #1
0
        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();
        }
コード例 #2
0
        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();
            }
        }