using ApplicationServices; using Avalonia; using Avalonia.Controls; using Avalonia.Markup.Xaml; using LibationWinForms.AvaloniaUI.Controls; using System; using LibationWinForms.AvaloniaUI.Views.ProductsGrid; using Avalonia.ReactiveUI; using LibationWinForms.AvaloniaUI.ViewModels; using LibationFileManager; using DataLayer; using System.Collections.Generic; namespace LibationWinForms.AvaloniaUI.Views { public partial class MainWindow : ReactiveWindow { public event EventHandler Load; public event EventHandler> LibraryLoaded; private MainWindowViewModel _viewModel; public MainWindow() { InitializeComponent(); #if DEBUG this.AttachDevTools(); #endif this.FindAllControls(); this.DataContext = _viewModel = new MainWindowViewModel(); // eg: if one of these init'd productsGrid, then another can't reliably subscribe to it Configure_BackupCounts(); Configure_ScanAuto(); Configure_ScanNotification(); Configure_VisibleBooks(); Configure_QuickFilters(); Configure_ScanManual(); Configure_RemoveBooks(); Configure_Liberate(); Configure_Export(); Configure_Settings(); Configure_ProcessQueue(); Configure_Filter(); // misc which belongs in winforms app but doesn't have a UI element Configure_NonUI(); { this.LibraryLoaded += async (_, dbBooks) => await productsDisplay.Display(dbBooks); LibraryCommands.LibrarySizeChanged += async (_, _) => await productsDisplay.Display(DbContexts.GetLibrary_Flat_NoTracking(includeParents: true)); this.Closing += (_,_) => this.SaveSizeAndLocation(Configuration.Instance); } } private void InitializeComponent() { AvaloniaXamlLoader.Load(this); } public void OnLoad() => Load?.Invoke(this, EventArgs.Empty); public void OnLibraryLoaded(List initialLibrary) => LibraryLoaded?.Invoke(this, initialLibrary); private void FindAllControls() { { autoScanLibraryToolStripMenuItem = this.FindControl(nameof(autoScanLibraryToolStripMenuItem)); autoScanLibraryToolStripMenuItemCheckbox = this.FindControl(nameof(autoScanLibraryToolStripMenuItemCheckbox)); noAccountsYetAddAccountToolStripMenuItem = this.FindControl(nameof(noAccountsYetAddAccountToolStripMenuItem)); scanLibraryToolStripMenuItem = this.FindControl(nameof(scanLibraryToolStripMenuItem)); scanLibraryOfAllAccountsToolStripMenuItem = this.FindControl(nameof(scanLibraryOfAllAccountsToolStripMenuItem)); scanLibraryOfSomeAccountsToolStripMenuItem = this.FindControl(nameof(scanLibraryOfSomeAccountsToolStripMenuItem)); removeLibraryBooksToolStripMenuItem = this.FindControl(nameof(removeLibraryBooksToolStripMenuItem)); { removeAllAccountsToolStripMenuItem = this.FindControl(nameof(removeAllAccountsToolStripMenuItem)); removeSomeAccountsToolStripMenuItem = this.FindControl(nameof(removeSomeAccountsToolStripMenuItem)); } } { beginBookBackupsToolStripMenuItem = this.FindControl(nameof(beginBookBackupsToolStripMenuItem)); beginPdfBackupsToolStripMenuItem = this.FindControl(nameof(beginPdfBackupsToolStripMenuItem)); liberateVisibleToolStripMenuItem_LiberateMenu = this.FindControl(nameof(liberateVisibleToolStripMenuItem_LiberateMenu)); } { exportLibraryToolStripMenuItem = this.FindControl(nameof(exportLibraryToolStripMenuItem)); } quickFiltersToolStripMenuItem = this.FindControl(nameof(quickFiltersToolStripMenuItem)); { firstFilterIsDefaultToolStripMenuItem = this.FindControl(nameof(firstFilterIsDefaultToolStripMenuItem)); firstFilterIsDefaultToolStripMenuItem_Checkbox = this.FindControl(nameof(firstFilterIsDefaultToolStripMenuItem_Checkbox)); editQuickFiltersToolStripMenuItem = this.FindControl(nameof(editQuickFiltersToolStripMenuItem)); } visibleBooksToolStripMenuItem = this.FindControl(nameof(visibleBooksToolStripMenuItem)); { liberateVisibleToolStripMenuItem_VisibleBooksMenu = this.FindControl(nameof(liberateVisibleToolStripMenuItem_VisibleBooksMenu)); setDownloadedToolStripMenuItem = this.FindControl(nameof(setDownloadedToolStripMenuItem)); removeToolStripMenuItem = this.FindControl(nameof(removeToolStripMenuItem)); } scanningToolStripMenuItem = this.FindControl(nameof(scanningToolStripMenuItem)); scanningToolStripMenuItem_Text = this.FindControl(nameof(scanningToolStripMenuItem_Text)); filterHelpBtn = this.FindControl