/** *@RDE_HEADER@ * Ui for displaying Relay Infos * $Id$ * $HeadURL$ * $Author$ * Created by Malte Diers, SLTE, 2021-04-27 */ #include "relay_info.h" #include "ui_relay_info.h" #include #include namespace Buildings { RelayInfoWidget::RelayInfoWidget(int id, QWidget *parent) : QWidget(parent) , m_id(id) , m_state(false) , m_ui(new Ui::RelayInfoWidget) , m_logger(getLogger("RelayInfoWidget")) { DEBUG_LOG(m_logger) << "RelayInfoWidget"; m_ui->setupUi(this); // setPulseVisible(false); m_ui->ledStatus->setAspectHint(LtsWidgets::LtsLedWidget::AspectHint::WidthIsHeight); m_ui->ledStatus->setContentsMargins(5,5,5,5); setOfflineColor(); connect(m_ui->tbOn, &QToolButton::clicked, this, &RelayInfoWidget::onButtonClicked); connect(m_ui->tbOff, &QToolButton::clicked, this, &RelayInfoWidget::onButtonClicked); connect(m_ui->tbAuto, &QToolButton::clicked, this, &RelayInfoWidget::onButtonClicked); } RelayInfoWidget::~RelayInfoWidget() { delete m_ui; } QString RelayInfoWidget::name() const { return m_ui->lblName->text(); } bool RelayInfoWidget::state() const { return m_state; } int RelayInfoWidget::id() const { return m_id; } void RelayInfoWidget::setName(const QString &name) { m_ui->lblName->setText(name); } void RelayInfoWidget::setState(bool state, qint64 stateTime, qint64 offlineTime) { if ( stateTime > offlineTime) { m_state = state; m_ui->ledStatus->setOnColor(state ? Qt::green : Qt::red); m_ui->ledStatus->setToolTip(QStringLiteral("%1 - %2").arg(tr("Values from")).arg(DTG::toStringMSec(stateTime))); m_ui->ledStatus->setStatus(true); } else { setOfflineColor(); m_ui->ledStatus->setToolTip(QStringLiteral("%1 - %2,\nEGCU offline since: %3").arg(tr("Values from")).arg(DTG::toStringMSec(stateTime)).arg(DTG::toStringMSec(offlineTime))); m_ui->ledStatus->setStatus(true); } } void RelayInfoWidget::setEffectOverride(InfrastructureManagement::EffectOverride override) { switch(override.underlying()) { case InfrastructureManagement::EffectOverride_def::Automatic: m_ui->tbAuto->setChecked(true); break; case InfrastructureManagement::EffectOverride_def::PermanentOn: m_ui->tbOn->setChecked(true); break; case InfrastructureManagement::EffectOverride_def::PermanentOff: m_ui->tbOff->setChecked(true); break; } } void RelayInfoWidget::setEffectOverrideEnabled(InfrastructureManagement::EffectOverride override, bool enable) { switch(override.underlying()) { case InfrastructureManagement::EffectOverride_def::Automatic: m_ui->tbAuto->setEnabled(enable); break; case InfrastructureManagement::EffectOverride_def::PermanentOn: m_ui->tbOn->setEnabled(enable); break; case InfrastructureManagement::EffectOverride_def::PermanentOff: m_ui->tbOff->setEnabled(enable); break; } } void RelayInfoWidget::setLedVisible(bool enable) { m_ui->ledStatus->setVisible(enable); } void RelayInfoWidget::onButtonClicked() { QAbstractButton *ab = qobject_cast(sender()); if (!ab) return; InfrastructureManagement::EffectOverride eo = InfrastructureManagement::EffectOverride_def::Automatic; if (ab == m_ui->tbOff) eo = InfrastructureManagement::EffectOverride_def::PermanentOff; else if (ab == m_ui->tbOn) eo = InfrastructureManagement::EffectOverride_def::PermanentOn; emit effectOverrideChanged(m_id, eo); } void RelayInfoWidget::setOfflineColor() { QColor offlineColor; offlineColor.setRgb(120,92,37); m_ui->ledStatus->setOnColor(offlineColor); } } // namespace