Projekt_SS25/Project_Periodensystem.View/LandingPage.axaml.cs
2025-06-26 10:29:12 +02:00

106 lines
3.1 KiB
C#

using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Project_Periodensystem.Model;
using Project_Periodensystem.Persistence;
using Project_Periodensystem.Controller;
namespace Project_Periodensystem.View
{
/// <summary>
/// Code-Behind für die Landing Page - SAUBERES MVC
/// Keine direkte Navigation mehr, nur Controller-Aufrufe
/// </summary>
public partial class LandingPage : UserControl
{
private PeriodensystemController? _controller;
/// <summary>
/// Konstruktor
/// </summary>
public LandingPage()
{
InitializeComponent();
}
/// <summary>
/// Controller setzen (Dependency Injection für MVC)
/// </summary>
public void SetController(PeriodensystemController controller)
{
_controller = controller ?? throw new ArgumentNullException(nameof(controller));
Logger.Log("LandingPage: Controller gesetzt (MVC-Pattern)");
}
/// <summary>
/// Event-Handler für Periodensystem-Button - SAUBERES MVC
/// </summary>
private void PeriodicTableButton_Click(object? sender, RoutedEventArgs e)
{
try
{
if (_controller != null)
{
// Controller übernimmt Navigation (kein direkter View-Zugriff!)
_controller.HandleNavigateToPeriodicTable();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (Exception ex)
{
Logger.LogException(ex, "PeriodicTableButton_Click");
}
}
/// <summary>
/// Event-Handler für About-Button - SAUBERES MVC
/// </summary>
private void AboutButton_Click(object? sender, RoutedEventArgs e)
{
try
{
if (_controller != null)
{
// Controller übernimmt Navigation
_controller.HandleNavigateToAbout();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann nicht navigieren");
}
}
catch (Exception ex)
{
Logger.LogException(ex, "AboutButton_Click");
}
}
/// <summary>
/// Event-Handler für Theme-Button - SAUBERES MVC
/// </summary>
private void ThemeButton_Click(object? sender, RoutedEventArgs e)
{
try
{
if (_controller != null)
{
// Controller übernimmt Theme-Logik
_controller.HandleToggleTheme();
}
else
{
Logger.LogError("Controller nicht gesetzt - kann Theme nicht wechseln");
}
}
catch (Exception ex)
{
Logger.LogException(ex, "ThemeButton_Click");
}
}
}
}