92 lines
2.9 KiB
C#
92 lines
2.9 KiB
C#
using ApplicationServices;
|
|
using Dinah.Core;
|
|
using Dinah.Core.Threading;
|
|
|
|
namespace LibationWinForms
|
|
{
|
|
public partial class Form1
|
|
{
|
|
private System.ComponentModel.BackgroundWorker updateCountsBw = new();
|
|
|
|
protected void Configure_BackupCounts()
|
|
{
|
|
// init formattable
|
|
beginBookBackupsToolStripMenuItem.Format(0);
|
|
beginPdfBackupsToolStripMenuItem.Format(0);
|
|
|
|
Load += setBackupCounts;
|
|
LibraryCommands.LibrarySizeChanged += setBackupCounts;
|
|
LibraryCommands.BookUserDefinedItemCommitted += setBackupCounts;
|
|
|
|
updateCountsBw.DoWork += UpdateCountsBw_DoWork;
|
|
updateCountsBw.RunWorkerCompleted += exportMenuEnable;
|
|
updateCountsBw.RunWorkerCompleted += updateBottomStats;
|
|
updateCountsBw.RunWorkerCompleted += update_BeginBookBackups_menuItem;
|
|
updateCountsBw.RunWorkerCompleted += udpate_BeginPdfOnlyBackups_menuItem;
|
|
}
|
|
|
|
private bool runBackupCountsAgain;
|
|
|
|
private void setBackupCounts(object _, object __)
|
|
{
|
|
runBackupCountsAgain = true;
|
|
|
|
if (!updateCountsBw.IsBusy)
|
|
updateCountsBw.RunWorkerAsync();
|
|
}
|
|
|
|
private void UpdateCountsBw_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
|
|
{
|
|
while (runBackupCountsAgain)
|
|
{
|
|
runBackupCountsAgain = false;
|
|
e.Result = LibraryCommands.GetCounts();
|
|
}
|
|
}
|
|
|
|
private void exportMenuEnable(object _, System.ComponentModel.RunWorkerCompletedEventArgs e)
|
|
{
|
|
var libraryStats = e.Result as LibraryCommands.LibraryStats;
|
|
Invoke(() => exportLibraryToolStripMenuItem.Enabled = libraryStats.HasBookResults);
|
|
}
|
|
|
|
private void updateBottomStats(object _, System.ComponentModel.RunWorkerCompletedEventArgs e)
|
|
{
|
|
var libraryStats = e.Result as LibraryCommands.LibraryStats;
|
|
statusStrip1.UIThreadAsync(() => backupsCountsLbl.Text = libraryStats.StatusString);
|
|
}
|
|
|
|
// update 'begin book and pdf backups' menu item
|
|
private void update_BeginBookBackups_menuItem(object _, System.ComponentModel.RunWorkerCompletedEventArgs e)
|
|
{
|
|
var libraryStats = e.Result as LibraryCommands.LibraryStats;
|
|
|
|
var menuItemText
|
|
= libraryStats.HasPendingBooks
|
|
? $"{libraryStats.PendingBooks} remaining"
|
|
: "All books have been liberated";
|
|
menuStrip1.UIThreadAsync(() =>
|
|
{
|
|
beginBookBackupsToolStripMenuItem.Format(menuItemText);
|
|
beginBookBackupsToolStripMenuItem.Enabled = libraryStats.HasPendingBooks;
|
|
});
|
|
}
|
|
|
|
// update 'begin pdf only backups' menu item
|
|
private void udpate_BeginPdfOnlyBackups_menuItem(object _, System.ComponentModel.RunWorkerCompletedEventArgs e)
|
|
{
|
|
var libraryStats = e.Result as LibraryCommands.LibraryStats;
|
|
|
|
var menuItemText
|
|
= libraryStats.pdfsNotDownloaded > 0
|
|
? $"{libraryStats.pdfsNotDownloaded} remaining"
|
|
: "All PDFs have been downloaded";
|
|
menuStrip1.UIThreadAsync(() =>
|
|
{
|
|
beginPdfBackupsToolStripMenuItem.Format(menuItemText);
|
|
beginPdfBackupsToolStripMenuItem.Enabled = libraryStats.pdfsNotDownloaded > 0;
|
|
});
|
|
}
|
|
}
|
|
}
|