using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using WinWARP.Core.Services.Interfaces; namespace WinWARP.Core.ViewModels; public partial class SettingsViewModel : ObservableObject { private readonly ILocalizationService _localizationService; private readonly INavigationService _navigationService; public SettingsViewModel(ILocalizationService localizationService, INavigationService navigationService) { _navigationService = navigationService; _localizationService = localizationService; SelectedLanguage = _localizationService.GetCurrentLanguage(); Languages = new ObservableCollection(_localizationService.GetSupportedLanguages()); } [RelayCommand] private void Navigate(object? tagParameter) { if (tagParameter is Type viewModelType) { var method = _navigationService.GetType().GetMethod("NavigateTo")?.MakeGenericMethod(viewModelType); method?.Invoke(_navigationService, [null]); } } [ObservableProperty] public partial string SelectedLanguage { get; set; } partial void OnSelectedLanguageChanged(string value) { _localizationService.SetLanguageAsync(value); } public ObservableCollection Languages; }