using System; using System.Reflection; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using System.Collections.ObjectModel; using VisionAsist.Models; using VisionAsist.SDK; using System.IO; using System.Linq; namespace VisionAsist.ViewModels; public class ModuleItem { public string Name { get; set; } public IRelayCommand SettingsCommand { get; set; } } public class SettingsViewModel : ViewModelBase { public string OllamaBaseUrl { get => SettingsManager.Current.OllamaBaseUrl; set { SettingsManager.Current.OllamaBaseUrl = value; OnPropertyChanged(); } } public string OllamaModel { get => SettingsManager.Current.OllamaModel; set { SettingsManager.Current.OllamaModel = value; OnPropertyChanged(); } } public IRelayCommand SaveCommand { get; } public ObservableCollection Modules { get; } = new(); public SettingsViewModel() { SaveCommand = new RelayCommand(SettingsManager.Save); foreach (var module in Core.ModuleList) { AddModule(module.Name); } } public void AddModule(string name) { Modules.Add(new ModuleItem { Name = name, SettingsCommand = new RelayCommand(() => OpenSettings(name)) }); } private void OpenSettings(string moduleName) { var module = Core.ModuleList.FirstOrDefault(m => m.Name == moduleName); if (module != null) { module.Module.Settings(new object[] { this }); } } }