Documentation and organization
This commit is contained in:
parent
a8bca3de98
commit
7f08da96bb
@ -1,6 +1,6 @@
|
|||||||
namespace LibationWinForms.ProcessQueue
|
namespace LibationWinForms.ProcessQueue
|
||||||
{
|
{
|
||||||
partial class ProcessBookQueue
|
partial class ProcessQueueControl
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Required designer variable.
|
/// Required designer variable.
|
||||||
@ -28,13 +28,15 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProcessBookQueue));
|
this.components = new System.ComponentModel.Container();
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ProcessQueueControl));
|
||||||
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
|
||||||
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
|
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
|
||||||
this.queueNumberLbl = new System.Windows.Forms.ToolStripStatusLabel();
|
this.queueNumberLbl = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.completedNumberLbl = new System.Windows.Forms.ToolStripStatusLabel();
|
this.completedNumberLbl = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.errorNumberLbl = new System.Windows.Forms.ToolStripStatusLabel();
|
this.errorNumberLbl = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
|
this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
|
this.runningTimeLbl = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
this.panel3 = new System.Windows.Forms.Panel();
|
||||||
@ -47,6 +49,7 @@
|
|||||||
this.panel2 = new System.Windows.Forms.Panel();
|
this.panel2 = new System.Windows.Forms.Panel();
|
||||||
this.clearLogBtn = new System.Windows.Forms.Button();
|
this.clearLogBtn = new System.Windows.Forms.Button();
|
||||||
this.logMeTbox = new System.Windows.Forms.TextBox();
|
this.logMeTbox = new System.Windows.Forms.TextBox();
|
||||||
|
this.counterTimer = new System.Windows.Forms.Timer(this.components);
|
||||||
this.statusStrip1.SuspendLayout();
|
this.statusStrip1.SuspendLayout();
|
||||||
this.tabControl1.SuspendLayout();
|
this.tabControl1.SuspendLayout();
|
||||||
this.tabPage1.SuspendLayout();
|
this.tabPage1.SuspendLayout();
|
||||||
@ -63,12 +66,13 @@
|
|||||||
this.queueNumberLbl,
|
this.queueNumberLbl,
|
||||||
this.completedNumberLbl,
|
this.completedNumberLbl,
|
||||||
this.errorNumberLbl,
|
this.errorNumberLbl,
|
||||||
this.toolStripStatusLabel1});
|
this.toolStripStatusLabel1,
|
||||||
|
this.runningTimeLbl});
|
||||||
this.statusStrip1.Location = new System.Drawing.Point(0, 483);
|
this.statusStrip1.Location = new System.Drawing.Point(0, 483);
|
||||||
this.statusStrip1.Name = "statusStrip1";
|
this.statusStrip1.Name = "statusStrip1";
|
||||||
this.statusStrip1.Size = new System.Drawing.Size(404, 25);
|
this.statusStrip1.Size = new System.Drawing.Size(404, 25);
|
||||||
this.statusStrip1.TabIndex = 1;
|
this.statusStrip1.TabIndex = 1;
|
||||||
this.statusStrip1.Text = "statusStrip1";
|
this.statusStrip1.Text = "baseStatusStrip";
|
||||||
//
|
//
|
||||||
// toolStripProgressBar1
|
// toolStripProgressBar1
|
||||||
//
|
//
|
||||||
@ -99,9 +103,16 @@
|
|||||||
// toolStripStatusLabel1
|
// toolStripStatusLabel1
|
||||||
//
|
//
|
||||||
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
|
this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
|
||||||
this.toolStripStatusLabel1.Size = new System.Drawing.Size(118, 20);
|
this.toolStripStatusLabel1.Size = new System.Drawing.Size(77, 20);
|
||||||
this.toolStripStatusLabel1.Spring = true;
|
this.toolStripStatusLabel1.Spring = true;
|
||||||
//
|
//
|
||||||
|
// runningTimeLbl
|
||||||
|
//
|
||||||
|
this.runningTimeLbl.AutoSize = false;
|
||||||
|
this.runningTimeLbl.Name = "runningTimeLbl";
|
||||||
|
this.runningTimeLbl.Size = new System.Drawing.Size(41, 20);
|
||||||
|
this.runningTimeLbl.Text = "[TIME]";
|
||||||
|
//
|
||||||
// tabControl1
|
// tabControl1
|
||||||
//
|
//
|
||||||
this.tabControl1.Controls.Add(this.tabPage1);
|
this.tabControl1.Controls.Add(this.tabPage1);
|
||||||
@ -167,7 +178,7 @@
|
|||||||
this.btnCleanFinished.TabIndex = 3;
|
this.btnCleanFinished.TabIndex = 3;
|
||||||
this.btnCleanFinished.Text = "Clear Finished";
|
this.btnCleanFinished.Text = "Clear Finished";
|
||||||
this.btnCleanFinished.UseVisualStyleBackColor = true;
|
this.btnCleanFinished.UseVisualStyleBackColor = true;
|
||||||
this.btnCleanFinished.Click += new System.EventHandler(this.btnCleanFinished_Click);
|
this.btnCleanFinished.Click += new System.EventHandler(this.btnClearFinished_Click);
|
||||||
//
|
//
|
||||||
// cancelAllBtn
|
// cancelAllBtn
|
||||||
//
|
//
|
||||||
@ -236,6 +247,11 @@
|
|||||||
this.logMeTbox.Size = new System.Drawing.Size(390, 449);
|
this.logMeTbox.Size = new System.Drawing.Size(390, 449);
|
||||||
this.logMeTbox.TabIndex = 0;
|
this.logMeTbox.TabIndex = 0;
|
||||||
//
|
//
|
||||||
|
// counterTimer
|
||||||
|
//
|
||||||
|
this.counterTimer.Interval = 950;
|
||||||
|
this.counterTimer.Tick += new System.EventHandler(this.CounterTimer_Tick);
|
||||||
|
//
|
||||||
// ProcessBookQueue
|
// ProcessBookQueue
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
@ -277,5 +293,7 @@
|
|||||||
private System.Windows.Forms.ToolStripStatusLabel errorNumberLbl;
|
private System.Windows.Forms.ToolStripStatusLabel errorNumberLbl;
|
||||||
private System.Windows.Forms.Panel panel3;
|
private System.Windows.Forms.Panel panel3;
|
||||||
private System.Windows.Forms.Panel panel4;
|
private System.Windows.Forms.Panel panel4;
|
||||||
|
private System.Windows.Forms.ToolStripStatusLabel runningTimeLbl;
|
||||||
|
private System.Windows.Forms.Timer counterTimer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -8,7 +8,7 @@ using System.Windows.Forms;
|
|||||||
|
|
||||||
namespace LibationWinForms.ProcessQueue
|
namespace LibationWinForms.ProcessQueue
|
||||||
{
|
{
|
||||||
internal partial class ProcessBookQueue : UserControl, ILogForm
|
internal partial class ProcessQueueControl : UserControl, ILogForm
|
||||||
{
|
{
|
||||||
private TrackedQueue<ProcessBook> Queue = new();
|
private TrackedQueue<ProcessBook> Queue = new();
|
||||||
private readonly LogMe Logger;
|
private readonly LogMe Logger;
|
||||||
@ -45,15 +45,12 @@ namespace LibationWinForms.ProcessQueue
|
|||||||
|
|
||||||
public ToolStripButton popoutBtn = new();
|
public ToolStripButton popoutBtn = new();
|
||||||
|
|
||||||
private int FirstVisible = 0;
|
public ProcessQueueControl()
|
||||||
private int NumVisible = 0;
|
|
||||||
private IReadOnlyList<ProcessBookControl> Panels;
|
|
||||||
|
|
||||||
public ProcessBookQueue()
|
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
Logger = LogMe.RegisterForm(this);
|
Logger = LogMe.RegisterForm(this);
|
||||||
|
|
||||||
|
runningTimeLbl.Text = string.Empty;
|
||||||
popoutBtn.DisplayStyle = ToolStripItemDisplayStyle.Text;
|
popoutBtn.DisplayStyle = ToolStripItemDisplayStyle.Text;
|
||||||
popoutBtn.Name = "popoutBtn";
|
popoutBtn.Name = "popoutBtn";
|
||||||
popoutBtn.Text = "Pop Out";
|
popoutBtn.Text = "Pop Out";
|
||||||
@ -74,6 +71,85 @@ namespace LibationWinForms.ProcessQueue
|
|||||||
CompletedCount = 0;
|
CompletedCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void AddDownloadDecrypt(IEnumerable<GridEntry> entries)
|
||||||
|
{
|
||||||
|
foreach (var entry in entries)
|
||||||
|
AddDownloadDecrypt(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddConvertMp3(IEnumerable<GridEntry> entries)
|
||||||
|
{
|
||||||
|
foreach (var entry in entries)
|
||||||
|
AddConvertMp3(entry);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddDownloadDecrypt(GridEntry gridEntry)
|
||||||
|
{
|
||||||
|
if (Queue.Any(b => b?.LibraryBook?.Book?.AudibleProductId == gridEntry.AudibleProductId))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ProcessBook pbook = new(gridEntry.LibraryBook, gridEntry.Cover, Logger);
|
||||||
|
pbook.DataAvailable += Pbook_DataAvailable;
|
||||||
|
|
||||||
|
pbook.AddDownloadDecryptBook();
|
||||||
|
pbook.AddDownloadPdf();
|
||||||
|
|
||||||
|
Queue.Enqueue(pbook);
|
||||||
|
|
||||||
|
if (!Running)
|
||||||
|
{
|
||||||
|
QueueRunner = QueueLoop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddConvertMp3(GridEntry gridEntry)
|
||||||
|
{
|
||||||
|
if (Queue.Any(b => b?.LibraryBook?.Book?.AudibleProductId == gridEntry.AudibleProductId))
|
||||||
|
return;
|
||||||
|
|
||||||
|
ProcessBook pbook = new(gridEntry.LibraryBook, gridEntry.Cover, Logger);
|
||||||
|
pbook.DataAvailable += Pbook_DataAvailable;
|
||||||
|
|
||||||
|
pbook.AddConvertToMp3();
|
||||||
|
|
||||||
|
Queue.Enqueue(pbook);
|
||||||
|
|
||||||
|
if (!Running)
|
||||||
|
{
|
||||||
|
QueueRunner = QueueLoop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTime StartintTime;
|
||||||
|
private async Task QueueLoop()
|
||||||
|
{
|
||||||
|
StartintTime = DateTime.Now;
|
||||||
|
counterTimer.Start();
|
||||||
|
|
||||||
|
while (Queue.MoveNext())
|
||||||
|
{
|
||||||
|
var nextBook = Queue.Current;
|
||||||
|
|
||||||
|
var result = await nextBook.ProcessOneAsync();
|
||||||
|
|
||||||
|
if (result == ProcessBookResult.FailedRetry)
|
||||||
|
Queue.Enqueue(nextBook);
|
||||||
|
else if (result == ProcessBookResult.FailedAbort)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Queue_CompletedCountChanged(this, 0);
|
||||||
|
counterTimer.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void WriteLine(string text)
|
||||||
|
{
|
||||||
|
if (!IsDisposed)
|
||||||
|
logMeTbox.UIThreadAsync(() => logMeTbox.AppendText($"{DateTime.Now} {text}{Environment.NewLine}"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Control event handlers
|
||||||
|
|
||||||
private void Queue_CompletedCountChanged(object sender, int e)
|
private void Queue_CompletedCountChanged(object sender, int e)
|
||||||
{
|
{
|
||||||
int errCount = Queue.Completed.Count(p => p.Result is ProcessBookResult.FailedAbort or ProcessBookResult.FailedSkip or ProcessBookResult.ValidationFail);
|
int errCount = Queue.Completed.Count(p => p.Result is ProcessBookResult.FailedAbort or ProcessBookResult.FailedSkip or ProcessBookResult.ValidationFail);
|
||||||
@ -94,45 +170,70 @@ namespace LibationWinForms.ProcessQueue
|
|||||||
toolStripProgressBar1.Maximum = Queue.Count;
|
toolStripProgressBar1.Maximum = Queue.Count;
|
||||||
toolStripProgressBar1.Value = Queue.Completed.Count;
|
toolStripProgressBar1.Value = Queue.Completed.Count;
|
||||||
}
|
}
|
||||||
private void VirtualFlowControl2_ButtonClicked(int itemIndex, string buttonName, ProcessBookControl panelClicked)
|
|
||||||
|
private void cancelAllBtn_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
ProcessBook item = Queue[itemIndex];
|
Queue.ClearQueue();
|
||||||
if (buttonName == "cancelBtn")
|
Queue.Current?.Cancel();
|
||||||
{
|
virtualFlowControl2.VirtualControlCount = Queue.Count;
|
||||||
item.Cancel();
|
UpdateAllControls();
|
||||||
Queue.RemoveQueued(item);
|
|
||||||
virtualFlowControl2.VirtualControlCount = Queue.Count;
|
|
||||||
UpdateControl(itemIndex);
|
|
||||||
}
|
|
||||||
else if (buttonName == "moveFirstBtn")
|
|
||||||
{
|
|
||||||
Queue.MoveQueuePosition(item, QueuePosition.Fisrt);
|
|
||||||
UpdateAllControls();
|
|
||||||
}
|
|
||||||
else if (buttonName == "moveUpBtn")
|
|
||||||
{
|
|
||||||
Queue.MoveQueuePosition(item, QueuePosition.OneUp);
|
|
||||||
UpdateControl(itemIndex - 1);
|
|
||||||
UpdateControl(itemIndex);
|
|
||||||
}
|
|
||||||
else if (buttonName == "moveDownBtn")
|
|
||||||
{
|
|
||||||
Queue.MoveQueuePosition(item, QueuePosition.OneDown);
|
|
||||||
UpdateControl(itemIndex + 1);
|
|
||||||
UpdateControl(itemIndex);
|
|
||||||
}
|
|
||||||
else if (buttonName == "moveLastBtn")
|
|
||||||
{
|
|
||||||
Queue.MoveQueuePosition(item, QueuePosition.Last);
|
|
||||||
UpdateAllControls();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void btnClearFinished_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Queue.ClearCompleted();
|
||||||
|
virtualFlowControl2.VirtualControlCount = Queue.Count;
|
||||||
|
UpdateAllControls();
|
||||||
|
|
||||||
|
if (!Running)
|
||||||
|
runningTimeLbl.Text = string.Empty;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CounterTimer_Tick(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
string timeToStr(TimeSpan time)
|
||||||
|
{
|
||||||
|
string minsSecs = $"{time:mm\\:ss}";
|
||||||
|
if (time.TotalHours >= 1)
|
||||||
|
return $"{time.TotalHours:F0}:{minsSecs}";
|
||||||
|
return minsSecs;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Running)
|
||||||
|
runningTimeLbl.Text = timeToStr(DateTime.Now - StartintTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void clearLogBtn_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
logMeTbox.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region View-Model update event handling
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Index of the first <see cref="ProcessBook"/> visible in the <see cref="VirtualFlowControl"/>
|
||||||
|
/// </summary>
|
||||||
|
private int FirstVisible = 0;
|
||||||
|
/// <summary>
|
||||||
|
/// Number of <see cref="ProcessBook"/> visible in the <see cref="VirtualFlowControl"/>
|
||||||
|
/// </summary>
|
||||||
|
private int NumVisible = 0;
|
||||||
|
/// <summary>
|
||||||
|
/// Controls displaying the <see cref="ProcessBook"/> state, starting with <see cref="FirstVisible"/>
|
||||||
|
/// </summary>
|
||||||
|
private IReadOnlyList<ProcessBookControl> Panels;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates the display of a single <see cref="ProcessBookControl"/> at <paramref name="queueIndex"/> within <see cref="Queue"/>
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="queueIndex">index of the <see cref="ProcessBook"/> within the <see cref="Queue"/></param>
|
||||||
private void UpdateControl(int queueIndex)
|
private void UpdateControl(int queueIndex)
|
||||||
{
|
{
|
||||||
int i = queueIndex - FirstVisible;
|
int i = queueIndex - FirstVisible;
|
||||||
|
|
||||||
if (i < 0 || i > NumVisible) return;
|
if (i > NumVisible || i < 0) return;
|
||||||
|
|
||||||
var proc = Queue[queueIndex];
|
var proc = Queue[queueIndex];
|
||||||
|
|
||||||
@ -163,6 +264,49 @@ namespace LibationWinForms.ProcessQueue
|
|||||||
UpdateControl(FirstVisible + i);
|
UpdateControl(FirstVisible + i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// View notified the model that a botton was clicked
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="queueIndex">index of the <see cref="ProcessBook"/> within <see cref="Queue"/></param>
|
||||||
|
/// <param name="panelClicked">The clicked control to update</param>
|
||||||
|
private void VirtualFlowControl2_ButtonClicked(int queueIndex, string buttonName, ProcessBookControl panelClicked)
|
||||||
|
{
|
||||||
|
ProcessBook item = Queue[queueIndex];
|
||||||
|
if (buttonName == "cancelBtn")
|
||||||
|
{
|
||||||
|
item.Cancel();
|
||||||
|
Queue.RemoveQueued(item);
|
||||||
|
virtualFlowControl2.VirtualControlCount = Queue.Count;
|
||||||
|
UpdateControl(queueIndex);
|
||||||
|
}
|
||||||
|
else if (buttonName == "moveFirstBtn")
|
||||||
|
{
|
||||||
|
Queue.MoveQueuePosition(item, QueuePosition.Fisrt);
|
||||||
|
UpdateAllControls();
|
||||||
|
}
|
||||||
|
else if (buttonName == "moveUpBtn")
|
||||||
|
{
|
||||||
|
Queue.MoveQueuePosition(item, QueuePosition.OneUp);
|
||||||
|
UpdateControl(queueIndex - 1);
|
||||||
|
UpdateControl(queueIndex);
|
||||||
|
}
|
||||||
|
else if (buttonName == "moveDownBtn")
|
||||||
|
{
|
||||||
|
Queue.MoveQueuePosition(item, QueuePosition.OneDown);
|
||||||
|
UpdateControl(queueIndex + 1);
|
||||||
|
UpdateControl(queueIndex);
|
||||||
|
}
|
||||||
|
else if (buttonName == "moveLastBtn")
|
||||||
|
{
|
||||||
|
Queue.MoveQueuePosition(item, QueuePosition.Last);
|
||||||
|
UpdateAllControls();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// View needs updating
|
||||||
|
/// </summary>
|
||||||
private void VirtualFlowControl1_RequestData(int firstIndex, int numVisible, IReadOnlyList<ProcessBookControl> panelsToFill)
|
private void VirtualFlowControl1_RequestData(int firstIndex, int numVisible, IReadOnlyList<ProcessBookControl> panelsToFill)
|
||||||
{
|
{
|
||||||
FirstVisible = firstIndex;
|
FirstVisible = firstIndex;
|
||||||
@ -171,78 +315,15 @@ namespace LibationWinForms.ProcessQueue
|
|||||||
UpdateAllControls();
|
UpdateAllControls();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddDownloadDecrypt(IEnumerable<GridEntry> entries)
|
/// <summary>
|
||||||
{
|
/// Model updates the view
|
||||||
foreach (var entry in entries)
|
/// </summary>
|
||||||
AddDownloadDecrypt(entry);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void AddDownloadDecrypt(GridEntry gridEntry)
|
|
||||||
{
|
|
||||||
if (Queue.Any(b => b?.LibraryBook?.Book?.AudibleProductId == gridEntry.AudibleProductId))
|
|
||||||
return;
|
|
||||||
|
|
||||||
ProcessBook pbook = new(gridEntry.LibraryBook, gridEntry.Cover, Logger);
|
|
||||||
pbook.DataAvailable += Pbook_DataAvailable;
|
|
||||||
|
|
||||||
pbook.AddDownloadDecryptBook();
|
|
||||||
pbook.AddDownloadPdf();
|
|
||||||
|
|
||||||
Queue.Enqueue(pbook);
|
|
||||||
|
|
||||||
if (!Running)
|
|
||||||
{
|
|
||||||
QueueRunner = QueueLoop();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Pbook_DataAvailable(object sender, EventArgs e)
|
private void Pbook_DataAvailable(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
int index = Queue.IndexOf((ProcessBook)sender);
|
int index = Queue.IndexOf((ProcessBook)sender);
|
||||||
UpdateControl(index);
|
UpdateControl(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task QueueLoop()
|
#endregion
|
||||||
{
|
|
||||||
while (Queue.MoveNext())
|
|
||||||
{
|
|
||||||
var nextBook = Queue.Current;
|
|
||||||
|
|
||||||
var result = await nextBook.ProcessOneAsync();
|
|
||||||
|
|
||||||
if (result == ProcessBookResult.FailedRetry)
|
|
||||||
Queue.Enqueue(nextBook);
|
|
||||||
else if (result == ProcessBookResult.FailedAbort)
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Queue_CompletedCountChanged(this, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void cancelAllBtn_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Queue.ClearQueue();
|
|
||||||
Queue.Current?.Cancel();
|
|
||||||
virtualFlowControl2.VirtualControlCount = Queue.Count;
|
|
||||||
UpdateAllControls();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void btnCleanFinished_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Queue.ClearCompleted();
|
|
||||||
virtualFlowControl2.VirtualControlCount = Queue.Count;
|
|
||||||
UpdateAllControls();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void clearLogBtn_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
logMeTbox.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void WriteLine(string text)
|
|
||||||
{
|
|
||||||
if (!IsDisposed)
|
|
||||||
logMeTbox.UIThreadAsync(() => logMeTbox.AppendText($"{DateTime.Now} {text}{Environment.NewLine}"));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -630,4 +630,7 @@
|
|||||||
w1EmAAAAAElFTkSuQmCC
|
w1EmAAAAAElFTkSuQmCC
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
|
<metadata name="counterTimer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>133, 17</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
||||||
Loading…
x
Reference in New Issue
Block a user