/** * @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 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 &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