using System.Collections.ObjectModel; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; namespace Splitter_UI.ViewModels; public partial class FileListViewModel : ObservableObject { private readonly IFileJobFactory _factory; public ObservableCollection Files { get; } = []; public ObservableCollection SelectedFiles { get; } = []; [ObservableProperty] private FileJobViewModel? _selected; public event Action? SelectedFileChanged; public FileListViewModel(IFileJobFactory factory) { _factory = factory; } partial void OnSelectedChanged(FileJobViewModel? value) => SelectedFileChanged?.Invoke(value); [RelayCommand] private void AddFiles(IEnumerable paths) { foreach (var path in paths) { // Probe + auto-detect + thumbnail var job = new SingleJob { InputFile = path }; var vm = _factory.Create(job); Files.Add(vm); } } }