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 { /// /// Code-Behind für die Landing Page - SAUBERES MVC /// Keine direkte Navigation mehr, nur Controller-Aufrufe /// public partial class LandingPage : UserControl { private PeriodensystemController? _controller; /// /// Konstruktor /// public LandingPage() { InitializeComponent(); } /// /// Controller setzen (Dependency Injection für MVC) /// public void SetController(PeriodensystemController controller) { _controller = controller ?? throw new ArgumentNullException(nameof(controller)); Logger.Log("LandingPage: Controller gesetzt (MVC-Pattern)"); } /// /// Event-Handler für Periodensystem-Button - SAUBERES MVC /// 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"); } } /// /// Event-Handler für About-Button - SAUBERES MVC /// 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"); } } /// /// Event-Handler für Theme-Button - SAUBERES MVC /// 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"); } } } }