#include "universewindow.h" #include "ui_universewindow.h" #include "universemodel.h" #include "statusindicatorwidget.h" #include #include #include /** * @brief UniverseWindow::UniverseWindow * @param parent */ UniverseWindow::UniverseWindow(QWidget *parent, QSacnUniverse *universe) : QMainWindow(parent) , ui(new Ui::UniverseWindow()) , mUniverse(universe) { ui->setupUi(this); auto model = new UniverseModel(this, universe); ui->tableView->setModel(model); // update the status bar whenever the universe refreshes connect(model, &UniverseModel::dataChanged, this, [this](){update_status_();}); // add data format combobox to toolbar auto formatLabel = new QLabel(ui->toolBar); formatLabel->setText(tr("Data Format") + ": "); ui->toolBar->addWidget(formatLabel); auto dataModes = new QComboBox(ui->toolBar); const QMetaEnum types = QMetaEnum::fromType(); for (int i=0; i < types.keyCount(); ++i) dataModes->addItem(types.key(i)); connect(dataModes, &QComboBox::currentTextChanged, model, &UniverseModel::setDataMode); ui->toolBar->addWidget(dataModes); ui->toolBar->addSeparator(); // add priority picker to the toolbar auto priorityLabel = new QLabel(ui->toolBar); priorityLabel->setText(tr("Priority") + ": "); ui->toolBar->addWidget(priorityLabel); prioritySpinBox = new QSpinBox(ui->toolBar); prioritySpinBox->setMinimum(0); prioritySpinBox->setValue(100); prioritySpinBox->setMaximum(200); prioritySpinBox->setEnabled(false); ui->toolBar->addWidget(prioritySpinBox); // status indicator auto indicator = new StatusIndicatorWidget(this, mUniverse); ui->statusbar->addPermanentWidget(indicator); update_status_(); if (universe->isEditable()) { prioritySpinBox->setValue(universe->priority()); prioritySpinBox->setEnabled(true); connect(prioritySpinBox, &QSpinBox::valueChanged, universe, &QSacnUniverse::setPriority); } } /** * @brief UniverseWindow::~UniverseWindow */ UniverseWindow::~UniverseWindow() { delete ui; } /** * @brief UniverseWindow::updateStatusBar */ void UniverseWindow::update_status_() { // window title this->setWindowTitle(QString("%1 '%2' : "+tr("Universe")+" %3").arg( mUniverse->isEditable() ? tr("Editing") : tr("Viewing"), mUniverse->sourceName(), QString::number(mUniverse->number()))); if (!mUniverse->isEditable()) { // status bar ui->statusbar->clearMessage(); QString message = QString("%1 " + tr("Hz")).arg( QString::number(mUniverse->rxRate())); ui->statusbar->showMessage(message, 2500); // priority spinbox prioritySpinBox->setValue(mUniverse->priority()); } }