using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using GSS2.Core.Hardware; using GSS2.UI.Core.ViewModels; namespace GSS2.Test.ViewModels; public partial class MainViewModel : ViewModelBase { private readonly ILogger _logger; private readonly CameraService _cameraService; [ObservableProperty] private CameraViewModel _cameraViewModel; [ObservableProperty] private ResourcesViewModel _resourcesViewModel; [ObservableProperty] private OpenCvSharp.Mat? _image; [ObservableProperty] private IRelayCommand _buttonCaptureClick; [ObservableProperty] private IRelayCommand _buttonUpClick; [ObservableProperty] private IRelayCommand _buttonDownClick; [ObservableProperty] private int _currentIndex; [ObservableProperty] private bool _canScrollForward; [ObservableProperty] private bool _canScrollBackward; public MainViewModel(ILogger logger, CameraViewModel cameraViewModel, ResourcesViewModel resourcesViewModel, CameraService cameraService) { _logger = logger; _cameraService = cameraService; CameraViewModel = cameraViewModel; ResourcesViewModel = resourcesViewModel; ButtonCaptureClick = new RelayCommand(() => { Task.Run(() => cameraService.CaptureImage(CancellationToken.None, 10).ContinueWith(image => Image = image.Result)); }); ButtonUpClick = new RelayCommand(() => CurrentIndex--); ButtonDownClick = new RelayCommand(() => CurrentIndex++); _logger.LogInformation("{} initialized", nameof(MainViewModel)); } }