Projekt_SS25/Project_Periodensystem.View/LandingPage.axaml.cs

76 lines
2.2 KiB
C#

using Avalonia;
using Avalonia.Controls;
using Avalonia.Interactivity;
using Avalonia.Markup.Xaml;
using Avalonia.VisualTree;
using System;
namespace Project_Periodensystem.View
{
public partial class LandingPage : UserControl
{
private Button? startButton;
private DateTime lastClickTime = DateTime.MinValue;
private const int DEBOUNCE_MS = 500;
public LandingPage()
{
Logger.Log("=== LandingPage wird initialisiert ===");
InitializeComponent();
startButton = this.Find<Button>("StartButton");
if (startButton != null)
{
Logger.Log("StartButton gefunden und wird initialisiert");
startButton.Click += StartButton_Click;
Logger.Log("Click-Handler wurde registriert");
}
else
{
Logger.Log("FEHLER: StartButton nicht gefunden!");
}
}
private void InitializeComponent()
{
AvaloniaXamlLoader.Load(this);
}
private void StartButton_Click(object? sender, RoutedEventArgs e)
{
// Stop event propagation
e.Handled = true;
var now = DateTime.Now;
// Prüfe ob genug Zeit seit dem letzten Klick vergangen ist
if ((now - lastClickTime).TotalMilliseconds < DEBOUNCE_MS)
{
Logger.Log("Click ignoriert (Debounce)");
return;
}
lastClickTime = now;
Logger.Log("StartButton_Click wurde aufgerufen");
try
{
var mainWindow = this.FindAncestorOfType<MainWindow>();
if (mainWindow != null)
{
Logger.Log("MainWindow gefunden, starte Navigation...");
mainWindow.ShowPeriodicTable();
Logger.Log("Navigation ausgeführt");
}
else
{
Logger.Log("FEHLER: MainWindow nicht gefunden!");
}
}
catch (Exception ex)
{
Logger.Log($"FEHLER im Click-Handler: {ex.Message}");
}
}
}
}