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>
42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
using System.Text.Json;
|
|
|
|
namespace LehrerApp.Desktop.Services;
|
|
|
|
public sealed class WindowSettings
|
|
{
|
|
public double Width { get; set; } = 1280;
|
|
public double Height { get; set; } = 800;
|
|
public bool IsMaximized { get; set; }
|
|
}
|
|
|
|
/// <summary>
|
|
/// Merkt sich Fenstergröße und Maximiert-Status über Sitzungen hinweg (14.6). Bewusst OHNE
|
|
/// Fensterposition: ein Laptop, der mal mit, mal ohne externen Monitor läuft, könnte sonst dazu
|
|
/// führen, dass das Fenster bei der nächsten Sitzung außerhalb jedes sichtbaren Bildschirms
|
|
/// landet — die Größe allein ist der Teil, der täglich beim Korrigieren am Abend stört.
|
|
/// </summary>
|
|
public sealed class WindowSettingsService
|
|
{
|
|
private readonly string _configPath;
|
|
|
|
public WindowSettingsService(string appDataPath) =>
|
|
_configPath = Path.Combine(appDataPath, "windowsettings.json");
|
|
|
|
public WindowSettings Load()
|
|
{
|
|
try
|
|
{
|
|
if (File.Exists(_configPath))
|
|
{
|
|
var loaded = JsonSerializer.Deserialize<WindowSettings>(File.ReadAllText(_configPath));
|
|
if (loaded is { Width: >= 200, Height: >= 150 }) return loaded;
|
|
}
|
|
}
|
|
catch { /* beschädigte Konfiguration -> Standardgröße */ }
|
|
return new WindowSettings();
|
|
}
|
|
|
|
public void Save(WindowSettings settings) =>
|
|
File.WriteAllText(_configPath, JsonSerializer.Serialize(settings));
|
|
}
|