clean_ryujinx/src/Ryujinx/UI/ViewModels/Input/KeyboardInputViewModel.cs
GreemDev 84f26f7276 language feature: field keyword & partial properties for observable properties in the UI
partial properties are from C# 13 but weren't usable for these properties
2025-11-11 12:43:34 -06:00

76 lines
1.7 KiB
C#

using Avalonia.Svg.Skia;
using CommunityToolkit.Mvvm.ComponentModel;
using Ryujinx.Ava.UI.Models.Input;
namespace Ryujinx.Ava.UI.ViewModels.Input
{
public partial class KeyboardInputViewModel : BaseModel
{
public KeyboardInputConfig Config
{
get;
set
{
field = value;
OnPropertyChanged();
}
}
public StickVisualizer Visualizer
{
get;
set
{
field = value;
OnPropertyChanged();
}
}
public bool IsLeft
{
get;
set
{
field = value;
OnPropertyChanged();
OnPropertyChanged(nameof(HasSides));
}
}
public bool IsRight
{
get;
set
{
field = value;
OnPropertyChanged();
OnPropertyChanged(nameof(HasSides));
}
}
public bool HasSides => IsLeft ^ IsRight;
[ObservableProperty]
public partial SvgImage Image { get; set; }
public readonly InputViewModel ParentModel;
public KeyboardInputViewModel(InputViewModel model, KeyboardInputConfig config, StickVisualizer visualizer)
{
ParentModel = model;
Visualizer = visualizer;
model.NotifyChangesEvent += OnParentModelChanged;
OnParentModelChanged();
Config = config;
}
public void OnParentModelChanged()
{
IsLeft = ParentModel.IsLeft;
IsRight = ParentModel.IsRight;
Image = ParentModel.Image;
}
}
}