more C# 14 partial properties

This commit is contained in:
GreemDev 2025-11-16 19:13:58 -06:00
parent 09748b140a
commit e8751e1c40
8 changed files with 230 additions and 103 deletions

View file

@ -27,82 +27,136 @@ namespace Ryujinx.Ava.UI.Models.Input
public ControllerType ControllerType { get; set; } public ControllerType ControllerType { get; set; }
public PlayerIndex PlayerIndex { get; set; } public PlayerIndex PlayerIndex { get; set; }
[ObservableProperty] private StickInputId _leftJoystick; [ObservableProperty]
[ObservableProperty] private bool _leftInvertStickX; public partial StickInputId LeftJoystick { get; set; }
[ObservableProperty] private bool _leftInvertStickY;
[ObservableProperty] private bool _leftRotate90;
[ObservableProperty] private GamepadInputId _leftStickButton;
[ObservableProperty] private StickInputId _rightJoystick; [ObservableProperty]
[ObservableProperty] private bool _rightInvertStickX; public partial bool LeftInvertStickX { get; set; }
[ObservableProperty] private bool _rightInvertStickY;
[ObservableProperty] private bool _rightRotate90;
[ObservableProperty] private GamepadInputId _rightStickButton;
[ObservableProperty] private GamepadInputId _dpadUp; [ObservableProperty]
[ObservableProperty] private GamepadInputId _dpadDown; public partial bool LeftInvertStickY { get; set; }
[ObservableProperty] private GamepadInputId _dpadLeft;
[ObservableProperty] private GamepadInputId _dpadRight;
[ObservableProperty] private GamepadInputId _buttonMinus; [ObservableProperty]
[ObservableProperty] private GamepadInputId _buttonPlus; public partial bool LeftRotate90 { get; set; }
[ObservableProperty] private GamepadInputId _buttonA; [ObservableProperty]
[ObservableProperty] private GamepadInputId _buttonB; public partial GamepadInputId LeftStickButton { get; set; }
[ObservableProperty] private GamepadInputId _buttonX;
[ObservableProperty] private GamepadInputId _buttonY;
[ObservableProperty] private GamepadInputId _buttonZl; [ObservableProperty]
[ObservableProperty] private GamepadInputId _buttonZr; public partial StickInputId RightJoystick { get; set; }
[ObservableProperty] private GamepadInputId _buttonL; [ObservableProperty]
[ObservableProperty] private GamepadInputId _buttonR; public partial bool RightInvertStickX { get; set; }
[ObservableProperty] private GamepadInputId _leftButtonSl; [ObservableProperty]
[ObservableProperty] private GamepadInputId _leftButtonSr; public partial bool RightInvertStickY { get; set; }
[ObservableProperty] private GamepadInputId _rightButtonSl; [ObservableProperty]
[ObservableProperty] private GamepadInputId _rightButtonSr; public partial bool RightRotate90 { get; set; }
[ObservableProperty] private float _deadzoneLeft; [ObservableProperty]
[ObservableProperty] private float _deadzoneRight; public partial GamepadInputId RightStickButton { get; set; }
[ObservableProperty] private float _rangeLeft; [ObservableProperty]
[ObservableProperty] private float _rangeRight; public partial GamepadInputId DpadUp { get; set; }
[ObservableProperty] private float _triggerThreshold; [ObservableProperty]
public partial GamepadInputId DpadDown { get; set; }
[ObservableProperty] private bool _enableMotion; [ObservableProperty]
public partial GamepadInputId DpadLeft { get; set; }
[ObservableProperty] private bool _enableRumble; [ObservableProperty]
public partial GamepadInputId DpadRight { get; set; }
[ObservableProperty] private bool _enableLedChanging; [ObservableProperty]
public partial GamepadInputId ButtonMinus { get; set; }
[ObservableProperty] private Color _ledColor; [ObservableProperty]
public partial GamepadInputId ButtonPlus { get; set; }
[ObservableProperty]
public partial GamepadInputId ButtonA { get; set; }
[ObservableProperty]
public partial GamepadInputId ButtonB { get; set; }
[ObservableProperty]
public partial GamepadInputId ButtonX { get; set; }
[ObservableProperty]
public partial GamepadInputId ButtonY { get; set; }
[ObservableProperty]
public partial GamepadInputId ButtonZl { get; set; }
[ObservableProperty]
public partial GamepadInputId ButtonZr { get; set; }
[ObservableProperty]
public partial GamepadInputId ButtonL { get; set; }
[ObservableProperty]
public partial GamepadInputId ButtonR { get; set; }
[ObservableProperty]
public partial GamepadInputId LeftButtonSl { get; set; }
[ObservableProperty]
public partial GamepadInputId LeftButtonSr { get; set; }
[ObservableProperty]
public partial GamepadInputId RightButtonSl { get; set; }
[ObservableProperty]
public partial GamepadInputId RightButtonSr { get; set; }
[ObservableProperty]
public partial float DeadzoneLeft { get; set; }
[ObservableProperty]
public partial float DeadzoneRight { get; set; }
[ObservableProperty]
public partial float RangeLeft { get; set; }
[ObservableProperty]
public partial float RangeRight { get; set; }
[ObservableProperty]
public partial float TriggerThreshold { get; set; }
[ObservableProperty]
public partial bool EnableMotion { get; set; }
[ObservableProperty]
public partial bool EnableRumble { get; set; }
[ObservableProperty]
public partial bool EnableLedChanging { get; set; }
[ObservableProperty]
public partial Color LedColor { get; set; }
public bool ShowLedColorPicker => !TurnOffLed && !UseRainbowLed; public bool ShowLedColorPicker => !TurnOffLed && !UseRainbowLed;
private bool _turnOffLed;
public bool TurnOffLed public bool TurnOffLed
{ {
get => _turnOffLed; get;
set set
{ {
_turnOffLed = value; field = value;
OnPropertyChanged(); OnPropertyChanged();
OnPropertyChanged(nameof(ShowLedColorPicker)); OnPropertyChanged(nameof(ShowLedColorPicker));
} }
} }
private bool _useRainbowLed;
public bool UseRainbowLed public bool UseRainbowLed
{ {
get => _useRainbowLed; get;
set set
{ {
_useRainbowLed = value; field = value;
OnPropertyChanged(); OnPropertyChanged();
OnPropertyChanged(nameof(ShowLedColorPicker)); OnPropertyChanged(nameof(ShowLedColorPicker));
} }

View file

@ -6,31 +6,44 @@ namespace Ryujinx.Ava.UI.Models.Input
{ {
public partial class HotkeyConfig : BaseModel public partial class HotkeyConfig : BaseModel
{ {
[ObservableProperty] private Key _toggleVSyncMode; [ObservableProperty]
public partial Key ToggleVSyncMode { get; set; }
[ObservableProperty] private Key _screenshot; [ObservableProperty]
public partial Key Screenshot { get; set; }
[ObservableProperty] private Key _showUI; [ObservableProperty]
public partial Key ShowUI { get; set; }
[ObservableProperty] private Key _pause; [ObservableProperty]
public partial Key Pause { get; set; }
[ObservableProperty] private Key _toggleMute; [ObservableProperty]
public partial Key ToggleMute { get; set; }
[ObservableProperty] private Key _resScaleUp; [ObservableProperty]
public partial Key ResScaleUp { get; set; }
[ObservableProperty] private Key _resScaleDown; [ObservableProperty]
public partial Key ResScaleDown { get; set; }
[ObservableProperty] private Key _volumeUp; [ObservableProperty]
public partial Key VolumeUp { get; set; }
[ObservableProperty] private Key _volumeDown; [ObservableProperty]
public partial Key VolumeDown { get; set; }
[ObservableProperty] private Key _customVSyncIntervalIncrement; [ObservableProperty]
public partial Key CustomVSyncIntervalIncrement { get; set; }
[ObservableProperty] private Key _customVSyncIntervalDecrement; [ObservableProperty]
public partial Key CustomVSyncIntervalDecrement { get; set; }
[ObservableProperty] private Key _turboMode; [ObservableProperty]
public partial Key TurboMode { get; set; }
[ObservableProperty] private bool _turboModeWhileHeld; [ObservableProperty]
public partial bool TurboModeWhileHeld { get; set; }
public HotkeyConfig(KeyboardHotkeys config) public HotkeyConfig(KeyboardHotkeys config)
{ {

View file

@ -12,42 +12,89 @@ namespace Ryujinx.Ava.UI.Models.Input
public ControllerType ControllerType { get; set; } public ControllerType ControllerType { get; set; }
public PlayerIndex PlayerIndex { get; set; } public PlayerIndex PlayerIndex { get; set; }
[ObservableProperty] private Key _leftStickUp; [ObservableProperty]
[ObservableProperty] private Key _leftStickDown; public partial Key LeftStickUp { get; set; }
[ObservableProperty] private Key _leftStickLeft;
[ObservableProperty] private Key _leftStickRight;
[ObservableProperty] private Key _leftStickButton;
[ObservableProperty] private Key _rightStickUp; [ObservableProperty]
[ObservableProperty] private Key _rightStickDown; public partial Key LeftStickDown { get; set; }
[ObservableProperty] private Key _rightStickLeft;
[ObservableProperty] private Key _rightStickRight;
[ObservableProperty] private Key _rightStickButton;
[ObservableProperty] private Key _dpadUp; [ObservableProperty]
[ObservableProperty] private Key _dpadDown; public partial Key LeftStickLeft { get; set; }
[ObservableProperty] private Key _dpadLeft;
[ObservableProperty] private Key _dpadRight;
[ObservableProperty] private Key _buttonMinus; [ObservableProperty]
[ObservableProperty] private Key _buttonPlus; public partial Key LeftStickRight { get; set; }
[ObservableProperty] private Key _buttonA; [ObservableProperty]
[ObservableProperty] private Key _buttonB; public partial Key LeftStickButton { get; set; }
[ObservableProperty] private Key _buttonX;
[ObservableProperty] private Key _buttonY;
[ObservableProperty] private Key _buttonL; [ObservableProperty]
[ObservableProperty] private Key _buttonR; public partial Key RightStickUp { get; set; }
[ObservableProperty] private Key _buttonZl; [ObservableProperty]
[ObservableProperty] private Key _buttonZr; public partial Key RightStickDown { get; set; }
[ObservableProperty] private Key _leftButtonSl; [ObservableProperty]
[ObservableProperty] private Key _leftButtonSr; public partial Key RightStickLeft { get; set; }
[ObservableProperty] private Key _rightButtonSl; [ObservableProperty]
[ObservableProperty] private Key _rightButtonSr; public partial Key RightStickRight { get; set; }
[ObservableProperty]
public partial Key RightStickButton { get; set; }
[ObservableProperty]
public partial Key DpadUp { get; set; }
[ObservableProperty]
public partial Key DpadDown { get; set; }
[ObservableProperty]
public partial Key DpadLeft { get; set; }
[ObservableProperty]
public partial Key DpadRight { get; set; }
[ObservableProperty]
public partial Key ButtonMinus { get; set; }
[ObservableProperty]
public partial Key ButtonPlus { get; set; }
[ObservableProperty]
public partial Key ButtonA { get; set; }
[ObservableProperty]
public partial Key ButtonB { get; set; }
[ObservableProperty]
public partial Key ButtonX { get; set; }
[ObservableProperty]
public partial Key ButtonY { get; set; }
[ObservableProperty]
public partial Key ButtonL { get; set; }
[ObservableProperty]
public partial Key ButtonR { get; set; }
[ObservableProperty]
public partial Key ButtonZl { get; set; }
[ObservableProperty]
public partial Key ButtonZr { get; set; }
[ObservableProperty]
public partial Key LeftButtonSl { get; set; }
[ObservableProperty]
public partial Key LeftButtonSr { get; set; }
[ObservableProperty]
public partial Key RightButtonSl { get; set; }
[ObservableProperty]
public partial Key RightButtonSr { get; set; }
public KeyboardInputConfig(InputConfig config) public KeyboardInputConfig(InputConfig config)
{ {

View file

@ -6,8 +6,8 @@ namespace Ryujinx.Ava.UI.Models
{ {
public partial class ModModel : BaseModel public partial class ModModel : BaseModel
{ {
[ObservableProperty] private bool _enabled; [ObservableProperty]
public partial bool Enabled { get; set; }
public bool InSd { get; } public bool InSd { get; }
public string Path { get; } public string Path { get; }
public string Name { get; } public string Name { get; }

View file

@ -15,6 +15,7 @@ namespace Ryujinx.Ava.UI.Models
public string Name { get; set; } public string Name { get; set; }
public byte[] Data { get; set; } public byte[] Data { get; set; }
[ObservableProperty] private SolidColorBrush _backgroundColor = new(Colors.White); [ObservableProperty]
public partial SolidColorBrush BackgroundColor { get; set; } = new(Colors.White);
} }
} }

View file

@ -7,24 +7,26 @@ namespace Ryujinx.Ava.UI.Models
{ {
public partial class TempProfile : BaseModel public partial class TempProfile : BaseModel
{ {
[ObservableProperty] private byte[] _image; [ObservableProperty]
[ObservableProperty] private string _name = String.Empty; public partial byte[] Image { get; set; }
private UserId _userId;
[ObservableProperty]
public partial string Name { get; set; } = string.Empty;
public static uint MaxProfileNameLength => 0x20; public static uint MaxProfileNameLength => 0x20;
public UserId UserId public UserId UserId
{ {
get => _userId; get;
set set
{ {
_userId = value; field = value;
OnPropertyChanged(); OnPropertyChanged();
OnPropertyChanged(nameof(UserIdString)); OnPropertyChanged(nameof(UserIdString));
} }
} }
public string UserIdString => _userId.ToString(); public string UserIdString => UserId.ToString();
public TempProfile(UserProfile profile) public TempProfile(UserProfile profile)
{ {

View file

@ -13,11 +13,20 @@ namespace Ryujinx.Ava.UI.Models
{ {
private readonly Profile _profile; private readonly Profile _profile;
private readonly NavigationDialogHost _owner; private readonly NavigationDialogHost _owner;
[ObservableProperty] private byte[] _image; [ObservableProperty]
[ObservableProperty] private string _name; public partial byte[] Image { get; set; }
[ObservableProperty] private UserId _userId;
[ObservableProperty] private bool _isPointerOver; [ObservableProperty]
[ObservableProperty] private IBrush _backgroundColor; public partial string Name { get; set; }
[ObservableProperty]
public partial UserId UserId { get; set; }
[ObservableProperty]
public partial bool IsPointerOver { get; set; }
[ObservableProperty]
public partial IBrush BackgroundColor { get; set; }
public UserProfile(Profile profile, NavigationDialogHost owner) public UserProfile(Profile profile, NavigationDialogHost owner)
{ {
@ -39,7 +48,7 @@ namespace Ryujinx.Ava.UI.Models
private void UpdateBackground() private void UpdateBackground()
{ {
Application currentApplication = Avalonia.Application.Current; Application currentApplication = Application.Current;
currentApplication.Styles.TryGetResource("ControlFillColorSecondary", currentApplication.ActualThemeVariant, out object color); currentApplication.Styles.TryGetResource("ControlFillColorSecondary", currentApplication.ActualThemeVariant, out object color);
if (color is not null) if (color is not null)

View file

@ -359,7 +359,8 @@ namespace Ryujinx.Ava.UI.ViewModels
} }
} }
[ObservableProperty] private bool _matchSystemTime; [ObservableProperty]
public partial bool MatchSystemTime { get; set; }
public DateTimeOffset CurrentDate { get; set; } public DateTimeOffset CurrentDate { get; set; }