93 lines
2.9 KiB
C++
93 lines
2.9 KiB
C++
#include "mainwindow.h"
|
|
#include "./ui_mainwindow.h"
|
|
|
|
#include "server/z21server.h"
|
|
#include "server/retroaction/rbusinputmodel.h"
|
|
#include "server/accessories/accessorymodel.h"
|
|
#include "server/loco/locodrivemodel.h"
|
|
|
|
#include "widgets/powerstatusled.h"
|
|
#include <QComboBox>
|
|
|
|
|
|
MainWindow::MainWindow(QWidget *parent)
|
|
: QMainWindow(parent)
|
|
, ui(new Ui::MainWindow)
|
|
{
|
|
ui->setupUi(this);
|
|
|
|
//Power State header
|
|
m_powerStatusLed = new PowerStatusLED(this);
|
|
|
|
m_powerCombo = new QComboBox(this);
|
|
m_powerCombo->addItem(Z21::getPowerStateName(Z21::PowerState::Normal),
|
|
int(Z21::PowerState::Normal));
|
|
m_powerCombo->addItem(Z21::getPowerStateName(Z21::PowerState::EmergencyStop),
|
|
int(Z21::PowerState::EmergencyStop));
|
|
m_powerCombo->addItem(Z21::getPowerStateName(Z21::PowerState::TrackVoltageOff),
|
|
int(Z21::PowerState::TrackVoltageOff));
|
|
m_powerCombo->addItem(Z21::getPowerStateName(Z21::PowerState::ShortCircuit),
|
|
int(Z21::PowerState::ShortCircuit));
|
|
m_powerCombo->addItem(Z21::getPowerStateName(Z21::PowerState::ServiceMode),
|
|
int(Z21::PowerState::ServiceMode));
|
|
|
|
QHBoxLayout *powerLay = new QHBoxLayout;
|
|
powerLay->addWidget(m_powerStatusLed);
|
|
powerLay->addWidget(m_powerCombo);
|
|
ui->verticalLayout->insertLayout(0, powerLay);
|
|
|
|
//R-BUS tab
|
|
rbusModel = new RBusInputModel(this);
|
|
ui->rbusTableView->setModel(rbusModel);
|
|
|
|
//Accessory Tab
|
|
accessoryModel = new AccessoryModel(this);
|
|
ui->accessoryTableView->setModel(accessoryModel);
|
|
|
|
//Loco Tab
|
|
locoModel = new LocoDriveModel(this);
|
|
ui->locoTableView->setModel(locoModel);
|
|
}
|
|
|
|
MainWindow::~MainWindow()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void MainWindow::setupConnections(Z21Server *z21)
|
|
{
|
|
m_server = z21;
|
|
|
|
connect(m_server, &Z21Server::powerStateChanged,
|
|
m_powerStatusLed, &PowerStatusLED::setPowerState_slot);
|
|
m_powerStatusLed->setPowerState(m_server->getPower());
|
|
|
|
connect(m_powerCombo, qOverload<int>(&QComboBox::currentIndexChanged),
|
|
this, &MainWindow::onPowerComboIndexChanged);
|
|
connect(m_server, &Z21Server::powerStateChanged,
|
|
this, &MainWindow::onPowerStateChanged);
|
|
onPowerStateChanged(int(m_server->getPower()));
|
|
|
|
connect(m_server, &QObject::destroyed, this, [this](){ m_server = nullptr; });
|
|
|
|
rbusModel->setRetroAction(m_server->getRBUS());
|
|
accessoryModel->setAccessoryMgr(m_server->getAccessoryMgr());
|
|
locoModel->setLocoMgr(m_server->getLocoMgr());
|
|
}
|
|
|
|
void MainWindow::onPowerStateChanged(int state)
|
|
{
|
|
int idx = m_powerCombo->findData(state);
|
|
m_powerCombo->setCurrentIndex(idx);
|
|
}
|
|
|
|
void MainWindow::onPowerComboIndexChanged()
|
|
{
|
|
QVariant val = m_powerCombo->currentData();
|
|
Z21::PowerState state = Z21::PowerState(val.toInt());
|
|
if(!m_server || state == m_server->getPower())
|
|
return;
|
|
|
|
m_server->setPower(state);
|
|
}
|