#include "mainwindow.h" #include #include "ui_mainwindow.h" #include "itemscrollbox.h" #include "itemsettingsdialog.h" #include "itemcreationdialog.h" #include "mainobject.h" #include "programmode.h" #include "items/poweritem.h" MainWindow::MainWindow(MainObject * const mainObject, QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow), colorChooser(this) { ui->setupUi(this); connect(ui->pushButton_broadcast, &QPushButton::clicked, this, &MainWindow::sigSave); connect(ui->pushButton_broadcast, &QPushButton::clicked, this, [this](){QMessageBox::information(this, "Saved", "Settings where saved");}); connect(ui->pushButton_power, SIGNAL(clicked()), this, SLOT(showPowerItemDialog())); connect(ui->pushButton_refesh, &QPushButton::clicked, mainObject, &MainObject::refresh); connect(&globalItems, &ItemStore::itemAdded, ui->relayList, &ItemScrollBox::addItem); connect(&globalItems, &ItemStore::itemDeleted, ui->relayList, &ItemScrollBox::removeItem); connect(&globalItems, &ItemStore::itemUpdated, ui->relayList, &ItemScrollBox::onItemUpdate); for(size_t i = 0; i < globalItems.getItems()->size(); ++i) ui->relayList->addItem(globalItems.getItems()->at(i)); if(programMode != PROGRAM_MODE_PRIMARY) ui->label_serialRecive->setHidden(true); //Sensors ui->sensorListView->setShowHidden(false); ui->sensorListView->sensorsChanged(*globalSensors.getSensors()); connect(&globalSensors, &SensorStore::stateChenged, ui->sensorListView, &SensorListWidget::sensorsChanged); //RGB Leds connect(&colorChooser, &QColorDialog::colorSelected, this, &MainWindow::sigSetRgb); connect(ui->button_quit, SIGNAL(clicked()), this, SLOT(close())); connect(ui->button_color, SIGNAL(clicked()), &colorChooser, SLOT(show())); if(programMode != PROGRAM_MODE_PRIMARY) ui->button_color->hide(); connect(ui->pushButton_addItem, &QPushButton::clicked, this, &MainWindow::showItemCreationDialog); connect(ui->relayList, &ItemScrollBox::deleteRequest, &globalItems, &ItemStore::removeItem); ui->splitter->setStretchFactor(1, 1); } MainWindow::~MainWindow() { delete ui; } void MainWindow::showPowerItemDialog() { std::shared_ptr powerItem; for(std::shared_ptr item : *globalItems.getItems()) { powerItem = std::dynamic_pointer_cast(item); if(powerItem) break; } if(powerItem) { ItemSettingsDialog diag(std::shared_ptr(powerItem), false, this); diag.show(); diag.exec(); } else { QMessageBox::warning(this, "Error", "No power item found, refresh first"); } } void MainWindow::showItemCreationDialog() { ItemCreationDialog diag(this); diag.show(); if(diag.exec()) { ItemAddRequest request; request.type = ITEM_UPDATE_USER; request.changes = ItemFieldChanges(true); request.payload = diag.item; createdItem(request); } } void MainWindow::changeHeaderLableText(QString string) { if(string.size() > 28) { string.remove(28, string.size()-(28)); string.append("..."); } ui->label_serialRecive->setText(string); }