diff -r ba25a566b100 -r d73719fa2ebb src/EditRecipeTab7.cpp --- a/src/EditRecipeTab7.cpp Wed Apr 20 12:19:36 2022 +0200 +++ b/src/EditRecipeTab7.cpp Wed Apr 20 14:30:06 2022 +0200 @@ -479,6 +479,120 @@ void EditRecipe::w2_volume_changed(double val) { qDebug() << "w2_vol_changed" << val; + + if (recipe->w2_total_alkalinity && recipe->w2_sulfate) { + /* + * Seems a valid water, but don't go over the total. + */ + if (val < (recipe->w1_amount + recipe->w2_amount)) { + recipe->w1_amount -= val - recipe->w2_amount; + recipe->w2_amount = val; + ui->w1_volEdit->setValue(recipe->w1_amount); + } + } else { + /* + * Invalid water, block changes. + */ + recipe->w2_amount = 0; + } + ui->w2_volEdit->setValue(recipe->w2_amount); + + calcWater(); + is_changed(); +} + + +void EditRecipe::w1_name_changed(int val) +{ + QSqlQuery query; + + qDebug() << "w1_name_changed" << val; + if (val == 0) { + /* + * If no water is selected, take the default water. + */ + this->ignoreChanges = true; + val = my_default_water; + ui->w1_nameEdit->setCurrentIndex(val); + this->ignoreChanges = false; + } + + query.prepare("SELECT * FROM inventory_waters ORDER BY record"); + query.exec(); + query.first(); + for (int i = 0; i < (val - 1); i++) { + query.next(); + } + qDebug() << "set water" << query.value(1).toString(); + + recipe->w1_calcium = query.value(3).toDouble(); + recipe->w1_magnesium = query.value(8).toDouble(); + recipe->w1_total_alkalinity = query.value(11).toDouble(); + recipe->w1_sodium = query.value(7).toDouble(); + recipe->w1_chloride = query.value(6).toDouble(); + recipe->w1_sulfate = query.value(5).toDouble(); + recipe->w1_ph = query.value(9).toDouble(); + + ui->w1_caEdit->setValue(recipe->w1_calcium); + ui->w1_mgEdit->setValue(recipe->w1_magnesium); + ui->w1_hco3Edit->setValue(recipe->w1_total_alkalinity * 1.22); + ui->w1_caco3Edit->setValue(recipe->w1_total_alkalinity); + ui->w1_naEdit->setValue(recipe->w1_sodium); + ui->w1_clEdit->setValue(recipe->w1_chloride); + ui->w1_so4Edit->setValue(recipe->w1_sulfate); + ui->w1_phEdit->setValue(recipe->w1_ph); + + is_changed(); + calcWater(); +} + + +void EditRecipe::w2_name_changed(int val) +{ + QSqlQuery query; + + qDebug() << "w2_name_changed" << val; + + if (val == 0) { // Clear water 2. + recipe->w2_calcium = 0; + recipe->w2_magnesium = 0; + recipe->w2_total_alkalinity = 0; + recipe->w2_sodium = 0; + recipe->w2_chloride = 0; + recipe->w2_sulfate = 0; + recipe->w2_ph = 0; + recipe->w1_amount += recipe->w2_amount; + recipe->w2_amount = 0; + } else { + query.prepare("SELECT * FROM inventory_waters ORDER BY record"); + query.exec(); + query.first(); + for (int i = 0; i < (val - 1); i++) { + query.next(); + } + qDebug() << "set water" << query.value(1).toString(); + + recipe->w2_calcium = query.value(3).toDouble(); + recipe->w2_magnesium = query.value(8).toDouble(); + recipe->w2_total_alkalinity = query.value(11).toDouble(); + recipe->w2_sodium = query.value(7).toDouble(); + recipe->w2_chloride = query.value(6).toDouble(); + recipe->w2_sulfate = query.value(5).toDouble(); + recipe->w2_ph = query.value(9).toDouble(); + } + ui->w1_volEdit->setValue(recipe->w1_amount); + ui->w2_volEdit->setValue(recipe->w2_amount); + ui->w2_caEdit->setValue(recipe->w2_calcium); + ui->w2_mgEdit->setValue(recipe->w2_magnesium); + ui->w2_hco3Edit->setValue(recipe->w2_total_alkalinity * 1.22); + ui->w2_caco3Edit->setValue(recipe->w2_total_alkalinity); + ui->w2_naEdit->setValue(recipe->w2_sodium); + ui->w2_clEdit->setValue(recipe->w2_chloride); + ui->w2_so4Edit->setValue(recipe->w2_sulfate); + ui->w2_phEdit->setValue(recipe->w2_ph); + + is_changed(); + calcWater(); }