using Microsoft.Extensions.Logging; using CommunityToolkit.Mvvm.ComponentModel; using Avalonia.Layout; using GSS2.Core.Hardware; namespace GSS2.UI.Core.ViewModels; public partial class IlluminatorControllerViewModel : ViewModelBase { private readonly ILogger _logger; private readonly IlluminatorService _illuminatorService; private bool _whiteIntensityChanging = false; private bool _uv365IntensityChanging = false; private bool _uv254IntensityChanging = false; [ObservableProperty] private double _whiteIntensity; [ObservableProperty] private double _uv365Intensity; [ObservableProperty] private double _uv254Intensity; [ObservableProperty] private bool _enabled; [ObservableProperty] Orientation _orientation; public IlluminatorControllerViewModel(ILogger logger, IlluminatorService illuminatorService) { _logger = logger; _logger.LogInformation("Initialization"); _illuminatorService = illuminatorService; WhiteIntensity = 0; Uv365Intensity = 0; Uv254Intensity = 0; Orientation = Orientation.Horizontal; Enabled = false; _logger.LogInformation("Initialized"); } partial void OnWhiteIntensityChanged(double value) { if (_whiteIntensityChanging) return; _whiteIntensityChanging = true; _illuminatorService.SetIntensity(white: value); _whiteIntensityChanging = false; } partial void OnUv365IntensityChanged(double value) { if (_uv365IntensityChanging) return; _uv365IntensityChanging = true; _illuminatorService.SetIntensity(uv365: value); _uv365IntensityChanging = false; } partial void OnUv254IntensityChanged(double value) { if (_uv254IntensityChanging) return; _uv254IntensityChanging = true; _illuminatorService.SetIntensity(uv254: value); _uv254IntensityChanging = false; } partial void OnEnabledChanged(bool value) { if (value) _illuminatorService.TurnOn(); else _illuminatorService.TurnOff(); } }