Files
LanMountainDesktop/LanDesktopPLONDS.installer/ViewModels/InstallerStepViewModel.cs
2026-06-03 12:32:56 +08:00

58 lines
1.4 KiB
C#

using CommunityToolkit.Mvvm.ComponentModel;
using FluentIcons.Common;
using LanDesktopPLONDS.Installer.Models;
namespace LanDesktopPLONDS.Installer.ViewModels;
public sealed partial class InstallerStepViewModel(
InstallerStepId stepId,
string title,
Icon icon) : ObservableObject
{
[ObservableProperty]
private bool _isUnlocked;
[ObservableProperty]
private bool _isSelected;
[ObservableProperty]
private bool _isCompleted;
public InstallerStepId StepId { get; } = stepId;
public string Title { get; } = title;
public Icon Icon { get; } = icon;
public bool IsLocked => !IsUnlocked;
public Icon DisplayIcon => IsLocked
? Icon.LockClosed
: IsCompleted
? Icon.CheckmarkCircle
: Icon;
public bool IsAvailable => IsUnlocked && !IsSelected && !IsCompleted;
partial void OnIsUnlockedChanged(bool value)
{
_ = value;
OnPropertyChanged(nameof(IsLocked));
OnPropertyChanged(nameof(IsAvailable));
OnPropertyChanged(nameof(DisplayIcon));
}
partial void OnIsSelectedChanged(bool value)
{
_ = value;
OnPropertyChanged(nameof(IsAvailable));
}
partial void OnIsCompletedChanged(bool value)
{
_ = value;
OnPropertyChanged(nameof(DisplayIcon));
OnPropertyChanged(nameof(IsAvailable));
}
}