using System;
using System.Windows.Forms;
namespace PolyTraderSharp.Ui
{
///
/// Sicherheitsabfrage vor dem Herunterfahren. Die Beenden-Schaltfläche ist erst nach Ablauf eines
/// kurzen Timers klickbar (verhindert versehentliches Beenden, z.B. während auf eine API-Antwort
/// gewartet wird); „Abbrechen" ist jederzeit möglich. Bei Bestätigung liefert der Dialog
/// – das eigentliche geordnete Herunterfahren übernimmt der Aufrufer.
///
public partial class ShutdownConfirmDialog : Form
{
private int _remaining;
/// Sekunden, bis „Beenden" freigeschaltet wird (Standard 10).
public ShutdownConfirmDialog(int delaySeconds = 10)
{
InitializeComponent();
_remaining = Math.Max(0, delaySeconds);
UpdateCountdownUi();
}
protected override void OnShown(EventArgs e)
{
base.OnShown(e);
if (_remaining <= 0)
{
EnableConfirm();
return;
}
countdownTimer.Start();
}
private void CountdownTimer_Tick(object? sender, EventArgs e)
{
_remaining--;
if (_remaining <= 0)
{
countdownTimer.Stop();
EnableConfirm();
return;
}
UpdateCountdownUi();
}
private void UpdateCountdownUi()
{
lblCountdown.Text = $"Beenden möglich in {_remaining} s …";
btnConfirm.Text = $"Beenden ({_remaining} s)";
}
private void EnableConfirm()
{
btnConfirm.Enabled = true;
btnConfirm.Text = "Jetzt beenden";
lblCountdown.Text = "PolyTrader kann jetzt beendet werden.";
lblCountdown.ForeColor = System.Drawing.Color.ForestGreen;
btnConfirm.Focus();
}
}
}