/** * @RDE_HEADER@ * AreaEffectSimulation - Effector * $Id$ * $HeadURL$ * $Author$ * Created by Hanna E. Rathje, ESZS, 2026-02-18 */ #include "aes_effector.h" #include "ui_aes_effector.h" #include namespace AreaEffectSimulation { AesEffector::AesEffector(QWidget *parent) : QWidget(parent) , m_ui(new Ui::AesEffector) { m_ui->setupUi(this); connect(m_ui->pbTriggerNextState, &QPushButton::clicked, this, &AesEffector::onPbNextStateClicked); } AesEffector::~AesEffector() { delete m_ui; } bool AesEffector::init(int effectorId, const QString &verEin, const QString &name, AreaEffectSimulation::AesEffectorState state) { m_effectorId = effectorId; m_ui->lblVerEin->setText(verEin); m_ui->gbEffector->setTitle(verEin); m_ui->lblName->setText(name); setState(state); return true; } void AesEffector::setStateButtonVisible( bool visible) { m_ui->pbTriggerNextState->setVisible(visible); } AreaEffectSimulation::AesEffectorState AesEffector::getState() const { return m_state; } void AesEffector::setState(const AreaEffectSimulation::AesEffectorState &newState) { m_state = newState; switch(newState.underlying()) { case AreaEffectSimulation::AesEffectorState::EsNotReadyToFire: m_ui->lblState->setText(tr("Not ready to fire")); m_ui->pbTriggerNextState->setText(tr("Ready to Fire")); break; case AreaEffectSimulation::AesEffectorState::EsReadyToFire: m_ui->lblState->setText(tr("Ready to fire")); m_ui->pbTriggerNextState->setText(tr("Fire")); break; case AreaEffectSimulation::AesEffectorState::EsReceivedOrder: m_ui->lblState->setText(tr("Fire command received")); m_ui->pbTriggerNextState->setText(tr("Fire")); break; case AreaEffectSimulation::AesEffectorState::EsReportedFired: m_ui->lblState->setText(tr("Fired reported")); m_ui->pbTriggerNextState->setText(tr("Report Ready to Fire")); break; case AreaEffectSimulation::AesEffectorState::EsFired: m_ui->lblState->setText(tr("Fired")); m_ui->pbTriggerNextState->setText(tr("Report Fired")); break; default: // this shouldn't happen... break; } } void AesEffector::onPbNextStateClicked() { switch (m_state.underlying()) { case AreaEffectSimulation::AesEffectorState::EsFired: emit reportFired(); break; case AreaEffectSimulation::AesEffectorState::EsReportedFired: emit reportReadyToFire(); break; case AreaEffectSimulation::AesEffectorState::EsNotReadyToFire: emit reportReadyToFire(); break; case AreaEffectSimulation::AesEffectorState::EsReadyToFire: emit fire(); break; case AreaEffectSimulation::AesEffectorState::EsReceivedOrder: break; emit fire(); default: break; } m_ui->pbTriggerNextState->setDisabled(true); // Re-Enable PB, so we can call it another time, if it does not react... QTimer::singleShot(2000, [this](){m_ui->pbTriggerNextState->setEnabled(true);}); } int AesEffector::effectorId() const { return m_effectorId; } } // namespace AreaEffectSimulation