--- 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.