using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Project_Periodensystem.Model;
using Project_Periodensystem.Persistence;
namespace Project_Periodensystem.View
{
///
/// Code-Behind für die Landing Page
///
public partial class LandingPage : UserControl
{
///
/// Konstruktor
///
public LandingPage()
{
InitializeComponent();
}
///
/// Event-Handler für Periodensystem-Button
///
private void PeriodicTableButton_Click(object? sender, RoutedEventArgs e)
{
try
{
var mainWindow = TopLevel.GetTopLevel(this) as Window;
if (mainWindow != null)
{
var periodicTablePage = new PeriodicTablePage();
mainWindow.Content = periodicTablePage;
Logger.Log("Navigation zum Periodensystem");
}
}
catch (Exception ex)
{
Logger.Log($"Fehler bei Navigation zum Periodensystem: {ex.Message}");
}
}
///
/// Event-Handler für About-Button
///
private void AboutButton_Click(object? sender, RoutedEventArgs e)
{
try
{
var mainWindow = TopLevel.GetTopLevel(this) as Window;
if (mainWindow != null)
{
var aboutPage = new AboutPage();
mainWindow.Content = aboutPage;
Logger.Log("Navigation zur About-Seite");
}
}
catch (Exception ex)
{
Logger.Log($"Fehler bei Navigation zu About: {ex.Message}");
}
}
///
/// Event-Handler für Theme-Button (MIT SETTINGS-SPEICHERUNG)
///
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
{
try
{
Logger.Log("Theme-Button geklickt");
var app = Application.Current;
if (app != null)
{
var currentTheme = app.ActualThemeVariant;
Logger.Log($"Aktuelles Theme: {currentTheme}");
var newTheme = currentTheme == Avalonia.Styling.ThemeVariant.Dark
? Avalonia.Styling.ThemeVariant.Light
: Avalonia.Styling.ThemeVariant.Dark;
app.RequestedThemeVariant = newTheme;
Logger.Log($"Theme gewechselt zu: {newTheme}");
// NEUE FUNKTION: Theme-Einstellung speichern
var settings = DataManager.LoadSettings();
settings.LastTheme = newTheme.ToString();
settings.LastUsed = DateTime.Now;
DataManager.SaveSettings(settings);
Logger.Log("Theme-Einstellung gespeichert");
}
else
{
Logger.Log("Application.Current ist null!");
}
}
catch (Exception ex)
{
Logger.Log($"EXCEPTION in ThemeButton_Click: {ex.Message}");
}
}
}
}