using ApplicationServices; using Avalonia; using Avalonia.Collections; using Avalonia.Controls; using Avalonia.Data; using Avalonia.Markup.Xaml; using DataLayer; using LibationWinForms.AvaloniaUI.Controls; using LibationWinForms.AvaloniaUI.ViewModels; using ReactiveUI; using System; using System.Collections.ObjectModel; using System.Linq; using Avalonia.Threading; namespace LibationWinForms.AvaloniaUI.Views { public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); #if DEBUG this.AttachDevTools(); #endif this.FindAllControls(); // 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.Load += (_, _) => productsDisplay.Display(); LibraryCommands.LibrarySizeChanged += (_, __) => Dispatcher.UIThread.Post(() => productsDisplay.Display()); } } public event EventHandler Load; public void OnLoad() => Load?.Invoke(this, EventArgs.Empty); private void FindAllControls() { importToolStripMenuItem = this.FindControl(nameof(importToolStripMenuItem)); { 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)); } } liberateToolStripMenuItem = this.FindControl(nameof(liberateToolStripMenuItem)); { beginBookBackupsToolStripMenuItem = this.FindControl(nameof(beginBookBackupsToolStripMenuItem)); beginPdfBackupsToolStripMenuItem = this.FindControl(nameof(beginPdfBackupsToolStripMenuItem)); convertAllM4bToMp3ToolStripMenuItem = this.FindControl(nameof(convertAllM4bToMp3ToolStripMenuItem)); liberateVisibleToolStripMenuItem_LiberateMenu = this.FindControl(nameof(liberateVisibleToolStripMenuItem_LiberateMenu)); } exportToolStripMenuItem = this.FindControl(nameof(exportToolStripMenuItem)); { 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)); replaceTagsToolStripMenuItem = this.FindControl(nameof(replaceTagsToolStripMenuItem)); setDownloadedToolStripMenuItem = this.FindControl(nameof(setDownloadedToolStripMenuItem)); removeToolStripMenuItem = this.FindControl(nameof(removeToolStripMenuItem)); } settingsToolStripMenuItem = this.FindControl(nameof(settingsToolStripMenuItem)); { accountsToolStripMenuItem = this.FindControl(nameof(accountsToolStripMenuItem)); basicSettingsToolStripMenuItem = this.FindControl(nameof(basicSettingsToolStripMenuItem)); aboutToolStripMenuItem = this.FindControl(nameof(aboutToolStripMenuItem)); } scanningToolStripMenuItem = this.FindControl(nameof(scanningToolStripMenuItem)); scanningToolStripMenuItem_Text = this.FindControl(nameof(scanningToolStripMenuItem_Text)); filterHelpBtn = this.FindControl