Wed, 29 Jun 2022 22:19:39 +0200
Added DetailFermenter screen
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/DetailFermenter.cpp Wed Jun 29 22:19:39 2022 +0200 @@ -0,0 +1,101 @@ +/** + * DetailFermenter.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 "DetailFermenter.h" +#include "../ui/ui_DetailFermenter.h" +#include "MainWindow.h" + + +DetailFermenter::DetailFermenter(int id, QWidget *parent) : QDialog(parent), ui(new Ui::DetailFermenter) +{ + qDebug() << "DetailFermenter record:" << id; + ui->setupUi(this); + this->recno = id; + + WindowTitle(); + +// connect(ui->nameEdit, &QLineEdit::textChanged, this, &DetailFermenter::is_changed); +// connect(ui->unlimitedEdit, &QCheckBox::stateChanged, this, &DetailFermenter::is_changed); +// connect(ui->caEdit, &QDoubleSpinBox::textChanged, this, &DetailFermenter::water_changed); + + emit refreshTable(); +} + + +void DetailFermenter::refreshTable() +{ + QSqlQuery query; + + qDebug() << "refreshTable fermenter" << this->recno; + + query.prepare("SELECT * FROM mon_fermenters WHERE record = :recno"); + query.bindValue(":recno", this->recno); + query.exec(); + if (query.next()) { + + if (query.value("online").toInt()) { + if (query.value("mode").toString() == "OFF") { + ui->powerLED->setChecked(false); + // disable dropdowns select beer. + } else { + ui->powerLED->setChecked(true); + // enable beerslect + } + ui->alarmLED->setChecked((query.value("alarm").toInt() != 0) ? true:false); + + if (query.value("air_state").toString() == "OK") { + ui->airThermo->setValue(query.value("air_temperature").toDouble()); + } + if (query.value("beer_state").toString() == "OK") { + ui->beerThermo->setValue(query.value("beer_temperature").toDouble()); + } + + } else { + /* Offline */ + ui->powerLED->setChecked(false); + ui->alarmLED->setChecked(true); + + } + } + +} + + +DetailFermenter::~DetailFermenter() +{ + qDebug() << "DetailFermenter done"; + delete ui; + emit entry_changed(); +} + + +/* + * Window header, mark any change with '**' + */ +void DetailFermenter::WindowTitle() +{ + QString txt; + + txt = QString(tr("BMSapp - Edit brewing water %1").arg(this->recno)); + setWindowTitle(txt); +} + + +void DetailFermenter::on_quitButton_clicked() +{ + this->close(); + this->setResult(1); +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/DetailFermenter.h Wed Jun 29 22:19:39 2022 +0200 @@ -0,0 +1,33 @@ +#ifndef _DETAILFERMENTER_H +#define _DETAILFERMENTER_H + +#include <QDialog> + + +namespace Ui { +class DetailFermenter; +} + +class DetailFermenter : public QDialog +{ + Q_OBJECT + +signals: + void entry_changed(); + +public: + explicit DetailFermenter(int id, QWidget *parent = 0); + ~DetailFermenter(); + +private slots: + void on_quitButton_clicked(); + void refreshTable(void); + +private: + Ui::DetailFermenter *ui; + int recno; + + void WindowTitle(); +}; + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ui/DetailFermenter.ui Wed Jun 29 22:19:39 2022 +0200 @@ -0,0 +1,792 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>DetailFermenter</class> + <widget class="QDialog" name="DetailFermenter"> + <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="powerBox"> + <property name="geometry"> + <rect> + <x>720</x> + <y>10</y> + <width>261</width> + <height>111</height> + </rect> + </property> + <widget class="QLabel" name="powerLabel"> + <property name="geometry"> + <rect> + <x>190</x> + <y>70</y> + <width>61</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Power</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + <widget class="QLabel" name="alarmLabel"> + <property name="geometry"> + <rect> + <x>130</x> + <y>70</y> + <width>61</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Alarm</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + <widget class="QLabel" name="lightLabel"> + <property name="geometry"> + <rect> + <x>70</x> + <y>70</y> + <width>61</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Light</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + <widget class="QLabel" name="doorLabel"> + <property name="geometry"> + <rect> + <x>10</x> + <y>70</y> + <width>61</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Door</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + <widget class="Led" name="powerLED"> + <property name="geometry"> + <rect> + <x>210</x> + <y>40</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="toolTip"> + <string>Color Led component</string> + </property> + <property name="whatsThis"> + <string>Led indicator</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <property name="color"> + <color> + <red>28</red> + <green>113</green> + <blue>216</blue> + </color> + </property> + </widget> + <widget class="Led" name="alarmLED"> + <property name="geometry"> + <rect> + <x>150</x> + <y>40</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="toolTip"> + <string>Color Led component</string> + </property> + <property name="whatsThis"> + <string>Led indicator</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + </widget> + <widget class="Led" name="lightLED"> + <property name="geometry"> + <rect> + <x>90</x> + <y>40</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="toolTip"> + <string>Color Led component</string> + </property> + <property name="whatsThis"> + <string>Led indicator</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <property name="color"> + <color> + <red>245</red> + <green>194</green> + <blue>17</blue> + </color> + </property> + </widget> + <widget class="Led" name="doorLED"> + <property name="geometry"> + <rect> + <x>30</x> + <y>40</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="toolTip"> + <string>Color Led component</string> + </property> + <property name="whatsThis"> + <string>Led indicator</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <property name="color"> + <color> + <red>245</red> + <green>194</green> + <blue>17</blue> + </color> + </property> + </widget> + </widget> + <widget class="QGroupBox" name="controlBox"> + <property name="geometry"> + <rect> + <x>20</x> + <y>10</y> + <width>681</width> + <height>231</height> + </rect> + </property> + <widget class="QLabel" name="uuidLabel"> + <property name="geometry"> + <rect> + <x>10</x> + <y>40</y> + <width>121</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>70</y> + <width>121</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="codeLabel"> + <property name="geometry"> + <rect> + <x>10</x> + <y>100</y> + <width>121</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Code and beer:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + <widget class="QLabel" name="modeLabel"> + <property name="geometry"> + <rect> + <x>10</x> + <y>130</y> + <width>121</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Mode:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + <widget class="QLabel" name="stageLabel"> + <property name="geometry"> + <rect> + <x>10</x> + <y>160</y> + <width>121</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Stage:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + <widget class="QLabel" name="profileLabel"> + <property name="geometry"> + <rect> + <x>10</x> + <y>190</y> + <width>121</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Fermentation profile:</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + </widget> + <widget class="QLabel" name="boxLabel"> + <property name="geometry"> + <rect> + <x>15</x> + <y>10</y> + <width>651</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>Climate Controller overview</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + <widget class="QLineEdit" name="uuidEdit"> + <property name="geometry"> + <rect> + <x>140</x> + <y>40</y> + <width>221</width> + <height>23</height> + </rect> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" name="systemEdit"> + <property name="geometry"> + <rect> + <x>140</x> + <y>70</y> + <width>151</width> + <height>23</height> + </rect> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + <widget class="QLineEdit" name="statusEdit"> + <property name="geometry"> + <rect> + <x>550</x> + <y>70</y> + <width>101</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLineEdit" name="codeEdit"> + <property name="geometry"> + <rect> + <x>140</x> + <y>100</y> + <width>381</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QComboBox" name="codePick"> + <property name="geometry"> + <rect> + <x>550</x> + <y>100</y> + <width>101</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QComboBox" name="modeEdit"> + <property name="geometry"> + <rect> + <x>140</x> + <y>130</y> + <width>121</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QComboBox" name="stageEdit"> + <property name="geometry"> + <rect> + <x>140</x> + <y>160</y> + <width>121</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLineEdit" name="profileEdit"> + <property name="geometry"> + <rect> + <x>140</x> + <y>190</y> + <width>221</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QLineEdit" name="profileShow"> + <property name="geometry"> + <rect> + <x>550</x> + <y>190</y> + <width>101</width> + <height>23</height> + </rect> + </property> + </widget> + <widget class="QPushButton" name="modeButton1"> + <property name="geometry"> + <rect> + <x>440</x> + <y>130</y> + <width>80</width> + <height>23</height> + </rect> + </property> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + <widget class="QPushButton" name="modeButton2"> + <property name="geometry"> + <rect> + <x>550</x> + <y>130</y> + <width>80</width> + <height>23</height> + </rect> + </property> + <property name="text"> + <string>PushButton</string> + </property> + </widget> + </widget> + <widget class="QGroupBox" name="thermoBox"> + <property name="geometry"> + <rect> + <x>20</x> + <y>250</y> + <width>681</width> + <height>271</height> + </rect> + </property> + <widget class="QLabel" name="chillerLabel"> + <property name="geometry"> + <rect> + <x>290</x> + <y>10</y> + <width>101</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Chiller</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + <widget class="QLabel" name="airLabel"> + <property name="geometry"> + <rect> + <x>80</x> + <y>240</y> + <width>101</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Air</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + <widget class="QLabel" name="beerLabel"> + <property name="geometry"> + <rect> + <x>500</x> + <y>240</y> + <width>101</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>Beer</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + <widget class="ManoMeter" name="chillerThermo"> + <property name="enabled"> + <bool>true</bool> + </property> + <property name="geometry"> + <rect> + <x>290</x> + <y>30</y> + <width>100</width> + <height>100</height> + </rect> + </property> + <property name="toolTip"> + <string>Shows the pressure</string> + </property> + <property name="whatsThis"> + <string>The bar meter widget displays the pressure attached to it</string> + </property> + <property name="minimum"> + <double>-15.000000000000000</double> + </property> + <property name="maximum"> + <double>25.000000000000000</double> + </property> + <property name="nominal"> + <double>0.000000000000000</double> + </property> + <property name="critical"> + <double>15.000000000000000</double> + </property> + </widget> + <widget class="ManoMeter" name="beerThermo"> + <property name="geometry"> + <rect> + <x>450</x> + <y>30</y> + <width>201</width> + <height>201</height> + </rect> + </property> + <property name="toolTip"> + <string>Shows the pressure</string> + </property> + <property name="whatsThis"> + <string>The bar meter widget displays the pressure attached to it</string> + </property> + <property name="maximum"> + <double>45.000000000000000</double> + </property> + <property name="nominal"> + <double>15.000000000000000</double> + </property> + <property name="critical"> + <double>20.000000000000000</double> + </property> + </widget> + <widget class="ManoMeter" name="airThermo"> + <property name="geometry"> + <rect> + <x>30</x> + <y>30</y> + <width>201</width> + <height>201</height> + </rect> + </property> + <property name="toolTip"> + <string>Shows the pressure</string> + </property> + <property name="whatsThis"> + <string>The bar meter widget displays the pressure attached to it</string> + </property> + <property name="autoFillBackground"> + <bool>true</bool> + </property> + <property name="maximum"> + <double>45.000000000000000</double> + </property> + <property name="nominal"> + <double>15.000000000000000</double> + </property> + <property name="critical"> + <double>20.000000000000000</double> + </property> + <property name="valueOffset"> + <double>-100.000000000000000</double> + </property> + <property name="digitOffset"> + <double>105.000000000000000</double> + </property> + </widget> + </widget> + <widget class="QGroupBox" name="tempsetBox"> + <property name="geometry"> + <rect> + <x>720</x> + <y>140</y> + <width>261</width> + <height>101</height> + </rect> + </property> + <widget class="QDoubleSpinBox" name="loEdit"> + <property name="geometry"> + <rect> + <x>40</x> + <y>30</y> + <width>71</width> + <height>24</height> + </rect> + </property> + </widget> + <widget class="QDoubleSpinBox" name="hiEdit"> + <property name="geometry"> + <rect> + <x>150</x> + <y>30</y> + <width>71</width> + <height>24</height> + </rect> + </property> + </widget> + <widget class="QLabel" name="loLabel"> + <property name="geometry"> + <rect> + <x>40</x> + <y>60</y> + <width>71</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>°C low</string> + </property> + </widget> + <widget class="QLabel" name="hiLabel"> + <property name="geometry"> + <rect> + <x>150</x> + <y>60</y> + <width>71</width> + <height>20</height> + </rect> + </property> + <property name="text"> + <string>°C high</string> + </property> + </widget> + </widget> + <widget class="QGroupBox" name="switchBox"> + <property name="geometry"> + <rect> + <x>720</x> + <y>250</y> + <width>261</width> + <height>121</height> + </rect> + </property> + <widget class="Led" name="heatLED"> + <property name="geometry"> + <rect> + <x>40</x> + <y>20</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="toolTip"> + <string>Color Led component</string> + </property> + <property name="whatsThis"> + <string>Led indicator</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <property name="color"> + <color> + <red>0</red> + <green>200</green> + <blue>0</blue> + </color> + </property> + </widget> + <widget class="Led" name="coolLED"> + <property name="geometry"> + <rect> + <x>120</x> + <y>20</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="toolTip"> + <string>Color Led component</string> + </property> + <property name="whatsThis"> + <string>Led indicator</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <property name="color"> + <color> + <red>0</red> + <green>200</green> + <blue>0</blue> + </color> + </property> + </widget> + <widget class="Led" name="fanLED"> + <property name="geometry"> + <rect> + <x>200</x> + <y>20</y> + <width>20</width> + <height>20</height> + </rect> + </property> + <property name="toolTip"> + <string>Color Led component</string> + </property> + <property name="whatsThis"> + <string>Led indicator</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <property name="color"> + <color> + <red>0</red> + <green>200</green> + <blue>0</blue> + </color> + </property> + </widget> + </widget> + <widget class="QGroupBox" name="buttonBox"> + <property name="geometry"> + <rect> + <x>720</x> + <y>390</y> + <width>261</width> + <height>131</height> + </rect> + </property> + <property name="title"> + <string>GroupBox</string> + </property> + <widget class="QPushButton" name="quitButton"> + <property name="geometry"> + <rect> + <x>90</x> + <y>90</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> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>Led</class> + <extends>QWidget</extends> + <header>analog/led.h</header> + </customwidget> + <customwidget> + <class>ManoMeter</class> + <extends>QWidget</extends> + <header>analog/manometer.h</header> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>quitButton</tabstop> + </tabstops> + <resources> + <include location="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc"/> + </resources> + <connections/> +</ui>