LANCommander/LANCommander.Launcher/ViewModels/InstallTaskItemViewModel.cs

79 lines
2.1 KiB
C#
Raw Normal View History

using System;
using CommunityToolkit.Mvvm.ComponentModel;
using LANCommander.SDK.Enums;
using LANCommander.SDK.Models;
namespace LANCommander.Launcher.ViewModels;
public partial class InstallTaskItemViewModel : ViewModelBase
{
[ObservableProperty]
private Guid _id;
[ObservableProperty]
private string _title = string.Empty;
[ObservableProperty]
private InstallTaskType _type;
[ObservableProperty]
private InstallTaskStatus _status = InstallTaskStatus.Queued;
[ObservableProperty]
private float _progress;
[ObservableProperty]
private bool _reportsProgress;
[ObservableProperty]
private bool _isCritical;
[ObservableProperty]
private string? _errorMessage;
[ObservableProperty]
private long _bytesTransferred;
[ObservableProperty]
private long _totalBytes;
[ObservableProperty]
private long _transferSpeed;
[ObservableProperty]
private bool _isFirst;
[ObservableProperty]
private bool _isLast;
public bool IsCompleted => Status == InstallTaskStatus.Completed;
public bool IsRunning => Status == InstallTaskStatus.Running;
public bool IsFailed => Status == InstallTaskStatus.Failed;
public bool IsQueued => Status == InstallTaskStatus.Queued;
public bool IsSkipped => Status == InstallTaskStatus.Skipped;
2026-04-18 18:55:28 -05:00
public bool IsChecked => Status == InstallTaskStatus.Completed;
public bool ShowTopLine => !IsFirst;
public bool ShowBottomLine => !IsLast;
2026-04-18 18:55:28 -05:00
partial void OnStatusChanged(InstallTaskStatus value)
{
OnPropertyChanged(nameof(IsCompleted));
OnPropertyChanged(nameof(IsRunning));
OnPropertyChanged(nameof(IsFailed));
OnPropertyChanged(nameof(IsQueued));
OnPropertyChanged(nameof(IsSkipped));
OnPropertyChanged(nameof(IsChecked));
}
public InstallTaskItemViewModel() { }
public InstallTaskItemViewModel(InstallTaskDefinition taskDef)
{
Id = taskDef.Id;
Title = taskDef.Title;
Type = taskDef.Type;
ReportsProgress = taskDef.ReportsProgress;
IsCritical = taskDef.IsCritical;
}
}