Files
romrepomgr/RomRepoMgr/Models/DatImporter.cs

69 lines
1.7 KiB
C#

using System;
using System.Threading.Tasks;
using Avalonia.Media;
using CommunityToolkit.Mvvm.ComponentModel;
using RomRepoMgr.Core.EventArgs;
namespace RomRepoMgr.Models;
public partial class DatImporter : ObservableObject
{
[ObservableProperty]
bool _indeterminate;
[ObservableProperty]
double _maximum;
[ObservableProperty]
double _minimum;
[ObservableProperty]
double _progress;
[ObservableProperty]
Color _statusColor;
[ObservableProperty]
string _statusMessage;
public string Filename { get; internal init; }
public Task Task { get; set; }
public bool Running { get; private set; } = true;
internal void OnErrorOccurred(object sender, ErrorEventArgs e)
{
StatusMessage = e.Message;
StatusColor = Colors.Red;
if(!Indeterminate) return;
Indeterminate = false;
Progress = 0;
}
internal void OnSetIndeterminateProgress(object sender, EventArgs e)
{
Indeterminate = true;
}
internal void OnSetMessage(object sender, MessageEventArgs e)
{
StatusMessage = e.Message;
}
internal void OnSetProgress(object sender, ProgressEventArgs e)
{
Progress = e.Value;
}
internal void OnSetProgressBounds(object sender, ProgressBoundsEventArgs e)
{
Indeterminate = false;
Maximum = e.Maximum;
Minimum = e.Minimum;
}
internal void OnWorkFinished(object sender, MessageEventArgs e)
{
Indeterminate = false;
Maximum = 1;
Minimum = 0;
Progress = 1;
StatusMessage = e.Message;
Running = false;
}
}