132 lines
3.6 KiB
C++
Executable File
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
|