100 lines
3 KiB
C++
100 lines
3 KiB
C++
#include "mainwindow.h"
|
|
|
|
#include <QMessageBox>
|
|
|
|
#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> powerItem;
|
|
for(std::shared_ptr<Item> item : *globalItems.getItems())
|
|
{
|
|
powerItem = std::dynamic_pointer_cast<PowerItem>(item);
|
|
if(powerItem)
|
|
break;
|
|
}
|
|
if(powerItem)
|
|
{
|
|
ItemSettingsDialog diag(std::shared_ptr<Item>(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);
|
|
}
|