using System.Collections.ObjectModel; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using VisionBuilder.UI.Common.Commands; using VisionBuilder.UI.Common.Commands.Interfaces; using VisionBuilder.UI.Common.ViewModel.Interfaces.UI; namespace VisionBuilder.UI.Common.ViewModel; public partial class MainWindowVM:ObservableObject { private readonly ISettingsService _settingsService; public event Action ProgramStarted = delegate { }; public event Action ProgramClosed = delegate { }; public event Action TestModeChanged = delegate { }; [ObservableProperty] private bool _testMode; public MainWindowVM(ISettingsService settingsService) { _settingsService = settingsService; } public ObservableCollection SingleCameraVms { get; set; } = new ObservableCollection(); [RelayCommand] public async Task Settings() { await _settingsService.ShowSettingsDialogAsync(); } [RelayCommand] public void ToggleTestMode() { TestMode = !TestMode; TestModeChanged(TestMode); } public void OnProgramStarted() { ProgramStarted?.Invoke(); } public void OnProgramClosed() { foreach (var singleCameraVm in SingleCameraVms) { if (singleCameraVm.IsRunning) { singleCameraVm.StopCommand.Execute(null); } } ProgramClosed?.Invoke(); } }