diff -r 3b9abdae181e -r 84091b9cb800 src/EditProduct.cpp --- 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::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::mw_ph_changed); connect(ui->mw_acidvolEdit, QOverload::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::mw_acid_changed); connect(ui->mw_acidPick, QOverload::of(&QComboBox::currentIndexChanged), this, &EditProduct::mw_type_changed); - connect(ui->wt_sourceEdit, QOverload::of(&QComboBox::currentIndexChanged), this, &EditProduct::wt_target_changed); + connect(ui->tw_nameEdit, QOverload::of(&QComboBox::currentIndexChanged), this, &EditProduct::wt_target_changed); connect(ui->w1_nameEdit, QOverload::of(&QComboBox::currentIndexChanged), this, &EditProduct::w1_name_changed); connect(ui->w2_nameEdit, QOverload::of(&QComboBox::currentIndexChanged), this, &EditProduct::w2_name_changed); connect(ui->w2_volEdit, QOverload::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::w2_volume_changed); @@ -664,6 +773,8 @@ connect(ui->sp_acidtypeEdit, QOverload::of(&QComboBox::currentIndexChanged), this, &EditProduct::sp_type_changed); connect(ui->sp_phEdit, QOverload::of(&QDoubleSpinBox::valueChanged), this, &EditProduct::sp_ph_changed); connect(ui->sp_acidvolEdit, QOverload::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();