Files
GSS2Rework/GSS2.Test/ViewModels/MainViewModel.cs
T
2026-02-19 08:22:55 +03:00

58 lines
2.9 KiB
C#

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<MainViewModel> _logger;
private readonly CameraService _cameraService;
private readonly IlluminatorService _illuminatorService;
[ObservableProperty] private CameraViewModel _cameraViewModel;
[ObservableProperty] private ResourcesViewModel _resourcesViewModel;
[ObservableProperty] private IlluminatorControllerViewModel _illuminatorControllerViewModel;
[ObservableProperty] private OpenCvSharp.Mat? _image1;
[ObservableProperty] private OpenCvSharp.Mat? _image2;
[ObservableProperty] private OpenCvSharp.Mat? _image3;
[ObservableProperty] private OpenCvSharp.Mat? _image4;
[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<MainViewModel> logger, CameraViewModel cameraViewModel, ResourcesViewModel resourcesViewModel, IlluminatorControllerViewModel illuminatorControllerViewModel, CameraService cameraService, IlluminatorService illuminatorService)
{
_logger = logger;
_cameraService = cameraService;
_illuminatorService = illuminatorService;
CameraViewModel = cameraViewModel;
ResourcesViewModel = resourcesViewModel;
IlluminatorControllerViewModel = illuminatorControllerViewModel;
ButtonCaptureClick = new RelayCommand(() =>
{
Task.Run(async () =>
{
_illuminatorService.TurnOn();
_illuminatorService.SetIntensity(1, 0, 0);
await _cameraService.CaptureImage(CancellationToken.None, 3).ContinueWith(image => Image1 = image.Result);
_illuminatorService.SetIntensity(0, 1, 1);
await _cameraService.CaptureImage(CancellationToken.None, 3).ContinueWith(image => Image2 = image.Result);
_illuminatorService.SetIntensity(0, 1, 0);
await _cameraService.CaptureImage(CancellationToken.None, 3).ContinueWith(image => Image3 = image.Result);
_illuminatorService.SetIntensity(0, 0, 1);
await _cameraService.CaptureImage(CancellationToken.None, 3).ContinueWith(image => Image4 = image.Result);
_illuminatorService.SetIntensity(0, 0, 0);
_illuminatorService.TurnOff();
});
});
ButtonUpClick = new RelayCommand(() => CurrentIndex--);
ButtonDownClick = new RelayCommand(() => CurrentIndex++);
_logger.LogInformation("{} initialized", nameof(MainViewModel));
}
}