Files
LehrerApp/LehrerApp.Desktop/Views/Settings/SettingsView.axaml.cs
T

46 lines
1.7 KiB
C#

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);
}
}