feat: Dunkelmodus, Fenstergröße merken, Papierkorb für Löschvorgänge (12.4, 14.3, 14.6)
Dunkelmodus über neuen Einstellungen-Tab "Darstellung" (Systemvorgabe/Hell/Dunkel), Fenstergröße/Maximiert-Status wird über Sitzungen hinweg gemerkt (bewusst ohne Fensterposition), und ein generischer Snapshot-basierter Papierkorb (30 Tage) für Sitzpläne, Noten, Notenschlüssel-Vorlagen, Aufgaben und Zeiteinträge. Details und bewusste Scope-Entscheidungen (Spaltenbreiten zurückgestellt, Farb-Audit für Dunkelmodus offen, welche Entitäten der Papierkorb abdeckt) in TODO.md. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using LehrerApp.Desktop.Services;
|
||||
using LehrerApp.Desktop.ViewModels;
|
||||
using LehrerApp.Sync;
|
||||
|
||||
@@ -26,6 +27,32 @@ public partial class MainWindow : Window
|
||||
Closing += OnClosing;
|
||||
}
|
||||
|
||||
/// <summary>Wendet die zuletzt gespeicherte Fenstergröße an und merkt sich die aktuelle beim
|
||||
/// Schließen (14.6). Eigenständig von <see cref="EnableFinalSync"/> verdrahtet (mehrere
|
||||
/// Closing-Handler sind unproblematisch) und immer aktiv, auch ohne konfigurierten
|
||||
/// Sync-Server.</summary>
|
||||
public void EnableWindowSizePersistence(WindowSettingsService settings)
|
||||
{
|
||||
var saved = settings.Load();
|
||||
Width = saved.Width;
|
||||
Height = saved.Height;
|
||||
if (saved.IsMaximized) WindowState = WindowState.Maximized;
|
||||
|
||||
Closing += (_, _) =>
|
||||
{
|
||||
var current = settings.Load();
|
||||
settings.Save(new WindowSettings
|
||||
{
|
||||
IsMaximized = WindowState == WindowState.Maximized,
|
||||
// Im maximierten Zustand spiegeln Width/Height die Bildschirmgröße wider, nicht
|
||||
// die zuletzt genutzte Normalgröße - dann den vorherigen Wert beibehalten statt
|
||||
// ihn zu überschreiben.
|
||||
Width = WindowState == WindowState.Normal ? Width : current.Width,
|
||||
Height = WindowState == WindowState.Normal ? Height : current.Height,
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
private async void OnClosing(object? sender, WindowClosingEventArgs e)
|
||||
{
|
||||
if (_closeAfterFinalSync || _finalSyncStarted || _syncEngine is null)
|
||||
|
||||
Reference in New Issue
Block a user