266 lines
8.8 KiB
C++
Executable File
266 lines
8.8 KiB
C++
Executable File
|
|
#include "nme_battery_info_dialog.h"
|
|
#include "nme_shutdown_dialog.h"
|
|
#include "ui_nme_battery_info_dialog.h"
|
|
#include <NGLLogger/NGLLoggerBootstrap.h>
|
|
#include <LtsSession/lts_session.h>
|
|
#include <LtsSession/lts_session_data.h>
|
|
#include <LtsUtilsSettings/settings.h>
|
|
#include <LtsWidgets/lts_global_wait_dialog.h>
|
|
#include <LtsWidgets/lts_message_dialog.h>
|
|
#include <LtsWidgets/lts_base_layout_widget.h>
|
|
|
|
#include <QCloseEvent>
|
|
#include <QApplication>
|
|
#include <QDesktopWidget>
|
|
#include <QScreen>
|
|
#include <QDebug>
|
|
|
|
namespace NmeaManagement
|
|
{
|
|
/*!
|
|
* \brief NmeBatteryInfoDialog::NmeBatteryInfoDialog
|
|
* \author Niklas Schmidt
|
|
* \param currentBatteryStateForId
|
|
* \param ftc
|
|
* \param dtc
|
|
* \param parent
|
|
* \details Shows detailed battery states for 2 batteries and shows the shutdown Button
|
|
*/
|
|
NmeBatteryInfoDialog::NmeBatteryInfoDialog(QMap<int,
|
|
TrainingAreaBase::BatteryState> currentBatteryStateForId,
|
|
const std::shared_ptr<TrainingAreaBase::Interface::Dtc> &tabDtc,
|
|
const std::shared_ptr<TrainingAreaBase::Interface::Ftc> &tabFtc,
|
|
QWidget *parent)
|
|
: LtsWidgets::LtsDialog(parent, LtsWidgets::ButtonCombination::CloseOnly)
|
|
, m_tabDtc(tabDtc)
|
|
, m_tabFtc(tabFtc)
|
|
, m_currentBatteryStateForId(currentBatteryStateForId)
|
|
, m_ui(new Ui::NmeBatteryInfoDialog)
|
|
{
|
|
|
|
m_oudatedFirstBatteryTimer = new QTimer(this);
|
|
m_oudatedSecondBatteryTimer = new QTimer(this);
|
|
connect(m_oudatedFirstBatteryTimer, &QTimer::timeout,this, &NmeBatteryInfoDialog::onOutdatedFirstBatteryTimerTimeout );
|
|
connect(m_oudatedSecondBatteryTimer, &QTimer::timeout,this, &NmeBatteryInfoDialog::onOutdatedSecondBatteryTimerTimeout );
|
|
|
|
m_ui->setupUi(this);
|
|
|
|
connect(m_tabDtc.get(), &TrainingAreaBase::Interface::Dtc::batteryInfoChanged, this, &NmeBatteryInfoDialog::fillStates);
|
|
connect(m_tabDtc.get(), &TrainingAreaBase::Interface::Dtc::batteryAlarmChanged, this, &NmeBatteryInfoDialog::fillWarnings);
|
|
|
|
// Create Yes-Button for Shutdown
|
|
m_buttonBox->connectButton(LtsWidgets::DialogButton::Yes, this, &NmeBatteryInfoDialog::onShutdownClicked);
|
|
m_buttonBox->setButtonEnabled(LtsWidgets::DialogButton::Yes, true);
|
|
m_buttonBox->setText(LtsWidgets::DialogButton::Yes, tr("Shutdown Radio Master"));
|
|
|
|
//FIXME: Uncomment if needed
|
|
m_ui->lblBat1CurrentCap->hide();
|
|
m_ui->lblBat1Current->hide();
|
|
m_ui->lblBat1FreqCap->hide();
|
|
m_ui->lblBat1Freq->hide();
|
|
m_ui->lblBat1TempCap->hide();
|
|
m_ui->lblBat1Temp->hide();
|
|
m_ui->lblBat2CurrentCap->hide();
|
|
m_ui->lblBat2Current->hide();
|
|
m_ui->lblBat2FreqCap->hide();
|
|
m_ui->lblBat2Freq->hide();
|
|
m_ui->lblBat2TempCap->hide();
|
|
m_ui->lblBat2Temp->hide();
|
|
|
|
updateDialog();
|
|
}
|
|
|
|
|
|
NmeBatteryInfoDialog::~NmeBatteryInfoDialog()
|
|
{
|
|
delete m_ui;
|
|
}
|
|
|
|
/*!
|
|
* \brief NmeBatteryInfoDialog::resetDialog
|
|
* \param batteryOne
|
|
* \param batteryTwo
|
|
* \details Resets Dialog to Unknown state
|
|
*/
|
|
void NmeBatteryInfoDialog::resetDialog(bool batteryOne, bool batteryTwo)
|
|
{
|
|
if(batteryOne)
|
|
{
|
|
m_ui->lblBat1Level->setStyleSheet(QStringLiteral(""));
|
|
m_ui->lblBat1LevelCap->setStyleSheet(QStringLiteral(""));
|
|
m_ui->lblCaptionBatteryOne->setText(tr("Battery 1"));
|
|
m_ui->lblBat1Current->setText(tr("Unknown"));
|
|
m_ui->lblBat1Voltage->setText(tr("Unknown"));
|
|
m_ui->lblBat1Freq->setText(tr("Unknown"));
|
|
m_ui->lblBat1Generic->setText(tr("Unknown"));
|
|
m_ui->lblBat1Level->setText(tr("Unknown"));
|
|
m_ui->lblBat1Temp->setText(tr("Unknown"));
|
|
m_ui->lblBat1Warn->setText(tr("No Warnings"));
|
|
}
|
|
if(batteryTwo)
|
|
{
|
|
m_ui->lblBat2Level->setStyleSheet(QStringLiteral(""));
|
|
m_ui->lblBat2LevelCap->setStyleSheet(QStringLiteral(""));
|
|
m_ui->lblCaptionBatteryTwo->setText(tr("Battery 2"));
|
|
m_ui->lblBat2Current->setText(tr("Unknown"));
|
|
m_ui->lblBat2Voltage->setText(tr("Unknown"));
|
|
m_ui->lblBat2Freq->setText(tr("Unknown"));
|
|
m_ui->lblBat2Generic->setText(tr("Unknown"));
|
|
m_ui->lblBat2Level->setText(tr("Unknown"));
|
|
m_ui->lblBat2Temp->setText(tr("Unknown"));
|
|
m_ui->lblBat2Warn->setText(tr("No Warnings"));
|
|
}
|
|
}
|
|
|
|
|
|
void NmeBatteryInfoDialog::onShutdownClicked()
|
|
{
|
|
NmeShutdownDialog *shutdownDialog = new NmeShutdownDialog(m_tabFtc);
|
|
shutdownDialog->show();
|
|
}
|
|
|
|
/*!
|
|
* \brief NmeBatteryInfoDialog::updateDialog
|
|
* \details
|
|
* Set all values in dialog
|
|
* If battery state is empty -> colorize battery state red
|
|
*/
|
|
void NmeBatteryInfoDialog::updateDialog()
|
|
{
|
|
resetDialog(true, true);
|
|
|
|
|
|
|
|
// if(m_currentBatteryWarnForId.contains(0))
|
|
// m_ui->lblBat1Warn->setText(QString::fromStdString(m_currentBatteryWarnForId.value(0).description()));
|
|
|
|
// if(m_currentBatteryWarnForId.contains(1))
|
|
// m_ui->lblBat2Warn->setText(QString::fromStdString(m_currentBatteryWarnForId.value(1).description()));
|
|
|
|
|
|
if(m_currentBatteryStateForId.isEmpty())
|
|
return;
|
|
if(m_currentBatteryStateForId.values().length() > 2)
|
|
return;
|
|
|
|
if(m_currentBatteryStateForId.contains(0))
|
|
{
|
|
m_ui->lblCaptionBatteryOne->setText(QStringLiteral("Battery 1 (") + QString::fromStdString(m_currentBatteryStateForId.value(0).serialNumber()) + QStringLiteral(")"));
|
|
|
|
m_ui->lblBat1Current->setText(QString::number(m_currentBatteryStateForId.value(0).current()) + QStringLiteral("mA"));
|
|
m_ui->lblBat1Freq->setText(QString::number(m_currentBatteryStateForId.value(0).frequency()));
|
|
m_ui->lblBat1Generic->setText(QString::number(m_currentBatteryStateForId.value(0).generic()));
|
|
m_ui->lblBat1Voltage->setText(QString::number(m_currentBatteryStateForId.value(0).voltage()) + QStringLiteral(" mV"));
|
|
m_ui->lblBat1Level->setText(QString::number(m_currentBatteryStateForId.value(0).batteryPercent()) + QStringLiteral("%"));
|
|
m_ui->lblBat1Temp->setText(QString::number(m_currentBatteryStateForId.value(0).temperature()));
|
|
|
|
if(m_currentBatteryStateForId.value(0).batteryPercent() / 20 == 0)
|
|
{
|
|
m_ui->lblBat1Level->setStyleSheet(QStringLiteral("QLabel { color : red; }"));
|
|
}
|
|
}
|
|
|
|
if(m_currentBatteryStateForId.contains(1))
|
|
{
|
|
m_ui->lblCaptionBatteryTwo->setText(QStringLiteral("Battery 2 (") + QString::fromStdString(m_currentBatteryStateForId.value(1).serialNumber()) + QStringLiteral(")"));
|
|
|
|
m_ui->lblBat2Current->setText(QString::number(m_currentBatteryStateForId.value(1).current()) + QStringLiteral("mA"));
|
|
m_ui->lblBat2Freq->setText(QString::number(m_currentBatteryStateForId.value(1).frequency()));
|
|
m_ui->lblBat2Generic->setText(QString::number(m_currentBatteryStateForId.value(1).generic()));
|
|
m_ui->lblBat2Voltage->setText(QString::number(m_currentBatteryStateForId.value(1).voltage()) + QStringLiteral(" mV"));
|
|
m_ui->lblBat2Level->setText(QString::number(m_currentBatteryStateForId.value(1).batteryPercent()) + QStringLiteral("%"));
|
|
m_ui->lblBat2Temp->setText(QString::number(m_currentBatteryStateForId.value(1).temperature()));
|
|
|
|
if(m_currentBatteryStateForId.value(1).batteryPercent() / 20 == 0)
|
|
{
|
|
m_ui->lblBat2Level->setStyleSheet(QStringLiteral("QLabel { color : red; }"));
|
|
}
|
|
}
|
|
}
|
|
void NmeBatteryInfoDialog::fillWarnings(const TrainingAreaBase::BatteryAlarm &data, DataModification modType)
|
|
{
|
|
if(data.equipmentNumber() != 1)
|
|
return;
|
|
|
|
switch (modType)
|
|
{
|
|
case DataModification::eAdded:
|
|
case DataModification::eModified:
|
|
{
|
|
m_currentBatteryWarnForId.insert(data.batteryPort(),data);
|
|
updateDialog();
|
|
break;
|
|
}
|
|
case DataModification::eRemoved:
|
|
{
|
|
m_currentBatteryWarnForId.remove(data.batteryPort());
|
|
updateDialog();
|
|
}
|
|
}
|
|
}
|
|
|
|
void NmeBatteryInfoDialog::fillStates(const TrainingAreaBase::BatteryInfo &dataArr, DataModification modType)
|
|
{
|
|
if(dataArr.equipmentNumber() != 1)
|
|
return;
|
|
|
|
auto data = dataArr.batteryStates().at(0);
|
|
|
|
switch (modType)
|
|
{
|
|
case DataModification::eAdded:
|
|
case DataModification::eModified:
|
|
{
|
|
m_currentBatteryStateForId.insert(data.batteryPort(),data);
|
|
updateDialog();
|
|
if(data.batteryPort() == 0)
|
|
m_oudatedFirstBatteryTimer->start(30000);
|
|
else if(data.batteryPort() == 1)
|
|
m_oudatedSecondBatteryTimer->start(30000);
|
|
break;
|
|
}
|
|
case DataModification::eRemoved:
|
|
{
|
|
if(!m_currentBatteryStateForId.isEmpty())
|
|
m_currentBatteryStateForId.remove(data.batteryPort());
|
|
updateDialog();
|
|
}
|
|
}
|
|
}
|
|
|
|
void NmeBatteryInfoDialog::onOutdatedFirstBatteryTimerTimeout()
|
|
{
|
|
if(m_currentBatteryStateForId.size() < 2)
|
|
{
|
|
m_currentBatteryStateForId.clear();
|
|
resetDialog(true, true);
|
|
return;
|
|
}
|
|
m_currentBatteryStateForId.remove(0);
|
|
resetDialog(true, false);
|
|
}
|
|
|
|
void NmeBatteryInfoDialog::onOutdatedSecondBatteryTimerTimeout()
|
|
{
|
|
if(m_currentBatteryStateForId.size() < 2)
|
|
{
|
|
m_currentBatteryStateForId.clear();
|
|
resetDialog(true, true);
|
|
return;
|
|
}
|
|
|
|
m_currentBatteryStateForId.remove(1);
|
|
resetDialog(false, true);
|
|
}
|
|
|
|
|
|
void NmeBatteryInfoDialog::retranslate()
|
|
{
|
|
translate(m_ui, QStringLiteral("Radio Master Shutdown"));
|
|
}
|
|
|
|
|
|
} // namespace NmeaManagement
|
|
|