106 lines
3.1 KiB
C#
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");
|
|
}
|
|
}
|
|
}
|
|
}
|