src/EditProduct.cpp

changeset 527
84091b9cb800
parent 473
0d7441b39d41
child 529
7c9fb24bcc07
--- a/src/EditProduct.cpp	Sat Jun 01 21:10:54 2024 +0200
+++ b/src/EditProduct.cpp	Sat Jun 08 15:54:30 2024 +0200
@@ -70,9 +70,9 @@
 
     query.prepare("SELECT name FROM profile_water ORDER BY name");
     query.exec();
-    ui->wt_sourceEdit->addItem("");
+    ui->tw_nameEdit->addItem("");
     while (query.next()) {
-        ui->wt_sourceEdit->addItem(query.value(0).toString());
+        ui->tw_nameEdit->addItem(query.value(0).toString());
     }
 
     query.prepare("SELECT name FROM profile_mash ORDER BY name");
@@ -466,6 +466,41 @@
     ui->w2_clEdit->setValue(product->w2_chloride);
     ui->w2_so4Edit->setValue(product->w2_sulfate);
     ui->w2_phEdit->setValue(product->w2_ph);
+
+    qDebug() << "water target" << product->tw_name;
+    if (product->tw_name != "") {
+        query.prepare("SELECT * FROM profile_water WHERE name=:water");
+        query.bindValue(":water", product->tw_name);
+        query.exec();
+        if (query.first()) {
+	    ui->tw_nameEdit->setPlaceholderText(QString("["+product->tw_name+"]"));
+	    product->tw_calcium = query.value("calcium").toDouble();
+	    product->tw_magnesium = query.value("magnesium").toDouble();
+	    product->tw_total_alkalinity = query.value("total_alkalinity").toDouble();
+	    product->tw_sodium = query.value("sodium").toDouble();
+	    product->tw_chloride = query.value("chloride").toDouble();
+	    product->tw_sulfate = query.value("sulfate").toDouble();
+	    product->tw_ph = query.value("ph").toDouble();
+	    ui->tw_hco3Edit->setValue(Utils::Bicarbonate(product->tw_total_alkalinity, product->tw_ph));
+	    ui->tw_hardnessEdit->setValue(Utils::Hardness(product->tw_calcium, product->tw_magnesium));
+	    ui->tw_raEdit->setValue(Utils::ResidualAlkalinity(product->tw_total_alkalinity, product->tw_calcium, product->tw_magnesium));
+	} else {
+	    product->tw_calcium = product->tw_magnesium = product->tw_total_alkalinity = 0;
+	    product->tw_sodium = product->tw_chloride = product->tw_sulfate = 0;
+	    product->tw_ph = 7;
+	    ui->tw_hco3Edit->setValue(0);
+	    ui->tw_hardnessEdit->setValue(0);
+	    ui->tw_raEdit->setValue(0);
+	}
+    }
+    ui->tw_caEdit->setValue(product->tw_calcium);
+    ui->tw_mgEdit->setValue(product->tw_magnesium);
+    ui->tw_caco3Edit->setValue(product->tw_total_alkalinity);
+    ui->tw_naEdit->setValue(product->tw_sodium);
+    ui->tw_clEdit->setValue(product->tw_chloride);
+    ui->tw_so4Edit->setValue(product->tw_sulfate);
+    ui->tw_phEdit->setValue(product->tw_ph);
+
     ui->mw_autoEdit->setChecked(product->calc_acid);
     ui->mw_phEdit->setReadOnly(! product->calc_acid);
     ui->mw_phEdit->setButtonSymbols(product->calc_acid ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons);
@@ -481,6 +516,80 @@
     ui->sp_acidpercEdit->setValue(product->sparge_acid_perc);
     check_waters();
 
+    /*
+     * At this point, see if we must upgrade the whole water part.
+     * Old is separated brew and sparge water.
+     * New is total water and divide into brew/sparge/spare water.
+     * Calculate brewing salts on the total.
+     */
+    if (product->sparge_source != 2) {
+	qDebug() << "== Water settings upgrade ==";
+	qDebug() << " w1" << product->w1_amount << "w2" << product->w2_amount << "wg" << product->wg_amount << "sp" << product->sparge_volume << "se" << product->brew_sparge_est;
+	qDebug() << " HLT " << product->eq_HLT_volume << " deadspace" << product->eq_HLT_deadspace;
+	double infused = 0;
+	for (int i = 0; i < product->mashs.size(); i++) {
+	    if (product->mashs.at(i).step_type == 0) { // Infusion
+		infused += product->mashs.at(i).step_infuse_amount;
+	    }
+	}
+	qDebug() << " mash infusion" << infused;
+/*
+	double bs_cacl2 = 0, ss_cacl2 = 0;
+	double bs_caso4 = 0, ss_caso4 = 0;
+	double bs_mgso4 = 0, ss_mgso4 = 0;
+	double bs_nacl = 0, ss_nacl = 0;
+	double bs_mgcl2 = 0, ss_mgcl2 = 0;
+	double bs_nahco3 = 0;
+	double bs_caco3 = 0;
+
+	for (int i = 0; i < product->miscs.size(); i++) {
+	    if (product->miscs.at(i).type == MISC_TYPES_WATER_AGENT && product->miscs.at(i).use_use == MISC_USES_MASH) {
+		if (product->miscs.at(i).name == "CaCl2") {
+		    bs_cacl2 = product->miscs.at(i).amount;
+            	} else if (product->miscs.at(i).name == "CaSO4") {
+                    bs_caso4 = product->miscs.at(i).amount;
+            	} else if (product->miscs.at(i).name == "MgSO4") {
+                    bs_mgso4 = product->miscs.at(i).amount;
+            	} else if (product->miscs.at(i).name == "NaCl") {
+                    bs_nacl = product->miscs.at(i).amount;
+            	} else if (product->miscs.at(i).name == "MgCl2") {
+                    bs_mgcl2 = product->miscs.at(i).amount;
+            	} else if (product->miscs.at(i).name == "NaHCO3") {
+                    bs_nahco3 = product->miscs.at(i).amount;
+            	} else if (product->miscs.at(i).name == "CaCO3") {
+		    bs_caco3 = product->miscs.at(i).amount;
+	    	}
+	    } else if (product->miscs.at(i).type == MISC_TYPES_WATER_AGENT && product->miscs.at(i).use_use == MISC_USES_SPARGE) {
+		if (product->miscs.at(i).name == "CaCl2") {
+                    ss_cacl2 = product->miscs.at(i).amount;
+                } else if (product->miscs.at(i).name == "CaSO4") {
+                    ss_caso4 = product->miscs.at(i).amount;
+                } else if (product->miscs.at(i).name == "MgSO4") {
+                    ss_mgso4 = product->miscs.at(i).amount;
+                } else if (product->miscs.at(i).name == "NaCl") {
+                    ss_nacl = product->miscs.at(i).amount;
+                } else if (product->miscs.at(i).name == "MgCl2") {
+                    ss_mgcl2 = product->miscs.at(i).amount;
+                }
+	    }
+	}
+	if ((bs_cacl2 + ss_cacl2) > 0)
+	    qDebug() << " CaCl2" << bs_cacl2 << ss_cacl2;
+	if ((bs_caso4 + ss_caso4) > 0)
+	    qDebug() << " CaSO4" << bs_caso4 << ss_caso4;
+	if ((bs_mgso4 + ss_mgso4) > 0)
+	    qDebug() << " MgSO4" << bs_mgso4 << ss_mgso4;
+	if ((bs_nacl + ss_nacl) > 0)
+            qDebug() << " NaCl" << bs_nacl << ss_nacl;
+	if ((bs_mgcl2 + ss_mgcl2) > 0)
+            qDebug() << " MgCl2" << bs_mgcl2 << ss_mgcl2;
+	if (bs_nahco3 > 0)
+	    qDebug() << " NaHCO3" << bs_nahco3;
+	if (bs_caco3 > 0)
+	    qDebug() << " CaCO3" << bs_caco3;
+*/
+    }
+
     // Tab brewday.
     updateBrewday();
     ui->brew_mashphEdit->setValue(product->brew_mash_ph);
@@ -655,7 +764,7 @@
     connect(ui->mw_phEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::mw_ph_changed);
     connect(ui->mw_acidvolEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::mw_acid_changed);
     connect(ui->mw_acidPick, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::mw_type_changed);
-    connect(ui->wt_sourceEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::wt_target_changed);
+    connect(ui->tw_nameEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::wt_target_changed);
     connect(ui->w1_nameEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::w1_name_changed);
     connect(ui->w2_nameEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::w2_name_changed);
     connect(ui->w2_volEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::w2_volume_changed);
@@ -664,6 +773,8 @@
     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);
     connect(ui->sp_acidvolEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::sp_acid_changed);
+    connect(ui->waterAdjust, &QPushButton::toggled, this, &EditProduct::waterAdjust_Show);
+    connect(ui->wx_Select, &QPushButton::toggled, this, &EditProduct::waterTreated_Show);
 
     /* All signals from tab Brewday */
     calcEfficiencyBeforeBoil();

mercurial