using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using LehrerApp.Core.Interfaces; using LehrerApp.Core.Models; using LehrerApp.Core.Services; using LehrerApp.Data; using LehrerApp.Desktop.Services; using LehrerApp.Desktop.ViewModels.Planning; using LehrerApp.Sync; using LehrerApp.Sync.Crypto; using System.Collections.ObjectModel; using System.Globalization; using System.Security.Cryptography; using System.Text.Json; using System.Text.Json.Serialization; namespace LehrerApp.Desktop.ViewModels.Settings; public partial class SettingsViewModel { // ── Darstellung (12.4) ────────────────────────────────────────────────────── [ObservableProperty] private AppTheme _selectedTheme; public string[] ThemeOptions { get; } = AppThemeDisplay.Options; public string SelectedThemeName { get => AppThemeDisplay.Label(SelectedTheme); set => SelectedTheme = AppThemeDisplay.FromLabel(value); } /// Vom Code-Behind gesetzt: wendet die Theme-Variante sofort an (Application.Current, siehe /// App.ApplyTheme) — ViewModels fassen Avalonia-Framework-Typen nicht direkt an, gleiches /// Muster wie die übrigen Code-Behind-Hooks in dieser Klasse. public Action? OnThemeChanged { get; set; } partial void OnSelectedThemeChanged(AppTheme value) { _appearance.Save(value); OnThemeChanged?.Invoke(value); } }