Files
Libation/Source/HangoverWinForms/Form1.Deleted.cs
MBucari a55da5f187 Refactor DbContext access and disposal
- Remove instance queue. This is a database, after all, and is designed to be accessed and written to concurrently
- Reduce the number of calls to DbContexts.Create()
- Ensure that no LibationContext remains open across an await boundary. Multithread context access is the most likely culprit for past issues.
- Make all Update UserDefinedItem methods asynchronous.
2025-11-20 22:15:54 -07:00

77 lines
2.2 KiB
C#

using ApplicationServices;
using DataLayer;
namespace HangoverWinForms
{
public partial class Form1
{
private string deletedCheckedTemplate;
private void Load_deletedTab()
{
deletedCheckedTemplate = deletedCheckedLbl.Text;
}
private void deletedTab_VisibleChanged(object sender, EventArgs e)
{
if (!deletedTab.Visible)
return;
if (deletedCbl.Items.Count == 0)
reload();
}
private void deletedCbl_ItemCheck(object sender, ItemCheckEventArgs e)
{
// CheckedItems.Count is not updated until after the event fires
setLabel(e.NewValue);
}
private void checkAllBtn_Click(object sender, EventArgs e)
{
for (var i = 0; i < deletedCbl.Items.Count; i++)
deletedCbl.SetItemChecked(i, true);
}
private void uncheckAllBtn_Click(object sender, EventArgs e)
{
for (var i = 0; i < deletedCbl.Items.Count; i++)
deletedCbl.SetItemChecked(i, false);
}
private async void saveBtn_Click(object sender, EventArgs e)
{
var libraryBooksToRestore = deletedCbl.CheckedItems.Cast<LibraryBook>().ToList();
saveBtn.Enabled = false;
var qtyChanges = await libraryBooksToRestore.RestoreBooksAsync();
if (qtyChanges > 0)
Invoke(reload);
Invoke(() => saveBtn.Enabled = true);
}
private void reload()
{
deletedCbl.Items.Clear();
List<LibraryBook> deletedBooks = DbContexts.GetDeletedLibraryBooks();
foreach (var lb in deletedBooks)
deletedCbl.Items.Add(lb);
setLabel();
}
private void setLabel(CheckState? checkedState = null)
{
var pre = deletedCbl.CheckedItems.Count;
int count = checkedState switch
{
CheckState.Checked => pre + 1,
CheckState.Unchecked => pre - 1,
_ => pre,
};
deletedCheckedLbl.Text = string.Format(deletedCheckedTemplate, count, deletedCbl.Items.Count);
}
}
}