using System;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
using Avalonia.Threading;

namespace PolyTrader.App.Avalonia.Views
{
    /// <summary>
    /// Sicherheitsabfrage vor dem Beenden. Die Beenden-Schaltfläche ist bewusst
    /// <see cref="LockSeconds"/> Sekunden gesperrt (Verhalten aus der WinForms-Oberfläche
    /// übernommen), Abbrechen ist jederzeit möglich. Liefert <c>true</c>, wenn bestätigt wurde.
    /// </summary>
    public partial class ShutdownConfirmWindow : Window
    {
        private const int LockSeconds = 10;

        private readonly DispatcherTimer _timer = new() { Interval = TimeSpan.FromSeconds(1) };
        private int _remaining = LockSeconds;

        public ShutdownConfirmWindow()
        {
            AvaloniaXamlLoader.Load(this);

            var countdown = this.FindControl<TextBlock>("lblCountdown")!;
            var shutdown = this.FindControl<Button>("btnShutdown")!;
            var cancel = this.FindControl<Button>("btnCancel")!;

            shutdown.Click += (_, _) => Close(true);
            cancel.Click += (_, _) => Close(false);

            _timer.Tick += (_, _) =>
            {
                _remaining--;
                if (_remaining > 0)
                {
                    countdown.Text = $"Beenden möglich in {_remaining} s …";
                    shutdown.Content = $"Beenden ({_remaining} s)";
                    return;
                }

                _timer.Stop();
                countdown.Text = "Beenden ist jetzt möglich.";
                shutdown.Content = "Beenden";
                shutdown.IsEnabled = true;
            };
            _timer.Start();

            Closed += (_, _) => _timer.Stop();
        }
    }
}
