Added nodes monitor detail screen.

Mon, 11 Jul 2022 15:57:06 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Mon, 11 Jul 2022 15:57:06 +0200
changeset 346
792058058c2f
parent 345
e4f1769047db
child 347
4f976d0a4f10

Added nodes monitor detail screen.

CMakeLists.txt file | annotate | diff | comparison | revisions
src/DetailNode.cpp file | annotate | diff | comparison | revisions
src/DetailNode.h file | annotate | diff | comparison | revisions
src/MonNodes.cpp file | annotate | diff | comparison | revisions
src/MonNodes.h file | annotate | diff | comparison | revisions
ui/DetailNode.ui file | annotate | diff | comparison | revisions
--- a/CMakeLists.txt	Sat Jul 09 23:05:25 2022 +0200
+++ b/CMakeLists.txt	Mon Jul 11 15:57:06 2022 +0200
@@ -221,6 +221,7 @@
     ${SRCDIR}/MonFermenters.cpp
     ${SRCDIR}/MonCO2meters.cpp
     ${SRCDIR}/MoniSpindels.cpp
+    ${SRCDIR}/DetailNode.cpp
     ${SRCDIR}/DetailFermenter.cpp
     ${SRCDIR}/DetailCO2meter.cpp
     ${SRCDIR}/DetailiSpindel.cpp
@@ -283,6 +284,7 @@
     ${SRCDIR}/MonFermenters.h
     ${SRCDIR}/MonCO2meters.h
     ${SRCDIR}/MoniSpindels.h
+    ${SRCDIR}/DetailNode.h
     ${SRCDIR}/DetailFermenter.h
     ${SRCDIR}/DetailCO2meter.h
     ${SRCDIR}/DetailiSpindel.h
@@ -325,6 +327,7 @@
     ${UIDIR}/EditProfileFerment.ui
     ${UIDIR}/EditRecipe.ui
     ${UIDIR}/EditProduct.ui
+    ${UIDIR}/DetailNode.ui
     ${UIDIR}/DetailFermenter.ui
     ${UIDIR}/DetailCO2meter.ui
     ${UIDIR}/DetailiSpindel.ui
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/DetailNode.cpp	Mon Jul 11 15:57:06 2022 +0200
@@ -0,0 +1,212 @@
+/**
+ * DetailNode.cpp is part of bmsapp.
+ *
+ * bmsapp is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * bmsapp is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "DetailNode.h"
+#include "ChartCarbonate.h"
+#include "../ui/ui_DetailNode.h"
+#include "global.h"
+#include "MainWindow.h"
+
+
+/*
+ * Results are available via MySQL and websockets. Because we initialize using
+ * MySQL we only use that for the results and up to date status.
+ * Commands are send via websockets only.
+ */
+
+DetailNode::DetailNode(int id, QWidget *parent) : QDialog(parent), ui(new Ui::DetailNode)
+{
+    QSqlQuery query;
+
+    qDebug() << "DetailNode record:" << id;
+    ui->setupUi(this);
+    this->recno = id;
+    setWindowFlags(Qt::Window | Qt::WindowTitleHint | Qt::CustomizeWindowHint);
+    setWindowTitle(tr("BMSapp - Details System"));
+
+    connect(ui->rebootButton, SIGNAL(clicked()), this, SLOT(control_reboot()));
+    connect(ui->rebirthButton, SIGNAL(clicked()), this, SLOT(control_rebirth()));
+    connect(parent, SIGNAL(updateNode(QString)), this, SLOT(refreshNode(QString)));
+    emit refreshTable();
+}
+
+
+void DetailNode::refreshTable()
+{
+    QSqlQuery query;
+
+    qDebug() << "refreshTable node rec:" << this->recno;
+
+    query.prepare("SELECT * FROM mon_nodes WHERE record = :recno");
+    query.bindValue(":recno", this->recno);
+    query.exec();
+    if (query.next()) {
+
+	_node = query.value("node").toString();
+	_group_id = query.value("group_id").toString();
+	_uuid = query.value("uuid").toString();
+
+	ui->uuidEdit->setText(_uuid);
+	ui->systemEdit->setText(_node);
+	ui->typeEdit->setText(_group_id);
+	ui->firstEdit->setText(query.value("firstseen").toDateTime().toString("dd MMM yyyy HH:mm:ss"));
+	ui->lastEdit->setText(query.value("lastseen").toDateTime().toString("dd MMM yyyy HH:mm:ss"));
+
+	if (query.value("online").toInt()) {
+	    ui->statusEdit->setText(tr("Online"));
+	    ui->makerEdit->show();
+	    ui->modelEdit->show();
+	    ui->osEdit->show();
+	    ui->fwEdit->show();
+	    ui->makerLabel->show();
+            ui->modelLabel->show();
+            ui->osLabel->show();
+            ui->fwLabel->show();
+	    ui->intervalLabel->show();
+            ui->intervalEdit->show();
+	    ui->makerEdit->setText(query.value("hardwaremake").toString());
+	    ui->modelEdit->setText(query.value("hardwaremodel").toString());
+	    ui->osEdit->setText(query.value("os").toString()+QString(tr(" version: "))+query.value("os_version").toString());
+	    ui->fwEdit->setText(query.value("firmware").toString());
+	    ui->intervalEdit->setValue(query.value("up_interval").toInt());
+
+	    if (query.value("temperature").toDouble() > 0) {
+		ui->tempLabel->show();
+                ui->tempEdit->show();
+		ui->tempEdit->setValue(query.value("temperature").toDouble());
+	    } else {
+		ui->tempLabel->hide();
+                ui->tempEdit->hide();
+	    }
+	    if (query.value("humidity").toDouble() > 0) {
+		ui->humLabel->show();
+                ui->humEdit->show();
+                ui->humEdit->setValue(query.value("humidity").toDouble());
+	    } else {
+		ui->humLabel->hide();
+            	ui->humEdit->hide();
+	    }
+	    if (query.value("barometer").toDouble() > 0) {
+		ui->baroLabel->show();
+                ui->baroEdit->show();
+                ui->baroEdit->setValue(query.value("barometer").toDouble());
+	    } else {
+		ui->baroLabel->hide();
+            	ui->baroEdit->hide();
+	    }
+
+	    ui->networkLabel->show();
+	    ui->networkEdit->show();
+	    ui->networkEdit->setText(query.value("net_ifname").toString()+" "+query.value("net_address").toString());
+
+	    if (query.value("net_ssid").toString() != "") {
+		ui->ssidLabel->show();
+		ui->ssidEdit->show();
+	    	ui->ssidEdit->setText(query.value("net_ssid").toString());
+		ui->rssiLabel->show();
+		ui->rssiEdit->show();
+	    	if (query.value("net_rssi").toInt() < 0)
+		    ui->rssiEdit->setValue(query.value("net_rssi").toInt());
+	    } else {
+		ui->ssidLabel->hide();
+		ui->ssidEdit->hide();
+		ui->rssiLabel->hide();
+		ui->rssiEdit->hide();
+	    }
+
+	} else {
+	    /* Offline */
+	    ui->statusEdit->setText(tr("Offline"));
+
+	    ui->makerEdit->hide();
+            ui->modelEdit->hide();
+            ui->osEdit->hide();
+            ui->fwEdit->hide();
+            ui->makerLabel->hide();
+            ui->modelLabel->hide();
+            ui->osLabel->hide();
+            ui->fwLabel->hide();
+	    ui->intervalLabel->hide();
+	    ui->intervalEdit->hide();
+
+	    ui->tempLabel->hide();
+	    ui->tempEdit->hide();
+	    ui->humLabel->hide();
+	    ui->humEdit->hide();
+	    ui->baroLabel->hide();
+	    ui->baroEdit->hide();
+
+	    ui->networkLabel->hide();
+            ui->networkEdit->hide();
+	    ui->ssidLabel->hide();
+	    ui->ssidEdit->hide();
+	    ui->rssiLabel->hide();
+            ui->rssiEdit->hide();
+	}
+    }
+
+}
+
+
+DetailNode::~DetailNode()
+{
+    qDebug() << "DetailNode done";
+    delete ui;
+    emit entry_changed();
+}
+
+
+/*
+ * Receive signals destined for all co2meters.
+ * Check if the signal is for us.
+ */
+void DetailNode::refreshNode(QString data)
+{
+    if (_node == data) {
+	emit refreshTable();
+    }
+}
+
+
+void DetailNode::on_quitButton_clicked()
+{
+    this->close();
+    this->setResult(1);
+}
+
+
+void DetailNode::control_reboot()
+{
+    int rc = QMessageBox::warning(this, tr("Reboot application"), tr("Remote applicaation is running, really reboot?"),
+                                QMessageBox::Yes | QMessageBox::No, QMessageBox::No);
+
+    if (rc == QMessageBox::No)
+	return;
+
+    QString msg = QString("{\"node\":\""+_node+"\",\"group_id\":\""+_group_id+"\",\"control\":\"reboot\"}");
+    qDebug() << msg;
+    webSocket->sendTextMessage(msg);
+}
+
+
+void DetailNode::control_rebirth()
+{
+    QString msg = QString("{\"node\":\""+_node+"\",\"group_id\":\""+_group_id+"\",\"control\":\"rebirth\"}");
+    qDebug() << msg;
+    webSocket->sendTextMessage(msg);
+}
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/DetailNode.h	Mon Jul 11 15:57:06 2022 +0200
@@ -0,0 +1,43 @@
+#ifndef _DETAILNODE_H
+#define _DETAILNODE_H
+
+#include <QDialog>
+#include <QDoubleSpinBox>
+#include <QCheckBox>
+#include <QComboBox>
+#include <QRadioButton>
+#include <QLineEdit>
+#include <QDialogButtonBox>
+
+
+namespace Ui {
+class DetailNode;
+}
+
+class DetailNode : public QDialog
+{
+    Q_OBJECT
+
+signals:
+    void entry_changed();
+
+public:
+    explicit DetailNode(int id, QWidget *parent = 0);
+    ~DetailNode();
+
+private slots:
+    void on_quitButton_clicked();
+    void refreshTable(void);
+    void control_reboot();
+    void control_rebirth();
+
+public slots:
+    void refreshNode(QString);
+
+private:
+    Ui::DetailNode *ui;
+    QString _node, _group_id, _uuid;
+    int recno;
+};
+
+#endif
--- a/src/MonNodes.cpp	Sat Jul 09 23:05:25 2022 +0200
+++ b/src/MonNodes.cpp	Mon Jul 11 15:57:06 2022 +0200
@@ -15,7 +15,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 #include "MonNodes.h"
-#include "EditSupplier.h"
+#include "DetailNode.h"
 #include "MainWindow.h"
 #include "config.h"
 
@@ -140,16 +140,15 @@
 {
     qDebug() << "refreshNodes" << node;
     emit refreshTable();
+    emit updateNode(node);
 }
 
 
 void MonNodes::edit(int recno)
 {
-//    EditSupplier dialog(recno, this);
-    /* Signal from editor if a refresh is needed */
-//    connect(&dialog, SIGNAL(entry_changed()), this, SLOT(refreshTable()));
-//    dialog.setModal(true);
-//    dialog.exec();
+    DetailNode dialog(recno, this);
+    dialog.setModal(true);
+    dialog.exec();
 }
 
 
--- a/src/MonNodes.h	Sat Jul 09 23:05:25 2022 +0200
+++ b/src/MonNodes.h	Mon Jul 11 15:57:06 2022 +0200
@@ -23,6 +23,7 @@
 
 signals:
     void setStatus(QString);
+    void updateNode(QString);
 
 private slots:
     void on_editButton_clicked();
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ui/DetailNode.ui	Mon Jul 11 15:57:06 2022 +0200
@@ -0,0 +1,674 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DetailNode</class>
+ <widget class="QDialog" name="DetailNode">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>1024</width>
+    <height>560</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Dialog</string>
+  </property>
+  <layout class="QGridLayout" name="gridLayout">
+   <item row="0" column="0">
+    <widget class="QWidget" name="topWidget" native="true">
+     <widget class="QGroupBox" name="controlBox">
+      <property name="geometry">
+       <rect>
+        <x>20</x>
+        <y>10</y>
+        <width>961</width>
+        <height>461</height>
+       </rect>
+      </property>
+      <widget class="QLabel" name="uuidLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>60</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Uuid:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="systemLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>90</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>System:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="typeLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>150</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Type:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="firstLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>180</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>First seen:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="uuidEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>60</y>
+         <width>271</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="frame">
+        <bool>true</bool>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="systemEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>90</y>
+         <width>181</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="frame">
+        <bool>true</bool>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="statusEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>120</y>
+         <width>141</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="typeEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>150</y>
+         <width>141</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLabel" name="statusLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>120</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Current status:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="firstEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>180</y>
+         <width>181</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLabel" name="lastLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>210</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Last seen:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="lastEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>210</y>
+         <width>181</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLabel" name="boxLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>20</y>
+         <width>941</width>
+         <height>25</height>
+        </rect>
+       </property>
+       <property name="font">
+        <font>
+         <pointsize>12</pointsize>
+         <weight>75</weight>
+         <bold>true</bold>
+        </font>
+       </property>
+       <property name="text">
+        <string>System overview</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="makerLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>240</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Hardware maker:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="modelLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>270</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Hardware model:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="osLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>300</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>OS:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="fwLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>330</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Firmware:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="tempLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>360</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Temperature:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="humLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>390</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Humidity:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="networkLabel">
+       <property name="geometry">
+        <rect>
+         <x>490</x>
+         <y>270</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Network:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="intervalLabel">
+       <property name="geometry">
+        <rect>
+         <x>490</x>
+         <y>240</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Update interval:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="makerEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>240</y>
+         <width>271</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="modelEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>270</y>
+         <width>271</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="osEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>300</y>
+         <width>271</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="fwEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>330</y>
+         <width>181</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLabel" name="baroLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>420</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Barometer:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QDoubleSpinBox" name="tempEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>360</y>
+         <width>121</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="suffix">
+        <string>°C</string>
+       </property>
+       <property name="decimals">
+        <number>1</number>
+       </property>
+       <property name="minimum">
+        <double>-30.000000000000000</double>
+       </property>
+       <property name="maximum">
+        <double>100.000000000000000</double>
+       </property>
+      </widget>
+      <widget class="QDoubleSpinBox" name="humEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>390</y>
+         <width>121</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="suffix">
+        <string>%</string>
+       </property>
+       <property name="decimals">
+        <number>1</number>
+       </property>
+       <property name="minimum">
+        <double>0.000000000000000</double>
+       </property>
+       <property name="maximum">
+        <double>100.000000000000000</double>
+       </property>
+      </widget>
+      <widget class="QDoubleSpinBox" name="baroEdit">
+       <property name="geometry">
+        <rect>
+         <x>160</x>
+         <y>420</y>
+         <width>121</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="suffix">
+        <string>mbar</string>
+       </property>
+       <property name="decimals">
+        <number>0</number>
+       </property>
+       <property name="minimum">
+        <double>0.000000000000000</double>
+       </property>
+       <property name="maximum">
+        <double>1200.000000000000000</double>
+       </property>
+      </widget>
+      <widget class="QLabel" name="ssidLabel">
+       <property name="geometry">
+        <rect>
+         <x>490</x>
+         <y>300</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>WiFi SSID:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="rssiLabel">
+       <property name="geometry">
+        <rect>
+         <x>490</x>
+         <y>330</y>
+         <width>141</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>WiFi signal:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="networkEdit">
+       <property name="geometry">
+        <rect>
+         <x>640</x>
+         <y>270</y>
+         <width>271</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QLineEdit" name="ssidEdit">
+       <property name="geometry">
+        <rect>
+         <x>640</x>
+         <y>300</y>
+         <width>181</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
+      <widget class="QSpinBox" name="rssiEdit">
+       <property name="geometry">
+        <rect>
+         <x>640</x>
+         <y>330</y>
+         <width>121</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="minimum">
+        <number>-1000</number>
+       </property>
+       <property name="maximum">
+        <number>0</number>
+       </property>
+      </widget>
+      <widget class="QSpinBox" name="intervalEdit">
+       <property name="geometry">
+        <rect>
+         <x>640</x>
+         <y>240</y>
+         <width>121</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="minimum">
+        <number>0</number>
+       </property>
+       <property name="maximum">
+        <number>100000</number>
+       </property>
+      </widget>
+      <widget class="QPushButton" name="rebootButton">
+       <property name="geometry">
+        <rect>
+         <x>700</x>
+         <y>60</y>
+         <width>80</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Reboot</string>
+       </property>
+      </widget>
+      <widget class="QPushButton" name="rebirthButton">
+       <property name="geometry">
+        <rect>
+         <x>830</x>
+         <y>60</y>
+         <width>80</width>
+         <height>23</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Refresh</string>
+       </property>
+      </widget>
+     </widget>
+     <widget class="QPushButton" name="quitButton">
+      <property name="geometry">
+       <rect>
+        <x>460</x>
+        <y>500</y>
+        <width>80</width>
+        <height>23</height>
+       </rect>
+      </property>
+      <property name="sizePolicy">
+       <sizepolicy hsizetype="Fixed" vsizetype="Fixed">
+        <horstretch>0</horstretch>
+        <verstretch>0</verstretch>
+       </sizepolicy>
+      </property>
+      <property name="text">
+       <string>Quit</string>
+      </property>
+      <property name="icon">
+       <iconset>
+        <normaloff>:icons/silk/door_out.png</normaloff>:icons/silk/door_out.png</iconset>
+      </property>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <tabstops>
+  <tabstop>quitButton</tabstop>
+ </tabstops>
+ <resources>
+  <include location="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc"/>
+ </resources>
+ <connections/>
+</ui>

mercurial