Всё-таки не конец, надо ещё кнопки починить...
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Drawing;
|
||||
using System.Windows;
|
||||
using Pf2eDataScrapper.Helpers;
|
||||
|
||||
namespace Pf2eDataScrapper.WPF.ProgressForm;
|
||||
|
||||
/// <summary>
|
||||
/// Логика взаимодействия для ProgressFormWpf.xaml
|
||||
/// </summary>
|
||||
internal partial class ProgressForm : Window
|
||||
{
|
||||
public ProcessProgress Progress { get; }
|
||||
|
||||
public ObservableCollection<ListViewRow> ViewRows { get; set; } = [];
|
||||
|
||||
public ProgressForm(ProcessProgress progress)
|
||||
{
|
||||
Progress = progress;
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
Progress.ProgressUpdate += Progress_ProgressUpdate;
|
||||
Progress.ProgressMessage += Progress_ProgressMessage;
|
||||
Progress.ProgressComplete += Progress_ProgressComplete;
|
||||
}
|
||||
|
||||
|
||||
private void Progress_ProgressUpdate(ProcessProgress sender)
|
||||
{
|
||||
if (!Dispatcher.CheckAccess())
|
||||
{
|
||||
Dispatcher.Invoke(() => Progress_ProgressUpdate(sender));
|
||||
return;
|
||||
}
|
||||
|
||||
ProcessorsLabel.Content = sender.Processors.ToString();
|
||||
ProcessorsProgressBar.Maximum = sender.Processors.Count;
|
||||
ProcessorsProgressBar.Value = sender.Processors.Current;
|
||||
|
||||
LocalLabel.Content = sender.Local.ToString();
|
||||
LocalProgressBar.Maximum = sender.Local.Count;
|
||||
LocalProgressBar.Value = sender.Local.Current;
|
||||
}
|
||||
|
||||
private void Progress_ProgressMessage(ProcessProgress sender, LogLevel level, string message)
|
||||
{
|
||||
if (!Dispatcher.CheckAccess())
|
||||
{
|
||||
Dispatcher.Invoke(() => Progress_ProgressMessage(sender, level, message));
|
||||
return;
|
||||
}
|
||||
|
||||
ListViewRow item = new(level, message) { IsVisible = true };
|
||||
|
||||
ViewRows.Add(item);
|
||||
|
||||
MessageListView.ScrollIntoView(item);
|
||||
}
|
||||
private void Progress_ProgressComplete(ProcessProgress sender)
|
||||
{
|
||||
//(Application.Current as ImportApplication)!.CurrentStage = ApplicationStage.Viewer;
|
||||
}
|
||||
|
||||
public event ImportApplication.ApplicationStateChangeDelegate? ApplicationStateChange;
|
||||
}
|
||||
|
||||
internal class ListViewRow(LogLevel level, string message)
|
||||
{
|
||||
public string Time { get; } = DateTime.Now.ToString("HH:mm:ss.fff");
|
||||
|
||||
public LogLevel Level { get; } = level;
|
||||
|
||||
public string Message { get; } = message;
|
||||
|
||||
public Color Color { get; } =
|
||||
level switch
|
||||
{
|
||||
LogLevel.Important => Color.Salmon,
|
||||
LogLevel.Warning => Color.Khaki,
|
||||
LogLevel.Information => Color.White,
|
||||
LogLevel.Progress => Color.LightGray,
|
||||
_ => Color.White,
|
||||
};
|
||||
|
||||
public bool IsVisible { get; set; } = true;
|
||||
}
|
||||
Reference in New Issue
Block a user