mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-21 16:14:28 +08:00
58 lines
1.4 KiB
C#
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));
|
|
}
|
|
}
|