Files
qt5-legatus-legacy/Lts/Plugins/EffectShowClient/Gui/esc_safety_confirmation_widget.cpp
T
2026-08-13 18:33:10 +02:00

132 lines
3.6 KiB
C++
Executable File

/**
* @RDE_HEADER@
* EffectShowClient - Safety Confirmation Widget
* $Id$
* $HeadURL$
* $Author$
* Created by Patric Karwat, NLE, 2020-04-07
*/
#include "esc_safety_confirmation_widget.h"
#include "ui_esc_safety_confirmation_widget.h"
#include "esc_smoke_state.h"
#include <QTimer>
namespace EffectShowClient
{
SafetyConfirmationWidget::SafetyConfirmationWidget(QWidget *parent) :
QWidget(parent)
, m_currentState(SafetyConfirmation_e::SafetyNotConfirmed)
, m_requestHelper(new LtsUtils::RequestHelper(this))
, m_ui(new Ui::SafetyConfirmationWidget)
{
m_ui->setupUi(this);
setMinimumHeight(sizeHint().height());
}
SafetyConfirmationWidget::~SafetyConfirmationWidget()
{
delete m_ui;
}
bool SafetyConfirmationWidget::init(const std::shared_ptr<Interface::Ftc> &ftc)
{
if (!ftc)
return false;
m_ftc = ftc;
connect(m_ui->pbRevoke, &QPushButton::clicked, this, &SafetyConfirmationWidget::onRevokeClicked);
return true;
}
bool SafetyConfirmationWidget::onOperatingConditionEntityChanged(const OperatingConditionEntity &data)
{
QStringList warningText;
if (data.loadingBoardWall())
warningText.append(tr("Loading Board Wall open"));
if (data.temperatureWarning())
warningText.append(tr("Temperature Warning"));
if (data.errorEquipment())
warningText.append(tr("Error Equipment"));
if (data.errorFireUnit())
warningText.append(tr("Fire Unit Error"));
if (data.errorGeneral())
warningText.append(tr("General Error"));
if (data.errorPanel())
warningText.append(tr("Panel Error"));
if (data.errorSmoke())
warningText.append(tr("Smoke Unit Error"));
if (data.emergencyStop())
warningText.append(tr("Emergency Stop!"));
if (warningText.size() > 0)
{
m_errorString = tr("Warning: %1").arg(warningText.join(QLatin1Char(',')));
setMessageInternal();
}
else
{
m_errorString = QString();
setMessageInternal();
}
return warningText.size() == 0;
}
void SafetyConfirmationWidget::setMessage(const QString &message)
{
m_messageString = message;
setMessageInternal();
}
void SafetyConfirmationWidget::setMessageInternal()
{
QString text = m_messageString;
if (!m_errorString.isEmpty() && !m_messageString.isEmpty())
text.append(QStringLiteral(", %1").arg(m_errorString));
else
text.append(m_errorString);
m_ui->lblWarningText->setText(text);
}
void SafetyConfirmationWidget::setNewSafetyConfirmationDisplay(const SafetyConfirmation_e &safetyConfirmation)
{
if (m_currentState == safetyConfirmation)
return;
m_currentState = safetyConfirmation;
onSafetyConfirmationDisplay();
}
bool SafetyConfirmationWidget::onRevokeClicked()
{
return m_requestHelper->startSingleRequest([this]()
{
EffectShowClient::SendSafetyRevokeRequest request;
request.revoke(true);
return m_ftc->sendSafetyRevokeRequest(request, this);
});
}
void SafetyConfirmationWidget::onSafetyConfirmationDisplay()
{
switch (m_currentState.underlying())
{
case EffectShowClient::SafetyConfirmation_e_def::SafetyConfirmed:
m_ui->ltsLedWidget->setColor(QColor(0, 255, 0));
m_ui->ltsLedWidget->setStatus(true);
break;
case EffectShowClient::SafetyConfirmation_e_def::SafetyExpiring:
m_ui->ltsLedWidget->setColor(QColor(0, 255, 0));
m_ui->ltsLedWidget->setStatus(!m_ui->ltsLedWidget->status());
QTimer::singleShot(800, this, &SafetyConfirmationWidget::onSafetyConfirmationDisplay);
break;
case EffectShowClient::SafetyConfirmation_e_def::SafetyNotConfirmed:
m_ui->ltsLedWidget->setColor(QColor(255, 0, 0));
m_ui->ltsLedWidget->setStatus(true);
break;
}
}
} //namespace EffectShowClient