Details CO2 monitor shows the style limits for the specific beer. Adjust the scale of the pressure widget to the beer limits. Moved more functions to the global Utils. Fix expected pressure in the package screen for other priming sugars. Disabled some debug log messages.

Fri, 18 Nov 2022 16:57:02 +0100

author
Michiel Broek <mbroek@mbse.eu>
date
Fri, 18 Nov 2022 16:57:02 +0100
changeset 443
3c195eb4e7a1
parent 442
d8c110d91b1f
child 444
4f626d0bb4d4

Details CO2 monitor shows the style limits for the specific beer. Adjust the scale of the pressure widget to the beer limits. Moved more functions to the global Utils. Fix expected pressure in the package screen for other priming sugars. Disabled some debug log messages.

src/DetailCO2meter.cpp file | annotate | diff | comparison | revisions
src/EditProduct.h file | annotate | diff | comparison | revisions
src/EditProductTab11.cpp file | annotate | diff | comparison | revisions
src/MonCO2meters.cpp file | annotate | diff | comparison | revisions
src/Utils.cpp file | annotate | diff | comparison | revisions
src/Utils.h file | annotate | diff | comparison | revisions
translations/bmsapp_en.ts file | annotate | diff | comparison | revisions
translations/bmsapp_nl.ts file | annotate | diff | comparison | revisions
ui/DetailCO2meter.ui file | annotate | diff | comparison | revisions
ui/DetailFermenter.ui file | annotate | diff | comparison | revisions
--- a/src/DetailCO2meter.cpp	Fri Nov 18 12:17:32 2022 +0100
+++ b/src/DetailCO2meter.cpp	Fri Nov 18 16:57:02 2022 +0100
@@ -18,6 +18,7 @@
 #include "ChartCarbonate.h"
 #include "../ui/ui_DetailCO2meter.h"
 #include "global.h"
+#include "Utils.h"
 #include "MainWindow.h"
 
 
@@ -62,7 +63,8 @@
 
 void DetailCO2meter::refreshTable()
 {
-    QSqlQuery query;
+    QSqlQuery query, query2;
+    QString sql = "";
 
     qDebug() << "refreshTable co2meter rec:" << this->recno;
 
@@ -80,6 +82,34 @@
 	_beercode = query.value("beercode").toString();
 	_beername = query.value("beername").toString();
 
+	sql = "SELECT "
+		"st_carb_min,st_carb_max,secondary_temp,primary_end_temp,bottle_carbonation_temp"
+		" FROM products WHERE code=:code AND name=:name";
+	query2.prepare(sql);
+        query2.bindValue(":code", _beercode);
+	query2.bindValue(":name", _beername);
+	query2.exec();
+	if (query2.next()) {
+	    /* Get highest fermentation temperature. */
+	    double TSec = query2.value("secondary_temp").toDouble();
+	    if (TSec < 1)
+		TSec = query2.value("primary_end_temp").toDouble();
+	    if (TSec < 1)
+		TSec = 18;
+
+	    double carbtemp = query2.value("bottle_carbonation_temp").toDouble();
+	    double barmin = Utils::GetPressureBar(Utils::CarbCO2toS(query2.value("st_carb_min").toDouble(), TSec, 1), carbtemp);
+	    double barmax = Utils::GetPressureBar(Utils::CarbCO2toS(query2.value("st_carb_max").toDouble(), TSec, 1), carbtemp);
+	    ui->minVol->setValue(query2.value("st_carb_min").toDouble());
+	    ui->maxVol->setValue(query2.value("st_carb_max").toDouble());
+	    ui->minBar->setValue(barmin);
+	    ui->maxBar->setValue(barmax);
+	    qDebug() << " beerdata" << TSec << carbtemp << barmin << barmax;
+
+	    ui->barMeter->setNominal(barmin);
+    	    ui->barMeter->setCritical(barmax);
+	}
+
 	ui->uuidEdit->setText(_uuid);
 	ui->systemEdit->setText(_node+"/"+_alias);
 	ui->codePick->setItemText(0, _alias.toUpper()+" - "+_alias);
@@ -123,7 +153,6 @@
 
 DetailCO2meter::~DetailCO2meter()
 {
-    qDebug() << "DetailCO2meter done";
     delete ui;
     emit entry_changed();
 }
--- a/src/EditProduct.h	Fri Nov 18 12:17:32 2022 +0100
+++ b/src/EditProduct.h	Fri Nov 18 16:57:02 2022 +0100
@@ -332,8 +332,6 @@
     void calcEfficiencyAfterBoil();
     void brew_volume_calc(double volume, double kettle_volume, double kettle_height, double est_volume, bool aboil);
     double get_fg(double gravity);
-    double ResCO2(double T);
-    double CarbCO2toS(double CO2, double T, double SFactor);
     double GetPressure(double CO2, double T);
     double CarbCO2ToPressure(double CO2, double T);
     void calcPack();
--- a/src/EditProductTab11.cpp	Fri Nov 18 12:17:32 2022 +0100
+++ b/src/EditProductTab11.cpp	Fri Nov 18 16:57:02 2022 +0100
@@ -17,22 +17,6 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-double EditProduct::ResCO2(double T)
-{
-    double F = T * 1.8 + 32;
-    return round((3.0378 - 0.050062 * F + 0.00026555 * F * F) * 1000000.0) / 1000000.0;
-}
-
-
-double EditProduct::CarbCO2toS(double CO2, double T, double SFactor)
-{
-    //var sugar = SFactor * (CO2 - ResCO2(CO2, T)) / 0.286;
-    double sugar = round((SFactor * (CO2 - ResCO2(T)) * 4.014094) * 1000000.0) / 1000000.0;
-    if (sugar < 0)
-	sugar = 0;
-    return sugar; 	//Round(sugar, 3);
-}
-
 
 double EditProduct::GetPressure(double CO2, double T)
 {
@@ -139,8 +123,8 @@
 		product->fermentables.removeAt(i);		// Remove false fermentable
 		refreshFermentables();
 	    } else {
-		product->bottle_priming_amount = CarbCO2toS(product->bottle_carbonation, TSec, SFactor);
-//		qDebug() << "  priming CarbCO2toS(" << product->bottle_carbonation << TSec << SFactor << ") =" << product->bottle_priming_amount;
+		product->bottle_priming_amount = Utils::CarbCO2toS(product->bottle_carbonation, TSec, SFactor);
+		//qDebug() << "  priming CarbCO2toS(" << product->bottle_carbonation << TSec << SFactor << ") =" << product->bottle_priming_amount;
 		ui->bottle_sug_amountShow->setValue(product->bottle_priming_amount);
 		double total = round(product->bottle_priming_amount * product->bottle_amount * 100.0) / 100000.0;
 		if (total != product->fermentables.at(i).amount) {
@@ -157,7 +141,7 @@
 		talc = product->bottle_amount - pvol;
   		tvol = pvol + product->bottle_priming_water;
 		product->bottle_abv = talc / (tvol + talc) * 100;
-		product->bottle_bar = Utils::GetPressureBar(product->bottle_priming_amount, product->bottle_carbonation_temp);
+		product->bottle_bar = Utils::GetPressureBar(product->bottle_priming_amount * (1 / SFactor), product->bottle_carbonation_temp);
 		ui->bottle_abvShow->setValue(product->bottle_abv);
 		ui->bottle_barShow->setValue(product->bottle_bar);
 	    }
@@ -222,7 +206,7 @@
                     product->fermentables.removeAt(i);	// Remove false fermentable
                     refreshFermentables();
             	} else {
-                    product->keg_priming_amount = CarbCO2toS(product->keg_carbonation, TSec, SFactor);
+                    product->keg_priming_amount = Utils::CarbCO2toS(product->keg_carbonation, TSec, SFactor);
                     ui->keg_sug_amountShow->setValue(product->keg_priming_amount);
                     double total = round(product->keg_priming_amount * product->keg_amount * 100.0) / 100000.0;
                     qDebug() << "  total" << total << product->fermentables.at(i).amount;
--- a/src/MonCO2meters.cpp	Fri Nov 18 12:17:32 2022 +0100
+++ b/src/MonCO2meters.cpp	Fri Nov 18 16:57:02 2022 +0100
@@ -71,7 +71,7 @@
 {
     QTableWidgetItem *item;
 
-    qDebug() << "MonCO2meters reload";
+    //qDebug() << "MonCO2meters reload";
     QSqlQuery query("SELECT record,node,alias,online,mode,beercode,beername,temperature,pressure_bar FROM mon_co2meters ORDER BY node,alias");
     const QStringList labels({tr("Node"), tr("Unit"), tr("Status"), tr("Mode"), tr("Beer"), tr("Temperature"), tr("Pressure"), tr("Details")});
 
@@ -144,7 +144,7 @@
 
 void MonCO2meters::refreshCO2meters(QString data)
 {
-    qDebug() << "refreshCO2meters" << data;
+    //qDebug() << "refreshCO2meters" << data;
     emit refreshTable();
     emit updateCO2meter(data);
 }
--- a/src/Utils.cpp	Fri Nov 18 12:17:32 2022 +0100
+++ b/src/Utils.cpp	Fri Nov 18 16:57:02 2022 +0100
@@ -771,6 +771,22 @@
 }
 
 
+double Utils::ResCO2(double T)
+{
+    double F = T * 1.8 + 32;
+    return round((3.0378 - 0.050062 * F + 0.00026555 * F * F) * 1000000.0) / 1000000.0;
+}
+
+
+double Utils::CarbCO2toS(double CO2, double T, double SFactor)
+{
+    double sugar = round((SFactor * (CO2 - ResCO2(T)) * 4.014094) * 1000000.0) / 1000000.0;
+    if (sugar < 0)
+        sugar = 0;
+    return sugar;
+}
+
+
 double Utils::GetPressureBar(double gl, double T)
 {
     if (gl <= 0)
--- a/src/Utils.h	Fri Nov 18 12:17:32 2022 +0100
+++ b/src/Utils.h	Fri Nov 18 16:57:02 2022 +0100
@@ -197,6 +197,22 @@
     double CalcFrac(double TpH, double pK1, double pK2, double pK3);
 
     /**
+     * @brief Calculate residual volumes CO2 in the fermenter.
+     * @param T The highest fermentation temperature in celsius.
+     * @return The volumes CO2.
+     */
+    double ResCO2(double T);
+
+    /**
+     * @brief Calculate the grams/liter sugar.
+     * @param CO2 The desired volumes CO2.
+     * @param T The highest fermentation temperature in celsius.
+     * @param SFactor The sugar factor, 1.0 for table sugar.
+     * @return The grams/liter of the chosen priming sugar.
+     */
+    double CarbCO2toS(double CO2, double T, double SFactor);
+
+    /**
      * @brief Calculate pressure in Bar after refermentation.
      * @param gl Sugar in gram/liter
      * @param T Temperature in celsius
--- a/translations/bmsapp_en.ts	Fri Nov 18 12:17:32 2022 +0100
+++ b/translations/bmsapp_en.ts	Fri Nov 18 16:57:02 2022 +0100
@@ -354,27 +354,52 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailCO2meter.ui" line="451"/>
+        <location filename="../ui/DetailCO2meter.ui" line="519"/>
+        <source>Maximum</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="597"/>
+        <source>Minimum</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="503"/>
+        <source>Vol CO2:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="456"/>
+        <source>Bar:</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="620"/>
+        <source>Style limits</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="652"/>
         <source>Quit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailCO2meter.ui" line="468"/>
+        <location filename="../ui/DetailCO2meter.ui" line="669"/>
         <source>Log</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/DetailCO2meter.cpp" line="38"/>
+        <location filename="../src/DetailCO2meter.cpp" line="39"/>
         <source>BMSapp - Details Carbonation</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/DetailCO2meter.cpp" line="88"/>
+        <location filename="../src/DetailCO2meter.cpp" line="118"/>
         <source>Online</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/DetailCO2meter.cpp" line="111"/>
+        <location filename="../src/DetailCO2meter.cpp" line="141"/>
         <source>Offline</source>
         <translation type="unfinished"></translation>
     </message>
@@ -411,9 +436,9 @@
         <location filename="../ui/DetailFermenter.ui" line="128"/>
         <location filename="../ui/DetailFermenter.ui" line="147"/>
         <location filename="../ui/DetailFermenter.ui" line="173"/>
-        <location filename="../ui/DetailFermenter.ui" line="709"/>
-        <location filename="../ui/DetailFermenter.ui" line="735"/>
-        <location filename="../ui/DetailFermenter.ui" line="761"/>
+        <location filename="../ui/DetailFermenter.ui" line="725"/>
+        <location filename="../ui/DetailFermenter.ui" line="751"/>
+        <location filename="../ui/DetailFermenter.ui" line="777"/>
         <source>Color Led component</source>
         <translation type="unfinished"></translation>
     </message>
@@ -422,9 +447,9 @@
         <location filename="../ui/DetailFermenter.ui" line="131"/>
         <location filename="../ui/DetailFermenter.ui" line="150"/>
         <location filename="../ui/DetailFermenter.ui" line="176"/>
-        <location filename="../ui/DetailFermenter.ui" line="712"/>
-        <location filename="../ui/DetailFermenter.ui" line="738"/>
-        <location filename="../ui/DetailFermenter.ui" line="764"/>
+        <location filename="../ui/DetailFermenter.ui" line="728"/>
+        <location filename="../ui/DetailFermenter.ui" line="754"/>
+        <location filename="../ui/DetailFermenter.ui" line="780"/>
         <source>Led indicator</source>
         <translation type="unfinished"></translation>
     </message>
@@ -480,79 +505,84 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="500"/>
-        <source>Chiller</source>
+        <location filename="../ui/DetailFermenter.ui" line="487"/>
+        <source>Current status:</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ui/DetailFermenter.ui" line="516"/>
-        <source>Air</source>
+        <source>Chiller</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ui/DetailFermenter.ui" line="532"/>
+        <source>Air</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailFermenter.ui" line="548"/>
         <source>Beer</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="551"/>
+        <location filename="../ui/DetailFermenter.ui" line="567"/>
         <source>Shows the chiller temperature</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="564"/>
+        <location filename="../ui/DetailFermenter.ui" line="580"/>
         <source>Shows the beer temperature</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="590"/>
+        <location filename="../ui/DetailFermenter.ui" line="606"/>
         <source>Shows the air temperature</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="673"/>
+        <location filename="../ui/DetailFermenter.ui" line="689"/>
         <source>°C low</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="686"/>
+        <location filename="../ui/DetailFermenter.ui" line="702"/>
         <source>°C high</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="787"/>
-        <source>Heat</source>
-        <translation type="unfinished"></translation>
-    </message>
-    <message>
         <location filename="../ui/DetailFermenter.ui" line="803"/>
-        <source>Cool</source>
+        <source>Heat</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ui/DetailFermenter.ui" line="819"/>
-        <source>Fan</source>
+        <source>Cool</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
         <location filename="../ui/DetailFermenter.ui" line="835"/>
-        <location filename="../ui/DetailFermenter.ui" line="859"/>
-        <location filename="../ui/DetailFermenter.ui" line="883"/>
+        <source>Fan</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailFermenter.ui" line="851"/>
+        <location filename="../ui/DetailFermenter.ui" line="875"/>
+        <location filename="../ui/DetailFermenter.ui" line="899"/>
         <source>...</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="920"/>
+        <location filename="../ui/DetailFermenter.ui" line="936"/>
         <source>Quit</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="937"/>
+        <location filename="../ui/DetailFermenter.ui" line="953"/>
         <source>Log</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="954"/>
+        <location filename="../ui/DetailFermenter.ui" line="970"/>
         <source>Camera</source>
         <translation type="unfinished"></translation>
     </message>
@@ -4774,12 +4804,12 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab11.cpp" line="296"/>
+        <location filename="../src/EditProductTab11.cpp" line="280"/>
         <source>Confirm package</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab11.cpp" line="296"/>
+        <location filename="../src/EditProductTab11.cpp" line="280"/>
         <source>Confirm that the beer is packaged and all data is correct</source>
         <translation type="unfinished"></translation>
     </message>
--- a/translations/bmsapp_nl.ts	Fri Nov 18 12:17:32 2022 +0100
+++ b/translations/bmsapp_nl.ts	Fri Nov 18 16:57:02 2022 +0100
@@ -403,6 +403,31 @@
         <translation>Toont de temperatuur</translation>
     </message>
     <message>
+        <location filename="../ui/DetailCO2meter.ui" line="519"/>
+        <source>Maximum</source>
+        <translation>Maximum</translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="597"/>
+        <source>Minimum</source>
+        <translation>Minimum</translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="620"/>
+        <source>Style limits</source>
+        <translation>Stijl limieten</translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="503"/>
+        <source>Vol CO2:</source>
+        <translation>Vol CO2:</translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailCO2meter.ui" line="456"/>
+        <source>Bar:</source>
+        <translation>Druk bar:</translation>
+    </message>
+    <message>
         <source>Shows the beer temperature</source>
         <translation type="obsolete">Toont de bier temperatuur</translation>
     </message>
@@ -411,27 +436,27 @@
         <translation type="obsolete">Toont de lucht temperatuur</translation>
     </message>
     <message>
-        <location filename="../ui/DetailCO2meter.ui" line="451"/>
+        <location filename="../ui/DetailCO2meter.ui" line="652"/>
         <source>Quit</source>
         <translation>Terug</translation>
     </message>
     <message>
-        <location filename="../ui/DetailCO2meter.ui" line="468"/>
+        <location filename="../ui/DetailCO2meter.ui" line="669"/>
         <source>Log</source>
         <translation>Log</translation>
     </message>
     <message>
-        <location filename="../src/DetailCO2meter.cpp" line="38"/>
+        <location filename="../src/DetailCO2meter.cpp" line="39"/>
         <source>BMSapp - Details Carbonation</source>
         <translation>BMSapp - Details carbonatie</translation>
     </message>
     <message>
-        <location filename="../src/DetailCO2meter.cpp" line="88"/>
+        <location filename="../src/DetailCO2meter.cpp" line="118"/>
         <source>Online</source>
         <translation>Online</translation>
     </message>
     <message>
-        <location filename="../src/DetailCO2meter.cpp" line="111"/>
+        <location filename="../src/DetailCO2meter.cpp" line="141"/>
         <source>Offline</source>
         <translation>Offline</translation>
     </message>
@@ -468,9 +493,9 @@
         <location filename="../ui/DetailFermenter.ui" line="128"/>
         <location filename="../ui/DetailFermenter.ui" line="147"/>
         <location filename="../ui/DetailFermenter.ui" line="173"/>
-        <location filename="../ui/DetailFermenter.ui" line="709"/>
-        <location filename="../ui/DetailFermenter.ui" line="735"/>
-        <location filename="../ui/DetailFermenter.ui" line="761"/>
+        <location filename="../ui/DetailFermenter.ui" line="725"/>
+        <location filename="../ui/DetailFermenter.ui" line="751"/>
+        <location filename="../ui/DetailFermenter.ui" line="777"/>
         <source>Color Led component</source>
         <translation></translation>
     </message>
@@ -479,9 +504,9 @@
         <location filename="../ui/DetailFermenter.ui" line="131"/>
         <location filename="../ui/DetailFermenter.ui" line="150"/>
         <location filename="../ui/DetailFermenter.ui" line="176"/>
-        <location filename="../ui/DetailFermenter.ui" line="712"/>
-        <location filename="../ui/DetailFermenter.ui" line="738"/>
-        <location filename="../ui/DetailFermenter.ui" line="764"/>
+        <location filename="../ui/DetailFermenter.ui" line="728"/>
+        <location filename="../ui/DetailFermenter.ui" line="754"/>
+        <location filename="../ui/DetailFermenter.ui" line="780"/>
         <source>Led indicator</source>
         <translation></translation>
     </message>
@@ -537,79 +562,84 @@
         <translation>Kies profiel:</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="500"/>
-        <source>Chiller</source>
-        <translation>Koeler</translation>
+        <location filename="../ui/DetailFermenter.ui" line="487"/>
+        <source>Current status:</source>
+        <translation>Huidige status:</translation>
     </message>
     <message>
         <location filename="../ui/DetailFermenter.ui" line="516"/>
-        <source>Air</source>
-        <translation>Lucht</translation>
+        <source>Chiller</source>
+        <translation>Koeler</translation>
     </message>
     <message>
         <location filename="../ui/DetailFermenter.ui" line="532"/>
+        <source>Air</source>
+        <translation>Lucht</translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailFermenter.ui" line="548"/>
         <source>Beer</source>
         <translation>Bier</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="551"/>
+        <location filename="../ui/DetailFermenter.ui" line="567"/>
         <source>Shows the chiller temperature</source>
         <translation>Toont de koeler temperatuur</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="564"/>
+        <location filename="../ui/DetailFermenter.ui" line="580"/>
         <source>Shows the beer temperature</source>
         <translation>Toont de bier temperatuur</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="590"/>
+        <location filename="../ui/DetailFermenter.ui" line="606"/>
         <source>Shows the air temperature</source>
         <translation>Toont de lucht temperatuur</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="673"/>
+        <location filename="../ui/DetailFermenter.ui" line="689"/>
         <source>°C low</source>
         <translation>°C laag</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="686"/>
+        <location filename="../ui/DetailFermenter.ui" line="702"/>
         <source>°C high</source>
         <translation>°C hoog</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="787"/>
-        <source>Heat</source>
-        <translation>Verwarm</translation>
-    </message>
-    <message>
         <location filename="../ui/DetailFermenter.ui" line="803"/>
-        <source>Cool</source>
-        <translation>Koel</translation>
+        <source>Heat</source>
+        <translation>Verwarm</translation>
     </message>
     <message>
         <location filename="../ui/DetailFermenter.ui" line="819"/>
-        <source>Fan</source>
-        <translation>Ventilator</translation>
+        <source>Cool</source>
+        <translation>Koel</translation>
     </message>
     <message>
         <location filename="../ui/DetailFermenter.ui" line="835"/>
-        <location filename="../ui/DetailFermenter.ui" line="859"/>
-        <location filename="../ui/DetailFermenter.ui" line="883"/>
+        <source>Fan</source>
+        <translation>Ventilator</translation>
+    </message>
+    <message>
+        <location filename="../ui/DetailFermenter.ui" line="851"/>
+        <location filename="../ui/DetailFermenter.ui" line="875"/>
+        <location filename="../ui/DetailFermenter.ui" line="899"/>
         <source>...</source>
         <translation>...</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="920"/>
+        <location filename="../ui/DetailFermenter.ui" line="936"/>
         <source>Quit</source>
         <translation>Terug</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="937"/>
+        <location filename="../ui/DetailFermenter.ui" line="953"/>
         <source>Log</source>
         <translation>Log</translation>
     </message>
     <message>
-        <location filename="../ui/DetailFermenter.ui" line="954"/>
+        <location filename="../ui/DetailFermenter.ui" line="970"/>
         <source>Camera</source>
         <translation>Camera</translation>
     </message>
@@ -5440,12 +5470,12 @@
         <translation type="vanished">Batterij volt</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab11.cpp" line="296"/>
+        <location filename="../src/EditProductTab11.cpp" line="280"/>
         <source>Confirm package</source>
         <translation>Bevestig verpakken</translation>
     </message>
     <message>
-        <location filename="../src/EditProductTab11.cpp" line="296"/>
+        <location filename="../src/EditProductTab11.cpp" line="280"/>
         <source>Confirm that the beer is packaged and all data is correct</source>
         <translation>Bevestig dat het bier verpakt is en de gegevens kloppen</translation>
     </message>
--- a/ui/DetailCO2meter.ui	Fri Nov 18 12:17:32 2022 +0100
+++ b/ui/DetailCO2meter.ui	Fri Nov 18 16:57:02 2022 +0100
@@ -148,7 +148,7 @@
        <property name="geometry">
         <rect>
          <x>10</x>
-         <y>150</y>
+         <y>120</y>
          <width>141</width>
          <height>20</height>
         </rect>
@@ -164,7 +164,7 @@
        <property name="geometry">
         <rect>
          <x>10</x>
-         <y>180</y>
+         <y>150</y>
          <width>141</width>
          <height>20</height>
         </rect>
@@ -234,9 +234,9 @@
       <widget class="QLineEdit" name="statusEdit">
        <property name="geometry">
         <rect>
-         <x>160</x>
-         <y>120</y>
-         <width>111</width>
+         <x>560</x>
+         <y>90</y>
+         <width>141</width>
          <height>23</height>
         </rect>
        </property>
@@ -248,7 +248,7 @@
        <property name="geometry">
         <rect>
          <x>160</x>
-         <y>150</y>
+         <y>120</y>
          <width>381</width>
          <height>23</height>
         </rect>
@@ -261,7 +261,7 @@
        <property name="geometry">
         <rect>
          <x>560</x>
-         <y>150</y>
+         <y>120</y>
          <width>141</width>
          <height>23</height>
         </rect>
@@ -276,8 +276,8 @@
       <widget class="QLabel" name="statusLabel">
        <property name="geometry">
         <rect>
-         <x>10</x>
-         <y>120</y>
+         <x>410</x>
+         <y>90</y>
          <width>141</width>
          <height>20</height>
         </rect>
@@ -293,7 +293,7 @@
        <property name="geometry">
         <rect>
          <x>160</x>
-         <y>180</y>
+         <y>150</y>
          <width>111</width>
          <height>23</height>
         </rect>
@@ -403,25 +403,226 @@
        </property>
       </widget>
      </widget>
-     <widget class="QGroupBox" name="tempsetBox">
-      <property name="geometry">
-       <rect>
-        <x>740</x>
-        <y>130</y>
-        <width>261</width>
-        <height>101</height>
-       </rect>
-      </property>
-     </widget>
-     <widget class="QGroupBox" name="switchBox">
+     <widget class="QGroupBox" name="styleBox">
       <property name="geometry">
        <rect>
         <x>740</x>
         <y>240</y>
         <width>261</width>
-        <height>121</height>
+        <height>161</height>
        </rect>
       </property>
+      <widget class="QDoubleSpinBox" name="minBar">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>90</y>
+         <width>71</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="accelerated">
+        <bool>false</bool>
+       </property>
+       <property name="decimals">
+        <number>2</number>
+       </property>
+       <property name="maximum">
+        <double>45.000000000000000</double>
+       </property>
+       <property name="singleStep">
+        <double>1.000000000000000</double>
+       </property>
+      </widget>
+      <widget class="QLabel" name="st_barLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>90</y>
+         <width>81</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Bar:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QDoubleSpinBox" name="maxVol">
+       <property name="geometry">
+        <rect>
+         <x>180</x>
+         <y>60</y>
+         <width>71</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="accelerated">
+        <bool>false</bool>
+       </property>
+       <property name="decimals">
+        <number>2</number>
+       </property>
+       <property name="maximum">
+        <double>45.000000000000000</double>
+       </property>
+       <property name="singleStep">
+        <double>1.000000000000000</double>
+       </property>
+      </widget>
+      <widget class="QLabel" name="volLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>60</y>
+         <width>81</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Vol CO2:</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="maxLabel">
+       <property name="geometry">
+        <rect>
+         <x>180</x>
+         <y>120</y>
+         <width>71</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Maximum</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QDoubleSpinBox" name="minVol">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>60</y>
+         <width>71</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="accelerated">
+        <bool>false</bool>
+       </property>
+       <property name="decimals">
+        <number>2</number>
+       </property>
+       <property name="maximum">
+        <double>45.000000000000000</double>
+       </property>
+       <property name="singleStep">
+        <double>1.000000000000000</double>
+       </property>
+      </widget>
+      <widget class="QDoubleSpinBox" name="maxBar">
+       <property name="geometry">
+        <rect>
+         <x>180</x>
+         <y>90</y>
+         <width>71</width>
+         <height>24</height>
+        </rect>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+       <property name="buttonSymbols">
+        <enum>QAbstractSpinBox::NoButtons</enum>
+       </property>
+       <property name="accelerated">
+        <bool>false</bool>
+       </property>
+       <property name="decimals">
+        <number>2</number>
+       </property>
+       <property name="maximum">
+        <double>45.000000000000000</double>
+       </property>
+       <property name="singleStep">
+        <double>1.000000000000000</double>
+       </property>
+      </widget>
+      <widget class="QLabel" name="minLabel">
+       <property name="geometry">
+        <rect>
+         <x>100</x>
+         <y>120</y>
+         <width>71</width>
+         <height>20</height>
+        </rect>
+       </property>
+       <property name="text">
+        <string>Minimum</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+       </property>
+      </widget>
+      <widget class="QLabel" name="styleLabel">
+       <property name="geometry">
+        <rect>
+         <x>10</x>
+         <y>20</y>
+         <width>241</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>Style limits</string>
+       </property>
+       <property name="alignment">
+        <set>Qt::AlignCenter</set>
+       </property>
+      </widget>
      </widget>
      <widget class="QGroupBox" name="buttonBox">
       <property name="geometry">
--- a/ui/DetailFermenter.ui	Fri Nov 18 12:17:32 2022 +0100
+++ b/ui/DetailFermenter.ui	Fri Nov 18 16:57:02 2022 +0100
@@ -474,6 +474,22 @@
         <string>Choose profile:</string>
        </property>
       </widget>
+      <widget class="QLabel" name="statusLabel">
+       <property name="geometry">
+        <rect>
+         <x>410</x>
+         <y>70</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>
      <widget class="QGroupBox" name="thermoBox">
       <property name="enabled">

mercurial