115 lines
3.0 KiB
C#
115 lines
3.0 KiB
C#
namespace Pf2e.Scrapper.Helpers;
|
|
|
|
/// <summary>
|
|
/// Класс прогресса.
|
|
/// </summary>
|
|
public class ProgressItem
|
|
{
|
|
/// <summary>
|
|
/// Количество обрабатываемых процессов.
|
|
/// </summary>
|
|
public int Count
|
|
{
|
|
get => _count;
|
|
set
|
|
{
|
|
_count = value;
|
|
Update?.Invoke();
|
|
}
|
|
}
|
|
private int _count;
|
|
|
|
/// <summary>
|
|
/// Индекс текущего обрабатываемого процесса.
|
|
/// </summary>
|
|
public int Current
|
|
{
|
|
get => _current;
|
|
set
|
|
{
|
|
_current = value;
|
|
Update?.Invoke();
|
|
}
|
|
}
|
|
private int _current;
|
|
|
|
/// <summary>
|
|
/// Название текущего обрабатываемого процесса.
|
|
/// </summary>
|
|
public string Text
|
|
{
|
|
get => _text;
|
|
set
|
|
{
|
|
_text = value;
|
|
Update?.Invoke();
|
|
}
|
|
}
|
|
private string _text = "";
|
|
|
|
/// <summary>
|
|
/// Значение прогресса.
|
|
/// </summary>
|
|
public double Percent => Count > 0 ? 1.0 * Current / Count : 1.0;
|
|
|
|
/// <summary>
|
|
/// Сброс прогресса до нуля и установка нового максимального значения.
|
|
/// </summary>
|
|
/// <param name="max">Максимальное значение прогресса.</param>
|
|
public void Reset(int max = 0)
|
|
{
|
|
_count = max;
|
|
_current = 0;
|
|
_text = "";
|
|
Update?.Invoke();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Отмечает начало работы над процессом, описываемым строкой <paramref name="text"/>.
|
|
/// </summary>
|
|
/// <param name="text">Строка, описывающая процесс.</param>
|
|
public void Start(string text)
|
|
{
|
|
_text = text;
|
|
Update?.Invoke();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Отмечает конец работы над процессом и увеличивает значение прогресса.
|
|
/// </summary>
|
|
public void End()
|
|
{
|
|
_current++;
|
|
Update?.Invoke();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Отмечает прогресс завершённым.
|
|
/// </summary>
|
|
public void Complete()
|
|
{
|
|
_current = _count;
|
|
_text = "Готово!";
|
|
Update?.Invoke();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Получение строкового представления прогресса.
|
|
/// </summary>
|
|
/// <returns>Строковое представление прогресса.</returns>
|
|
public override string ToString()
|
|
{
|
|
return $"{Text} [{Current} / {Count}; {Percent:P}]";
|
|
}
|
|
|
|
/// <summary>
|
|
/// Делегат события обновления.
|
|
/// </summary>
|
|
public delegate void UpdateDelegate();
|
|
|
|
/// <summary>
|
|
/// Событие обновление.
|
|
/// </summary>
|
|
public event UpdateDelegate? Update;
|
|
}
|