mirror of
https://github.com/rmcrackan/Libation.git
synced 2025-12-23 22:17:52 -05:00
- 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.
77 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|