From 0bde86ebfd309291cf5722b2ecce5b62339099a6 Mon Sep 17 00:00:00 2001 From: Robert McRackan Date: Tue, 3 May 2022 11:29:21 -0400 Subject: [PATCH] QuickFilters on save event --- LibationFileManager/QuickFilters.cs | 9 +++++-- LibationWinForms/Dialogs/EditQuickFilters.cs | 1 - LibationWinForms/Dialogs/RemoveBooksDialog.cs | 6 ++--- LibationWinForms/Form1.cs | 26 ++++++++----------- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/LibationFileManager/QuickFilters.cs b/LibationFileManager/QuickFilters.cs index 2b65739c..9631070d 100644 --- a/LibationFileManager/QuickFilters.cs +++ b/LibationFileManager/QuickFilters.cs @@ -9,6 +9,8 @@ namespace LibationFileManager { public static class QuickFilters { + public static event EventHandler Updated; + internal class FilterState { public bool UseDefault { get; set; } @@ -34,7 +36,7 @@ namespace LibationFileManager lock (locker) { inMemoryState.UseDefault = value; - save(); + save(false); } } } @@ -97,7 +99,7 @@ namespace LibationFileManager private static object locker { get; } = new object(); // ONLY call this within lock() - private static void save() + private static void save(bool invokeUpdatedEvent = true) { // create json if not exists void resave() => File.WriteAllText(JsonFile, JsonConvert.SerializeObject(inMemoryState, Formatting.Indented)); @@ -111,6 +113,9 @@ namespace LibationFileManager throw; } } + + if (invokeUpdatedEvent) + Updated?.Invoke(null, null); } } } diff --git a/LibationWinForms/Dialogs/EditQuickFilters.cs b/LibationWinForms/Dialogs/EditQuickFilters.cs index 9b504c72..7d8f20ca 100644 --- a/LibationWinForms/Dialogs/EditQuickFilters.cs +++ b/LibationWinForms/Dialogs/EditQuickFilters.cs @@ -53,7 +53,6 @@ namespace LibationWinForms.Dialogs .ToList(); QuickFilters.ReplaceAll(list); - _parent.UpdateFilterDropDown(); this.DialogResult = DialogResult.OK; this.Close(); } diff --git a/LibationWinForms/Dialogs/RemoveBooksDialog.cs b/LibationWinForms/Dialogs/RemoveBooksDialog.cs index f8c7edd0..e128a576 100644 --- a/LibationWinForms/Dialogs/RemoveBooksDialog.cs +++ b/LibationWinForms/Dialogs/RemoveBooksDialog.cs @@ -17,9 +17,9 @@ namespace LibationWinForms.Dialogs public partial class RemoveBooksDialog : Form { private Account[] _accounts { get; } - private readonly List _libraryBooks; - private readonly SortableBindingList _removableGridEntries; - private readonly string _labelFormat; + private List _libraryBooks { get; } + private SortableBindingList _removableGridEntries { get; } + private string _labelFormat { get; } private int SelectedCount => SelectedEntries?.Count() ?? 0; private IEnumerable SelectedEntries => _removableGridEntries?.Where(b => b.Remove); diff --git a/LibationWinForms/Form1.cs b/LibationWinForms/Form1.cs index a507d081..97edf43e 100644 --- a/LibationWinForms/Form1.cs +++ b/LibationWinForms/Form1.cs @@ -34,6 +34,7 @@ namespace LibationWinForms this.FormClosing += (_, _) => this.SaveSizeAndLocation(Configuration.Instance); LibraryCommands.LibrarySizeChanged += reloadGridAndUpdateBottomNumbers; LibraryCommands.BookUserDefinedItemCommitted += setBackupCounts; + QuickFilters.Updated += updateFiltersMenu; var format = System.Drawing.Imaging.ImageFormat.Jpeg; PictureStorage.SetDefaultImage(PictureSize._80x80, Properties.Resources.default_cover_80x80.ToBytes(format)); @@ -41,7 +42,7 @@ namespace LibationWinForms PictureStorage.SetDefaultImage(PictureSize._500x500, Properties.Resources.default_cover_500x500.ToBytes(format)); } - private void Form1_Load(object sender, EventArgs e) + private void Form1_Load(object sender, EventArgs e) { if (this.DesignMode) return; @@ -185,11 +186,7 @@ namespace LibationWinForms #region filter private void filterHelpBtn_Click(object sender, EventArgs e) => new SearchSyntaxDialog().ShowDialog(); - private void AddFilterBtn_Click(object sender, EventArgs e) - { - QuickFilters.Add(this.filterSearchTb.Text); - UpdateFilterDropDown(); - } + private void AddFilterBtn_Click(object sender, EventArgs e) => QuickFilters.Add(this.filterSearchTb.Text); private void filterSearchTb_KeyPress(object sender, KeyPressEventArgs e) { @@ -399,6 +396,12 @@ namespace LibationWinForms #endregion #region quick filters menu + private void FirstFilterIsDefaultToolStripMenuItem_Click(object sender, EventArgs e) + { + firstFilterIsDefaultToolStripMenuItem.Checked = !firstFilterIsDefaultToolStripMenuItem.Checked; + QuickFilters.UseDefault = firstFilterIsDefaultToolStripMenuItem.Checked; + } + private void loadInitialQuickFilterState() { // set inital state. do once only @@ -408,18 +411,11 @@ namespace LibationWinForms if (QuickFilters.UseDefault) doFilter(QuickFilters.Filters.FirstOrDefault()); - // do after every save - UpdateFilterDropDown(); - } - - private void FirstFilterIsDefaultToolStripMenuItem_Click(object sender, EventArgs e) - { - firstFilterIsDefaultToolStripMenuItem.Checked = !firstFilterIsDefaultToolStripMenuItem.Checked; - QuickFilters.UseDefault = firstFilterIsDefaultToolStripMenuItem.Checked; + updateFiltersMenu(); } private object quickFilterTag { get; } = new object(); - public void UpdateFilterDropDown() + private void updateFiltersMenu(object _ = null, object __ = null) { // remove old for (var i = quickFiltersToolStripMenuItem.DropDownItems.Count - 1; i >= 0; i--)