void MainWindow::setTemperatureSensorDisconnected(quint8 sensorId) { TemperatureIndicator* currentTemperatureIndicator = findTemperatureIndicatorById(sensorId); if (currentTemperatureIndicator) { currentTemperatureIndicator->setSensorError(SensorError::Disconnected); } } // setTemperatureSensorDisconnected()
void MainWindow::setTemperatureIndicator(quint8 sensorId, qreal temperature) { TemperatureIndicator* currentTemperatureIndicator = findTemperatureIndicatorById(sensorId); if (currentTemperatureIndicator) { currentTemperatureIndicator->setTemperatureCurrent(temperature); currentTemperatureIndicator->setSensorError(SensorError::OK); } } // setTemperatureIndicator()
void MainWindow::setScene(QString sceneName) { Scene* scene = _sceneDataModel->getSceneByName(sceneName); if (nullptr == scene) { qDebug() << "Scene not found in setScene(" << sceneName << ")"; return; } for (int sensorIndex = 0; sensorIndex < scene->sensors.count(); sensorIndex ++) { qreal temperatureTarget = scene->sensors.at(sensorIndex).temperatureTarget; quint8 sensorId = scene->sensors.at(sensorIndex).sensorId; TemperatureIndicator* indicator = findTemperatureIndicatorById(sensorId); indicator->setTemperatureTarget(temperatureTarget); sendTemperatureTarget(indicator); } } // setScene()
MainWindow::MainWindow(const ConfigLoader& configLoader, QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow), _programSettings(configLoader.getProgramSettings()) { bool isOk; // Initialize the Scene Data file - this copies a spare copy if the file is missing // in the Standard Folders path try { _sceneDataFile = SceneDataFile::getInstance(_programSettings.datafile.path, _programSettings.datafile.name, this); } catch (SceneDataFileException& exception) { throw exception; } // Load logo image from a resource file ResourceFileManager resourceFileManager(_programSettings.resourcefile.path); QByteArray buffer = resourceFileManager.loadFrom(_programSettings.resourcefile.name, _programSettings.logoImageFileName); if (buffer.isEmpty()) { qDebug() << "Unable to load: " + _programSettings.logoImageFileName + " from resource: " + _programSettings.resourcefile.name + " in path: " + _programSettings.resourcefile.path; } else { _pixmapLogo.loadFromData(buffer); } // Program settings: Load program setting from persistant storage _programSettingsPersistant = new QSettings(this); // UI: Setup UI ui->setupUi(this); setWindowTitle(QString("%1 " + tr("Initializing...")) .arg(_programSettings.application.name)); // UI: Setup indicators display area _scene = new CGraphicsScene(this); ui->graphicsView->setScene(_scene); QString imageFilePath = ASSETS_PATH + _programSettings.backgroundImageFileName; QImage imageBackgroundImage(ASSETS_PATH + _programSettings.backgroundImageFileName); if (imageBackgroundImage.isNull()) { qDebug() << "Background image failed to load: " + imageFilePath; } ui->graphicsView->setBackgroundBrush(QBrush(QColor(50, 50, 50))); QRect sceneRect(0, 0, imageBackgroundImage.width(), imageBackgroundImage.height()); QGraphicsRectItem* sceneRectItemBackground = _scene->addRect(sceneRect); sceneRectItemBackground->setBrush(QBrush(imageBackgroundImage)); // UI: Load indicators _listIndicatorProperties = configLoader.getIndicatorProperties(); for (IndicatorProperties currentIndicatorProperties: _listIndicatorProperties) { TemperatureIndicator* temperatureIndicator = new TemperatureIndicator(currentIndicatorProperties, _programSettings, ui->listWidget_Sensors, _scene); temperatureIndicator->setPosition(currentIndicatorProperties.position); temperatureIndicator->update(); QString key = QString::number(temperatureIndicator->getSensorId()); if (_programSettingsPersistant->contains(key)) { qreal temperature = _programSettingsPersistant->value(key).toDouble(); temperatureIndicator->setTemperatureTarget(temperature); } else { temperatureIndicator->setTemperatureTarget(currentIndicatorProperties.temperatureTarget); _programSettingsPersistant->setValue(key, temperatureIndicator->getTemperatureTarget()); } _temperatureIndicators.push_back(temperatureIndicator); } for (auto indicator: _temperatureIndicators) { isOk = connect(indicator, SIGNAL(doubleClicked(QGraphicsSceneMouseEvent*)), this, SLOT(onTemperatureIndicatorDoubleClicked(QGraphicsSceneMouseEvent*))); Q_ASSERT(isOk); Q_UNUSED(isOk); } _currentTemperatureIndicator = _temperatureIndicators[0]; _currentTemperatureIndicator->setIndicatorSelected(true); updateDialByCurrentTemperatureIndicator(); // UI: Connect QListWidget signal to TemperatureIndicators isOk = connect(ui->listWidget_Sensors, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(onListWidgetItemClicked(QListWidgetItem*))); Q_ASSERT(isOk); Q_UNUSED(isOk); isOk = connect(ui->listWidget_Sensors, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(onListWidgetItemDoubleClicked(QListWidgetItem*))); Q_ASSERT(isOk); Q_UNUSED(isOk); // NOTE: SceneDataModel object has to be created after all _temperatureIndicators // have been loaded from config.xml as SceneDataModel uses getSensors() to // retrieve a list of all sensors. // All available sensors on the remote controller need to be defined in config.xml _sceneDataModel = new SceneDataModel(_sceneDataFile->getSceneDataFilePath(), _sceneDataFile->getSceneDataFileName(), this); this->listWidget_Scenes_Update(); #ifdef USE_NETWORKING // TcpSocket: Setup connectSocket(); #endif }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { // Load program settings from "assets/config.xml" ConfigLoader configLoader(CONFIG_FILE, this); _programSettings = configLoader.getProgramSettings(); // Load program setting from persistant storage QCoreApplication::setOrganizationName(ORGANIZATION_NAME); QCoreApplication::setOrganizationDomain(ORGANIZATION_DOMAIN); QCoreApplication::setApplicationName(APPLICATION_NAME); _programSettingsPersistant = new QSettings(this); // Setup the GUI ui->setupUi(this); connect(ui->action_About, SIGNAL(triggered()), this, SLOT(onActionAboutTriggered())); // Setup the indicators display area _scene = new CGraphicsScene(this); ui->graphicsView->setScene(_scene); QString imageFilePath = ASSETS_PATH + _programSettings.backgroundImageFileName; QImage imageBackgroundImage(ASSETS_PATH + _programSettings.backgroundImageFileName); if (imageBackgroundImage.isNull()) { qDebug() << "Background image failed to load: " + imageFilePath; } ui->graphicsView->setBackgroundBrush(QBrush(QColor(50, 50, 50))); QRect sceneRect(0, 0, imageBackgroundImage.width(), imageBackgroundImage.height()); QGraphicsRectItem* sceneRectItemBackground = _scene->addRect(sceneRect); sceneRectItemBackground->setBrush(QBrush(imageBackgroundImage)); // Load the indicators _listIndicatorProperties = configLoader.getIndicatorProperties(); for (IndicatorProperties currentIndicatorProperties: _listIndicatorProperties) { TemperatureIndicator* temperatureIndicator = new TemperatureIndicator(currentIndicatorProperties, _programSettings, ui->listWidget, _scene); temperatureIndicator->setPosition(currentIndicatorProperties.position); temperatureIndicator->setSensorState(SensorState::Disconnected); temperatureIndicator->update(); QString key = QString::number(temperatureIndicator->getSensorId()); if (_programSettingsPersistant->contains(key)) { qreal temperature = _programSettingsPersistant->value(key).toDouble(); temperatureIndicator->setTemperatureTarget(temperature); } else { temperatureIndicator->setTemperatureTarget(currentIndicatorProperties.temperatureTarget); _programSettingsPersistant->setValue(key, temperatureIndicator->getTemperatureTarget()); } _temperatureIndicators.push_back(temperatureIndicator); } bool isOk; for(auto indicator: _temperatureIndicators) { isOk = connect(indicator, SIGNAL(doubleClicked(QGraphicsSceneMouseEvent*)), this, SLOT(onTemperatureIndicatorDoubleClicked(QGraphicsSceneMouseEvent*))); Q_ASSERT(isOk); Q_UNUSED(isOk); } _currentTemperatureIndicator = _temperatureIndicators[0]; _currentTemperatureIndicator->setIndicatorSelected(true); // Connect QListWidget signal to TemperatureIndicators isOk = connect(ui->listWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(onListWidgetItemClicked(QListWidgetItem*))); Q_ASSERT(isOk); Q_UNUSED(isOk); isOk = connect(ui->listWidget, SIGNAL(itemDoubleClicked(QListWidgetItem*)), this, SLOT(onListWidgetItemDoubleClicked(QListWidgetItem*))); Q_ASSERT(isOk); Q_UNUSED(isOk); // Setup socket connectSocket(); connect(_socket, SIGNAL(readyRead()), this, SLOT(onDataRecieved()) ); connect(_socket, SIGNAL(connected()), this, SLOT(onConnected()) ); connect(_socket, SIGNAL(disconnected()), this, SLOT(onDisconnected()) ); connect(_socket, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onErrorSocket(QAbstractSocket::SocketError))); }