src/EditProductTab8.cpp

changeset 361
ec8de79f6ff6
parent 359
dfbb012c631c
child 362
6a615dbae216
--- a/src/EditProductTab8.cpp	Mon Jul 18 19:28:21 2022 +0200
+++ b/src/EditProductTab8.cpp	Tue Jul 19 11:17:39 2022 +0200
@@ -141,6 +141,52 @@
 }
 
 
+void EditProduct::setButtons(bool locked)
+{
+    if (locked) {
+       /*
+        * If the brew is done, disable the buttons and that's it.
+        */
+       ui->w1_spButton->setDisabled(true);
+       ui->w2_spButton->setDisabled(true);
+       ui->wg_spButton->setDisabled(true);
+       return;
+    }
+    ui->w1_spButton->setDisabled(false);
+
+    const QSignalBlocker blocker1(ui->w1_spButton);
+    const QSignalBlocker blocker2(ui->w2_spButton);
+    const QSignalBlocker blocker3(ui->wg_spButton);
+
+    if (product->w2_name != "") {
+       ui->w2_spButton->setDisabled(false);
+       if (product->w2_amount > 0.1 && product->w2_ph > 5) {
+           /*
+            * Water 2 is valid and used for mash, mixed is available.
+            */
+           ui->wg_spButton->setDisabled(false);
+       } else {
+           /*
+            * No mixed water for mash. We can still sparge with source 2.
+            */
+           ui->wg_spButton->setDisabled(true);
+           if (product->sparge_source == 2) {
+               /*
+                * If mixed was selected, switch to source 2.
+                */
+               product->sparge_source = 1;
+               ui->w2_spButton->setChecked(true);
+           }
+       }
+    } else {
+	ui->w2_spButton->setDisabled(true);
+        ui->wg_spButton->setDisabled(true);
+	product->sparge_source = 0; // Fallback to source 1
+        ui->w1_spButton->setChecked(true);
+    }
+}
+
+
 void EditProduct::calcWater()
 {
     double liters = 0;
@@ -429,51 +475,35 @@
 
     qDebug() << "calcSparge()";
 
-    const QSignalBlocker blocker2(ui->w1_spButton);
-    const QSignalBlocker blocker3(ui->w2_spButton);
-    const QSignalBlocker blocker4(ui->wg_spButton);
+    setButtons(product->stage > PROD_STAGE_BREW);
 
-    // Select watersource or fallback to the first source.
-    if (product->sparge_source == 1) { // Source 2
-	if (product->w2_ph > 0.0 && product->w2_amount > 0) {
-	    Source_pH = product->w2_ph;
-	    Source_alkalinity = product->w2_total_alkalinity;
-	    ui->sp_caEdit->setValue(product->w2_calcium);
-            ui->sp_mgEdit->setValue(product->w2_magnesium);
-            ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->w2_total_alkalinity, product->w2_ph));
-            ui->sp_caco3Edit->setValue(product->w2_total_alkalinity);
-            ui->sp_naEdit->setValue(product->w2_sodium);
-            ui->sp_clEdit->setValue(product->w2_chloride);
-            ui->sp_so4Edit->setValue(product->w2_sulfate);
-            ui->sp_phShow->setValue(product->w2_ph);
-            ui->sp_hardnessEdit->setValue(Utils::Hardness(product->w2_calcium, product->w2_magnesium));
-            ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->w2_total_alkalinity, product->w2_calcium, product->w2_magnesium));
-	    ui->w2_spButton->setChecked(true);
-	} else {
-	    product->sparge_source = 0; // Fallback to source 1
-	    ui->w1_spButton->setChecked(true);
-	}
-    } else if (product->sparge_source == 2) { // Mixed
-	if (product->w2_ph > 0.0 && product->w2_amount > 0) {
-	    Source_pH = product->wg_ph;
-	    Source_alkalinity = product->wg_total_alkalinity;
-	    ui->sp_caEdit->setValue(product->wg_calcium);
-	    ui->sp_mgEdit->setValue(product->wg_magnesium);
-	    ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->wg_total_alkalinity, product->wg_ph));
-	    ui->sp_caco3Edit->setValue(product->wg_total_alkalinity);
-	    ui->sp_naEdit->setValue(product->wg_sodium);
-	    ui->sp_clEdit->setValue(product->wg_chloride);
-	    ui->sp_so4Edit->setValue(product->wg_sulfate);
-	    ui->sp_phShow->setValue(product->wg_ph);
-	    ui->sp_hardnessEdit->setValue(Utils::Hardness(product->wg_calcium, product->wg_magnesium));
-	    ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->wg_total_alkalinity, product->wg_calcium, product->wg_magnesium));
-	    ui->wg_spButton->setChecked(true);
-	} else {
-	    product->sparge_source = 0; // Fallback to source 1
-	    ui->w1_spButton->setChecked(true);
-	}
-    }
-    if (product->sparge_source == 0) {
+    if (product->sparge_source == 1 && product->w2_ph > 0.0) {
+	Source_pH = product->w2_ph;
+	Source_alkalinity = product->w2_total_alkalinity;
+	ui->sp_caEdit->setValue(product->w2_calcium);
+        ui->sp_mgEdit->setValue(product->w2_magnesium);
+        ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->w2_total_alkalinity, product->w2_ph));
+        ui->sp_caco3Edit->setValue(product->w2_total_alkalinity);
+        ui->sp_naEdit->setValue(product->w2_sodium);
+        ui->sp_clEdit->setValue(product->w2_chloride);
+        ui->sp_so4Edit->setValue(product->w2_sulfate);
+        ui->sp_phShow->setValue(product->w2_ph);
+        ui->sp_hardnessEdit->setValue(Utils::Hardness(product->w2_calcium, product->w2_magnesium));
+        ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->w2_total_alkalinity, product->w2_calcium, product->w2_magnesium));
+    } else if (product->sparge_source == 2 && product->w2_ph > 0.0) {
+	Source_pH = product->wg_ph;
+	Source_alkalinity = product->wg_total_alkalinity;
+	ui->sp_caEdit->setValue(product->wg_calcium);
+	ui->sp_mgEdit->setValue(product->wg_magnesium);
+	ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->wg_total_alkalinity, product->wg_ph));
+	ui->sp_caco3Edit->setValue(product->wg_total_alkalinity);
+	ui->sp_naEdit->setValue(product->wg_sodium);
+	ui->sp_clEdit->setValue(product->wg_chloride);
+	ui->sp_so4Edit->setValue(product->wg_sulfate);
+	ui->sp_phShow->setValue(product->wg_ph);
+	ui->sp_hardnessEdit->setValue(Utils::Hardness(product->wg_calcium, product->wg_magnesium));
+	ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->wg_total_alkalinity, product->wg_calcium, product->wg_magnesium));
+    } else {
 	ui->sp_caEdit->setValue(product->w1_calcium);
 	ui->sp_mgEdit->setValue(product->w1_magnesium);
 	ui->sp_hco3Edit->setValue(Utils::Bicarbonate(product->w1_total_alkalinity, product->w1_ph));
@@ -484,7 +514,6 @@
 	ui->sp_phShow->setValue(product->w1_ph);
 	ui->sp_hardnessEdit->setValue(Utils::Hardness(product->w1_calcium, product->w1_magnesium));
 	ui->sp_raEdit->setValue(Utils::ResidualAlkalinity(product->w1_total_alkalinity, product->w1_calcium, product->w1_magnesium));
-	ui->w1_spButton->setChecked(true);
     }
     // The spargewater is set.
 

mercurial