QuickFilters on save event

This commit is contained in:
Robert McRackan 2022-05-03 11:29:21 -04:00
parent 28625029cd
commit 0bde86ebfd
4 changed files with 21 additions and 21 deletions

View File

@ -9,6 +9,8 @@ namespace LibationFileManager
{ {
public static class QuickFilters public static class QuickFilters
{ {
public static event EventHandler Updated;
internal class FilterState internal class FilterState
{ {
public bool UseDefault { get; set; } public bool UseDefault { get; set; }
@ -34,7 +36,7 @@ namespace LibationFileManager
lock (locker) lock (locker)
{ {
inMemoryState.UseDefault = value; inMemoryState.UseDefault = value;
save(); save(false);
} }
} }
} }
@ -97,7 +99,7 @@ namespace LibationFileManager
private static object locker { get; } = new object(); private static object locker { get; } = new object();
// ONLY call this within lock() // ONLY call this within lock()
private static void save() private static void save(bool invokeUpdatedEvent = true)
{ {
// create json if not exists // create json if not exists
void resave() => File.WriteAllText(JsonFile, JsonConvert.SerializeObject(inMemoryState, Formatting.Indented)); void resave() => File.WriteAllText(JsonFile, JsonConvert.SerializeObject(inMemoryState, Formatting.Indented));
@ -111,6 +113,9 @@ namespace LibationFileManager
throw; throw;
} }
} }
if (invokeUpdatedEvent)
Updated?.Invoke(null, null);
} }
} }
} }

View File

@ -53,7 +53,6 @@ namespace LibationWinForms.Dialogs
.ToList(); .ToList();
QuickFilters.ReplaceAll(list); QuickFilters.ReplaceAll(list);
_parent.UpdateFilterDropDown();
this.DialogResult = DialogResult.OK; this.DialogResult = DialogResult.OK;
this.Close(); this.Close();
} }

View File

@ -17,9 +17,9 @@ namespace LibationWinForms.Dialogs
public partial class RemoveBooksDialog : Form public partial class RemoveBooksDialog : Form
{ {
private Account[] _accounts { get; } private Account[] _accounts { get; }
private readonly List<LibraryBook> _libraryBooks; private List<LibraryBook> _libraryBooks { get; }
private readonly SortableBindingList<RemovableGridEntry> _removableGridEntries; private SortableBindingList<RemovableGridEntry> _removableGridEntries { get; }
private readonly string _labelFormat; private string _labelFormat { get; }
private int SelectedCount => SelectedEntries?.Count() ?? 0; private int SelectedCount => SelectedEntries?.Count() ?? 0;
private IEnumerable<RemovableGridEntry> SelectedEntries => _removableGridEntries?.Where(b => b.Remove); private IEnumerable<RemovableGridEntry> SelectedEntries => _removableGridEntries?.Where(b => b.Remove);

View File

@ -34,6 +34,7 @@ namespace LibationWinForms
this.FormClosing += (_, _) => this.SaveSizeAndLocation(Configuration.Instance); this.FormClosing += (_, _) => this.SaveSizeAndLocation(Configuration.Instance);
LibraryCommands.LibrarySizeChanged += reloadGridAndUpdateBottomNumbers; LibraryCommands.LibrarySizeChanged += reloadGridAndUpdateBottomNumbers;
LibraryCommands.BookUserDefinedItemCommitted += setBackupCounts; LibraryCommands.BookUserDefinedItemCommitted += setBackupCounts;
QuickFilters.Updated += updateFiltersMenu;
var format = System.Drawing.Imaging.ImageFormat.Jpeg; var format = System.Drawing.Imaging.ImageFormat.Jpeg;
PictureStorage.SetDefaultImage(PictureSize._80x80, Properties.Resources.default_cover_80x80.ToBytes(format)); 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)); 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) if (this.DesignMode)
return; return;
@ -185,11 +186,7 @@ namespace LibationWinForms
#region filter #region filter
private void filterHelpBtn_Click(object sender, EventArgs e) => new SearchSyntaxDialog().ShowDialog(); private void filterHelpBtn_Click(object sender, EventArgs e) => new SearchSyntaxDialog().ShowDialog();
private void AddFilterBtn_Click(object sender, EventArgs e) private void AddFilterBtn_Click(object sender, EventArgs e) => QuickFilters.Add(this.filterSearchTb.Text);
{
QuickFilters.Add(this.filterSearchTb.Text);
UpdateFilterDropDown();
}
private void filterSearchTb_KeyPress(object sender, KeyPressEventArgs e) private void filterSearchTb_KeyPress(object sender, KeyPressEventArgs e)
{ {
@ -399,6 +396,12 @@ namespace LibationWinForms
#endregion #endregion
#region quick filters menu #region quick filters menu
private void FirstFilterIsDefaultToolStripMenuItem_Click(object sender, EventArgs e)
{
firstFilterIsDefaultToolStripMenuItem.Checked = !firstFilterIsDefaultToolStripMenuItem.Checked;
QuickFilters.UseDefault = firstFilterIsDefaultToolStripMenuItem.Checked;
}
private void loadInitialQuickFilterState() private void loadInitialQuickFilterState()
{ {
// set inital state. do once only // set inital state. do once only
@ -408,18 +411,11 @@ namespace LibationWinForms
if (QuickFilters.UseDefault) if (QuickFilters.UseDefault)
doFilter(QuickFilters.Filters.FirstOrDefault()); doFilter(QuickFilters.Filters.FirstOrDefault());
// do after every save updateFiltersMenu();
UpdateFilterDropDown();
}
private void FirstFilterIsDefaultToolStripMenuItem_Click(object sender, EventArgs e)
{
firstFilterIsDefaultToolStripMenuItem.Checked = !firstFilterIsDefaultToolStripMenuItem.Checked;
QuickFilters.UseDefault = firstFilterIsDefaultToolStripMenuItem.Checked;
} }
private object quickFilterTag { get; } = new object(); private object quickFilterTag { get; } = new object();
public void UpdateFilterDropDown() private void updateFiltersMenu(object _ = null, object __ = null)
{ {
// remove old // remove old
for (var i = quickFiltersToolStripMenuItem.DropDownItems.Count - 1; i >= 0; i--) for (var i = quickFiltersToolStripMenuItem.DropDownItems.Count - 1; i >= 0; i--)