using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Platform.Storage; using LehrerApp.Desktop.ViewModels.Settings; namespace LehrerApp.Desktop.Views.Settings; public partial class SettingsView : UserControl { public SettingsView() => InitializeComponent(); private async void OnImportClick(object? sender, RoutedEventArgs e) { var topLevel = TopLevel.GetTopLevel(this); if (topLevel is null || DataContext is not SettingsViewModel vm) return; var files = await topLevel.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions { Title = "Kompetenzkatalog importieren", AllowMultiple = false, FileTypeFilter = [new FilePickerFileType("JSON-Dateien") { Patterns = ["*.json"] }], }); if (files.Count == 0) return; var json = await File.ReadAllTextAsync(files[0].Path.LocalPath); vm.ImportCatalog(json); } private async void OnExportClick(object? sender, RoutedEventArgs e) { var topLevel = TopLevel.GetTopLevel(this); if (topLevel is null || DataContext is not SettingsViewModel vm) return; var file = await topLevel.StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions { Title = "Kompetenzkatalog exportieren", SuggestedFileName = $"Kompetenzkatalog_{vm.CatalogSubject?.Name}_{vm.CatalogGradeLevel}.json", FileTypeChoices = [new FilePickerFileType("JSON-Dateien") { Patterns = ["*.json"] }], }); if (file is null) return; var json = vm.ExportCatalog(); await File.WriteAllTextAsync(file.Path.LocalPath, json); } }