Added brewday boil box. The setLocked function changed into setStage. Fixed bug that resetted the efficiency to the equipment default.

Sun, 01 May 2022 16:27:00 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sun, 01 May 2022 16:27:00 +0200
changeset 184
da148d6b4c95
parent 183
bce87b8b604b
child 185
405bb68c1ea4

Added brewday boil box. The setLocked function changed into setStage. Fixed bug that resetted the efficiency to the equipment default.

src/EditProduct.cpp file | annotate | diff | comparison | revisions
src/EditProduct.h file | annotate | diff | comparison | revisions
src/EditProductTab1.cpp file | annotate | diff | comparison | revisions
src/EditProductTab2.cpp file | annotate | diff | comparison | revisions
src/EditProductTab3.cpp file | annotate | diff | comparison | revisions
ui/EditProduct.ui file | annotate | diff | comparison | revisions
--- a/src/EditProduct.cpp	Sun May 01 11:38:53 2022 +0200
+++ b/src/EditProduct.cpp	Sun May 01 16:27:00 2022 +0200
@@ -730,7 +730,6 @@
     ui->nameEdit->setText(product->name);
     ui->codeEdit->setText(product->code);
     ui->birthEdit->setText(product->birth.toString("dd MMM yyyy"));
-    ui->stageEdit->setText(prod_stages[product->stage]);
     ui->notesEdit->setPlainText(product->notes);
     ui->typeEdit->setCurrentIndex(product->type);
     ui->batch_sizeEdit->setValue(product->batch_size);
@@ -909,12 +908,23 @@
     ui->brew_mashsgEdit->setValue(product->brew_mash_sg);
     ui->brew_mashsgShow->setValue(0);
     ui->brew_masheffShow->setValue(product->brew_mash_efficiency);
-
     ui->brew_spargetempShow->setValue(product->sparge_temp);
     ui->brew_spargevolShow->setValue(product->sparge_volume);
     ui->brew_spargeestShow->setValue(product->brew_sparge_est);
     ui->brew_spargephEdit->setValue(product->brew_sparge_ph);
 
+    ui->brew_boilBox->setTitle(tr("Boiling %1 minutes").arg(product->boil_time));
+    ui->brew_preboilphEdit->setValue(product->brew_preboil_ph);
+    ui->brew_preboilsgEdit->setValue(product->brew_preboil_sg);
+    ui->brew_preboilvolEdit->setValue(product->brew_preboil_volume);
+    ui->brew_preboilvolShow->setValue(product->boil_size * 1.04);
+    ui->brew_preboileffShow->setValue(product->brew_preboil_efficiency);
+    ui->brew_aboilphEdit->setValue(product->brew_aboil_ph);
+    ui->brew_aboilsgEdit->setValue(product->brew_aboil_sg);
+    ui->brew_aboilvolEdit->setValue(product->brew_aboil_volume);
+    ui->brew_aboilvolShow->setValue(product->batch_size * 1.04);
+    ui->brew_aboileffShow->setValue(product->brew_aboil_efficiency);
+
     // Tab fermentation.
 
     // Tab packaging.
@@ -984,7 +994,7 @@
     connect(ui->sp_acidtypeEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::sp_type_changed);
     connect(ui->sp_phEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::sp_ph_changed);
 
-    setLocked(product->locked);
+    setStage();
 
     ui->saveButton->setEnabled(false);
     ui->deleteButton->setEnabled((id >= 0 && ! product->locked) ? true:false);
@@ -1257,15 +1267,15 @@
 	query.bindValue(":brew_whirlpool7", round(product->brew_whirlpool7));
 	query.bindValue(":brew_whirlpool6", round(product->brew_whirlpool6));
 	query.bindValue(":brew_whirlpool2", round(product->brew_whirlpool2));
-	query.bindValue(":brew_fermenter_volume", round(product->brew_aboil_efficiency * 10) / 10);
-	query.bindValue(":brew_fermenter_extrawater", round(product->brew_aboil_efficiency * 10) / 10);
-	query.bindValue(":brew_fermenter_tcloss", round(product->brew_aboil_efficiency * 10) / 10);
+	query.bindValue(":brew_fermenter_volume", round(product->brew_fermenter_volume * 10) / 10);
+	query.bindValue(":brew_fermenter_extrawater", round(product->brew_fermenter_extrawater * 10) / 10);
+	query.bindValue(":brew_fermenter_tcloss", round(product->brew_fermenter_tcloss * 10) / 10);
 	query.bindValue(":brew_aeration_time", round(product->brew_aeration_time));
-	query.bindValue(":brew_aeration_speed", round(product->brew_aboil_efficiency * 10) / 10);
+	query.bindValue(":brew_aeration_speed", round(product->brew_aeration_speed * 10) / 10);
 	query.bindValue(":brew_aeration_type", product->brew_aeration_type);
-	query.bindValue(":brew_fermenter_sg", round(product->brew_aboil_efficiency * 1000) / 1000);
-	query.bindValue(":brew_fermenter_ibu", round(product->brew_aboil_efficiency * 10) / 10);
-	query.bindValue(":brew_fermenter_color", round(product->brew_aboil_efficiency * 10) / 10);
+	query.bindValue(":brew_fermenter_sg", round(product->brew_fermenter_sg * 1000) / 1000);
+	query.bindValue(":brew_fermenter_ibu", round(product->brew_fermenter_ibu * 10) / 10);
+	query.bindValue(":brew_fermenter_color", round(product->brew_fermenter_color * 10) / 10);
 	query.bindValue(":brew_date_end", product->brew_date_end);
 	query.bindValue(":og", round(product->og * 1000) / 1000);
 	query.bindValue(":fg", round(product->fg * 1000) / 1000);
--- a/src/EditProduct.h	Sun May 01 11:38:53 2022 +0200
+++ b/src/EditProduct.h	Sun May 01 16:27:00 2022 +0200
@@ -159,7 +159,7 @@
     static bool yeast_sort_test(const Yeasts &D1, const Yeasts &D2);
     void WindowTitle();
     void showEquipment();
-    void setLocked(bool val);
+    void setStage();
     void brewing_salt_sub(QString salt, double val);
     void set_brewing_salt(QString salt, double val);
     void calcFermentables();
--- a/src/EditProductTab1.cpp	Sun May 01 11:38:53 2022 +0200
+++ b/src/EditProductTab1.cpp	Sun May 01 16:27:00 2022 +0200
@@ -132,7 +132,9 @@
     double new_evap = (0.1 * product->batch_size) * val / 60.0;
     product->boil_size = product->batch_size + new_evap;
     product->boil_time = val;
+    ui->brew_boilBox->setTitle(tr("Boiling %1 minutes").arg(product->boil_time));
     ui->boil_sizeEdit->setValue(product->boil_size);
+    ui->brew_preboilvolShow->setValue(product->boil_size * 1.04);
     calcFermentables();
     calcIBUs();
     is_changed();
@@ -147,8 +149,10 @@
     product->boil_size = val + evap;
     double factor = val / product->batch_size;
     ui->boil_sizeEdit->setValue(product->boil_size);
+    ui->brew_preboilvolShow->setValue(product->boil_size * 1.04);
     product->sparge_volume *= factor;
     ui->sp_volEdit->setValue(product->sparge_volume);
+    ui->brew_spargevolShow->setValue(product->sparge_volume);
     product->batch_size = val;
     calcFermentablesFromOG(product->est_og);	// Keep the OG
     adjustWaters(factor);
@@ -176,81 +180,91 @@
 {
     qDebug() << "locked_changed" << val;
 
+    if (product->stage < PROD_STAGE_READY)
+	return;
+
     product->locked = val;
-    setLocked(val);
+    product->stage = val ? PROD_STAGE_CLOSED : PROD_STAGE_READY;
+    setStage();
     is_changed();
 }
 
 
-void EditProduct::setLocked(bool val)
+void EditProduct::setStage()
 {
+    int	 stage = product->stage;
+    bool locked = product->locked;
+
+    ui->stageEdit->setText(prod_stages[stage]);
+
     /* Tab 1, generic */
-    ui->typeEdit->setDisabled(val);
-    ui->color_methodEdit->setDisabled(val);
-    ui->ibu_methodEdit->setDisabled(val);
-    ui->beerstyleEdit->setDisabled(val);
-    ui->nameEdit->setReadOnly(val);
-    ui->notesEdit->setReadOnly(val);
-    ui->batch_sizeEdit->setReadOnly(val);
-    ui->batch_sizeEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->boil_sizeEdit->setReadOnly(val);
-    ui->boil_sizeEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->boil_timeEdit->setReadOnly(val);
-    ui->boil_timeEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->efficiencyEdit->setReadOnly(val);
-    ui->efficiencyEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->est_ogEdit->setReadOnly(val);
-    ui->est_ogEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->typeEdit->setDisabled(stage > PROD_STAGE_WAIT);
+    ui->color_methodEdit->setDisabled(locked);
+    ui->ibu_methodEdit->setDisabled(locked);
+    ui->beerstyleEdit->setDisabled(stage > PROD_STAGE_WAIT);
+    ui->nameEdit->setReadOnly(stage > PROD_STAGE_WAIT);
+    ui->codeEdit->setReadOnly(stage > PROD_STAGE_WAIT);
+    ui->notesEdit->setReadOnly(locked);
+    ui->batch_sizeEdit->setReadOnly(stage > PROD_STAGE_WAIT);
+    ui->batch_sizeEdit->setButtonSymbols((stage > PROD_STAGE_WAIT) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->boil_sizeEdit->setReadOnly(stage > PROD_STAGE_WAIT);
+    ui->boil_sizeEdit->setButtonSymbols((stage > PROD_STAGE_WAIT) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->boil_timeEdit->setReadOnly(stage > PROD_STAGE_WAIT);
+    ui->boil_timeEdit->setButtonSymbols((stage > PROD_STAGE_WAIT) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->efficiencyEdit->setReadOnly(stage > PROD_STAGE_WAIT);
+    ui->efficiencyEdit->setButtonSymbols((stage > PROD_STAGE_WAIT) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->est_ogEdit->setReadOnly(stage > PROD_STAGE_WAIT);
+    ui->est_ogEdit->setButtonSymbols((stage > PROD_STAGE_WAIT) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
 
     /* Tab 2, fermentables */
-    ui->est_og2Edit->setReadOnly(val);
-    ui->est_og2Edit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->addFermentable->setEnabled(! val);
+    ui->est_og2Edit->setReadOnly(stage > PROD_STAGE_WAIT);
+    ui->est_og2Edit->setButtonSymbols((stage > PROD_STAGE_WAIT) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->addFermentable->setEnabled(stage <= PROD_STAGE_PACKAGE);
 
     /* Tab 3, hops */
-    ui->addHop->setEnabled(! val);
+    ui->addHop->setEnabled(stage <= PROD_STAGE_PACKAGE);
 
     /* Tab 4, miscs */
-    ui->addMisc->setEnabled(! val);
+    ui->addMisc->setEnabled(stage <= PROD_STAGE_PACKAGE);
 
     /* Tab 5, yeasts */
-    ui->addYeast->setEnabled(! val);
+    ui->addYeast->setEnabled(stage <= PROD_STAGE_PACKAGE);
 
     /* Tab 6, mash */
-    ui->addMash->setEnabled(! val);
-    ui->mash_nameEdit->setReadOnly(val);
-    ui->mash_pickEdit->setDisabled(val);
+    ui->addMash->setEnabled(stage <= PROD_STAGE_BREW);
+    ui->mash_nameEdit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->mash_pickEdit->setDisabled(stage > PROD_STAGE_BREW);
 
     /* Tab 7, water */
-    ui->sp_sourceEdit->setDisabled(val);
-    ui->wt_sourceEdit->setDisabled(val);
-    ui->w1_nameEdit->setDisabled(val);
-    ui->w2_nameEdit->setDisabled(val);
-    ui->mw_acidPick->setDisabled(val);
-    ui->sp_acidtypeEdit->setDisabled(val);
-    ui->w2_volEdit->setReadOnly(val);
-    ui->w2_volEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->sp_phEdit->setReadOnly(val);
-    ui->sp_phEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->sp_tempEdit->setReadOnly(val);
-    ui->sp_tempEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->sp_volEdit->setReadOnly(val);
-    ui->sp_volEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->bs_cacl2Edit->setReadOnly(val);
-    ui->bs_cacl2Edit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->bs_caso4Edit->setReadOnly(val);
-    ui->bs_caso4Edit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->bs_mgso4Edit->setReadOnly(val);
-    ui->bs_mgso4Edit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->bs_naclEdit->setReadOnly(val);
-    ui->bs_naclEdit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->bs_mgcl2Edit->setReadOnly(val);
-    ui->bs_mgcl2Edit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->bs_nahco3Edit->setReadOnly(val);
-    ui->bs_nahco3Edit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    ui->bs_caco3Edit->setReadOnly(val);
-    ui->bs_caco3Edit->setButtonSymbols(val ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
-    if (val) {
+    ui->sp_sourceEdit->setDisabled(stage > PROD_STAGE_BREW);
+    ui->wt_sourceEdit->setDisabled(stage > PROD_STAGE_BREW);
+    ui->w1_nameEdit->setDisabled(stage > PROD_STAGE_BREW);
+    ui->w2_nameEdit->setDisabled(stage > PROD_STAGE_BREW);
+    ui->mw_acidPick->setDisabled(stage > PROD_STAGE_BREW);
+    ui->sp_acidtypeEdit->setDisabled(stage > PROD_STAGE_BREW);
+    ui->w2_volEdit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->w2_volEdit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->sp_phEdit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->sp_phEdit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->sp_tempEdit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->sp_tempEdit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->sp_volEdit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->sp_volEdit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->bs_cacl2Edit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->bs_cacl2Edit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->bs_caso4Edit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->bs_caso4Edit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->bs_mgso4Edit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->bs_mgso4Edit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->bs_naclEdit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->bs_naclEdit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->bs_mgcl2Edit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->bs_mgcl2Edit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->bs_nahco3Edit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->bs_nahco3Edit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    ui->bs_caco3Edit->setReadOnly(stage > PROD_STAGE_BREW);
+    ui->bs_caco3Edit->setButtonSymbols((stage > PROD_STAGE_BREW) ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
+    if (stage > PROD_STAGE_BREW) {
     	ui->mw_phEdit->setReadOnly(true);
 	ui->mw_phEdit->setButtonSymbols(QAbstractSpinBox::NoButtons);
 	ui->mw_acidvolEdit->setReadOnly(true);
@@ -261,7 +275,7 @@
     	ui->mw_acidvolEdit->setReadOnly(product->calc_acid);
     	ui->mw_acidvolEdit->setButtonSymbols(product->calc_acid ? QAbstractSpinBox::NoButtons : QAbstractSpinBox::UpDownArrows);
     }
-    ui->mw_autoEdit->setDisabled(val);
+    ui->mw_autoEdit->setDisabled(stage > PROD_STAGE_BREW);
 }
 
 
--- a/src/EditProductTab2.cpp	Sun May 01 11:38:53 2022 +0200
+++ b/src/EditProductTab2.cpp	Sun May 01 16:27:00 2022 +0200
@@ -41,7 +41,7 @@
     ui->topup_kettleEdit->setValue(product->eq_top_up_kettle);
     ui->hop_utilizationEdit->setValue(product->eq_hop_utilization);
     ui->eqbatch_sizeEdit->setValue(product->eq_batch_size);
-    ui->efficiencyEdit->setValue(product->eq_efficiency);
+    ui->eq_efficiencyEdit->setValue(product->eq_efficiency);
 
     /* Chilling */
     ui->trub_chillerlossEdit->setValue(product->eq_trub_chiller_loss);
--- a/src/EditProductTab3.cpp	Sun May 01 11:38:53 2022 +0200
+++ b/src/EditProductTab3.cpp	Sun May 01 16:27:00 2022 +0200
@@ -235,7 +235,7 @@
 		mvol += product->fermentables.at(i).f_amount * product->fermentables.at(i).f_moisture / 100;
 		s += d;
 	    }
-	    d = ui->efficiencyEdit->value() / 100 * d;
+	    d = product->efficiency / 100 * d;
 	    sugarsm += d;
 	    product->mashs_kg += product->fermentables.at(i).f_amount;
 	}
@@ -275,7 +275,11 @@
     ui->est_og4Edit->setValue(og);
     ui->est_ogShow->setValue(og);
 
+    product->est_og3 = Utils::estimate_sg(sugarsf, product->batch_size);
+    ui->brew_aboilsgShow->setValue(product->est_og3);
+
     product->preboil_sg = Utils::estimate_sg(sugarsm, product->boil_size);
+    ui->brew_preboilsgShow->setValue(product->preboil_sg);
     qDebug() << "  preboil SG" << product->preboil_sg;
 
     /*
--- a/ui/EditProduct.ui	Sun May 01 11:38:53 2022 +0200
+++ b/ui/EditProduct.ui	Sun May 01 16:27:00 2022 +0200
@@ -6377,6 +6377,469 @@
          </property>
         </widget>
        </widget>
+       <widget class="QGroupBox" name="brew_boilBox">
+        <property name="geometry">
+         <rect>
+          <x>370</x>
+          <y>40</y>
+          <width>721</width>
+          <height>151</height>
+         </rect>
+        </property>
+        <property name="title">
+         <string>Boiling</string>
+        </property>
+        <widget class="QLabel" name="brew_preboilphLabel">
+         <property name="geometry">
+          <rect>
+           <x>10</x>
+           <y>20</y>
+           <width>131</width>
+           <height>20</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>Pre boil pH:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+        <widget class="QLabel" name="brew_preboilsgLabel">
+         <property name="geometry">
+          <rect>
+           <x>10</x>
+           <y>50</y>
+           <width>131</width>
+           <height>20</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>Pre boil SG:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+        <widget class="QLabel" name="brew_preboilvolLabel">
+         <property name="geometry">
+          <rect>
+           <x>10</x>
+           <y>80</y>
+           <width>131</width>
+           <height>20</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>Pre boil vol@100°C:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+        <widget class="QLabel" name="brew_preboileffLabel">
+         <property name="geometry">
+          <rect>
+           <x>10</x>
+           <y>110</y>
+           <width>131</width>
+           <height>20</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>Pre boil efficiency:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_preboilphEdit">
+         <property name="geometry">
+          <rect>
+           <x>150</x>
+           <y>20</y>
+           <width>81</width>
+           <height>24</height>
+          </rect>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="accelerated">
+          <bool>true</bool>
+         </property>
+         <property name="maximum">
+          <double>14.000000000000000</double>
+         </property>
+         <property name="singleStep">
+          <double>0.100000000000000</double>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_preboilsgEdit">
+         <property name="geometry">
+          <rect>
+           <x>150</x>
+           <y>50</y>
+           <width>81</width>
+           <height>24</height>
+          </rect>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="accelerated">
+          <bool>true</bool>
+         </property>
+         <property name="decimals">
+          <number>3</number>
+         </property>
+         <property name="singleStep">
+          <double>0.001000000000000</double>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_preboilsgShow">
+         <property name="geometry">
+          <rect>
+           <x>240</x>
+           <y>50</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="decimals">
+          <number>3</number>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_preboileffShow">
+         <property name="geometry">
+          <rect>
+           <x>150</x>
+           <y>110</y>
+           <width>81</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="suffix">
+          <string> %</string>
+         </property>
+         <property name="decimals">
+          <number>1</number>
+         </property>
+         <property name="maximum">
+          <double>200.000000000000000</double>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_preboilvolEdit">
+         <property name="geometry">
+          <rect>
+           <x>150</x>
+           <y>80</y>
+           <width>81</width>
+           <height>24</height>
+          </rect>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="accelerated">
+          <bool>true</bool>
+         </property>
+         <property name="decimals">
+          <number>1</number>
+         </property>
+         <property name="maximum">
+          <double>100000.000000000000000</double>
+         </property>
+         <property name="singleStep">
+          <double>1.000000000000000</double>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_preboilvolShow">
+         <property name="geometry">
+          <rect>
+           <x>240</x>
+           <y>80</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="decimals">
+          <number>1</number>
+         </property>
+         <property name="maximum">
+          <double>100000.000000000000000</double>
+         </property>
+        </widget>
+        <widget class="QToolButton" name="brew_preboilButton">
+         <property name="geometry">
+          <rect>
+           <x>320</x>
+           <y>80</y>
+           <width>28</width>
+           <height>22</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc">
+           <normaloff>:/icons/silk/pencil.png</normaloff>:/icons/silk/pencil.png</iconset>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_aboilsgEdit">
+         <property name="geometry">
+          <rect>
+           <x>500</x>
+           <y>50</y>
+           <width>81</width>
+           <height>24</height>
+          </rect>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="accelerated">
+          <bool>true</bool>
+         </property>
+         <property name="decimals">
+          <number>3</number>
+         </property>
+         <property name="singleStep">
+          <double>0.001000000000000</double>
+         </property>
+        </widget>
+        <widget class="QToolButton" name="brew_aboilButton">
+         <property name="geometry">
+          <rect>
+           <x>670</x>
+           <y>80</y>
+           <width>28</width>
+           <height>22</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>...</string>
+         </property>
+         <property name="icon">
+          <iconset resource="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc">
+           <normaloff>:/icons/silk/pencil.png</normaloff>:/icons/silk/pencil.png</iconset>
+         </property>
+        </widget>
+        <widget class="QLabel" name="brew_aboilsgLabel">
+         <property name="geometry">
+          <rect>
+           <x>360</x>
+           <y>50</y>
+           <width>131</width>
+           <height>20</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>After boil SG:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_aboilvolEdit">
+         <property name="geometry">
+          <rect>
+           <x>500</x>
+           <y>80</y>
+           <width>81</width>
+           <height>24</height>
+          </rect>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="accelerated">
+          <bool>true</bool>
+         </property>
+         <property name="decimals">
+          <number>1</number>
+         </property>
+         <property name="maximum">
+          <double>100000.000000000000000</double>
+         </property>
+         <property name="singleStep">
+          <double>1.000000000000000</double>
+         </property>
+        </widget>
+        <widget class="QLabel" name="brew_aboilvolLabel">
+         <property name="geometry">
+          <rect>
+           <x>360</x>
+           <y>80</y>
+           <width>131</width>
+           <height>20</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>After boil vol@100°C:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_aboilphEdit">
+         <property name="geometry">
+          <rect>
+           <x>500</x>
+           <y>20</y>
+           <width>81</width>
+           <height>24</height>
+          </rect>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+         <property name="accelerated">
+          <bool>true</bool>
+         </property>
+         <property name="maximum">
+          <double>14.000000000000000</double>
+         </property>
+         <property name="singleStep">
+          <double>0.100000000000000</double>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_aboilsgShow">
+         <property name="geometry">
+          <rect>
+           <x>590</x>
+           <y>50</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="decimals">
+          <number>3</number>
+         </property>
+        </widget>
+        <widget class="QLabel" name="brew_aboileffLabel">
+         <property name="geometry">
+          <rect>
+           <x>360</x>
+           <y>110</y>
+           <width>131</width>
+           <height>20</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>After boil efficiency:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_aboileffShow">
+         <property name="geometry">
+          <rect>
+           <x>500</x>
+           <y>110</y>
+           <width>81</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="suffix">
+          <string> %</string>
+         </property>
+         <property name="decimals">
+          <number>1</number>
+         </property>
+         <property name="maximum">
+          <double>200.000000000000000</double>
+         </property>
+        </widget>
+        <widget class="QDoubleSpinBox" name="brew_aboilvolShow">
+         <property name="geometry">
+          <rect>
+           <x>590</x>
+           <y>80</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="decimals">
+          <number>1</number>
+         </property>
+         <property name="maximum">
+          <double>100000.000000000000000</double>
+         </property>
+        </widget>
+        <widget class="QLabel" name="brew_aboilphLabel">
+         <property name="geometry">
+          <rect>
+           <x>360</x>
+           <y>20</y>
+           <width>131</width>
+           <height>20</height>
+          </rect>
+         </property>
+         <property name="text">
+          <string>After boil pH:</string>
+         </property>
+         <property name="alignment">
+          <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+         </property>
+        </widget>
+       </widget>
       </widget>
       <widget class="QWidget" name="ferment">
        <attribute name="icon">

mercurial