Files
Pf2eDataScrapper/Pf2eDataScrapper/Forms/ProgressForm.cs
T

74 lines
2.2 KiB
C#

using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Processors;
namespace Pf2eDataScrapper.Forms;
internal partial class ProgressForm : Form
{
public ProcessProgress Progress { get; }
public ProgressForm(ProcessProgress progress)
{
Progress = progress;
InitializeComponent();
Progress.ProgressUpdate += Progress_ProgressUpdate;
Progress.ProgressMessage += Progress_ProgressMessage;
MessageListView
.GetType()
.GetProperty(
"DoubleBuffered",
System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic
)!
.SetValue(MessageListView, true, null);
}
private void Progress_ProgressUpdate(ProcessProgress sender)
{
if (InvokeRequired)
{
Invoke(Progress_ProgressUpdate, sender);
return;
}
ProcessorsLabel.Text = sender.Processors.ToString();
ProcessorsProgressBar.Maximum = sender.Processors.Count;
ProcessorsProgressBar.Value = sender.Processors.Current;
LocalLabel.Text = sender.Local.ToString();
LocalProgressBar.Maximum = sender.Local.Count;
LocalProgressBar.Value = sender.Local.Current;
Application.DoEvents();
}
private void Progress_ProgressMessage(ProcessProgress sender, LogLevel level, string message)
{
if (InvokeRequired)
{
Invoke(Progress_ProgressMessage, sender, level, message);
return;
}
ListViewItem item = new([DateTime.Now.ToString("HH:mm:ss.fff"), level.ToString(), message])
{
BackColor = level switch
{
LogLevel.Important => Color.Salmon,
LogLevel.Warning => Color.Khaki,
LogLevel.Information => Color.White,
LogLevel.Progress => Color.LightGray,
_ => Color.White,
},
};
MessageListView.Items.Add(item);
//MessageListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
//MessageListView.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
Application.DoEvents();
}
}