46 lines
1.7 KiB
C#
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);
|
|
}
|
|
}
|