264 |
264 |
265 bicarbonate = bicarbonate - protonDeficit * frac / liters; |
265 bicarbonate = bicarbonate - protonDeficit * frac / liters; |
266 total_alkalinity = bicarbonate * 50 / 61; |
266 total_alkalinity = bicarbonate * 50 / 61; |
267 } |
267 } |
268 ph = TpH; |
268 ph = TpH; |
|
269 this->ignoreChanges = true; |
269 ui->wb_phEdit->setValue(ph); |
270 ui->wb_phEdit->setValue(ph); |
|
271 this->ignoreChanges = false; |
270 recipe->mash_ph = ph; |
272 recipe->mash_ph = ph; |
271 } else { // Manual |
273 } else { // Manual |
272 /* |
274 /* |
273 * Manual adjust acid, calculate resulting pH. |
275 * Manual adjust acid, calculate resulting pH. |
274 */ |
276 */ |
302 //qDebug() << " n:" << n << "pd:" << pd << "protonDeficit:" << protonDeficit << "frac:" << frac << "pHa:" << pHa; |
304 //qDebug() << " n:" << n << "pd:" << pd << "protonDeficit:" << protonDeficit << "frac:" << frac << "pHa:" << pHa; |
303 |
305 |
304 bicarbonate = wg_bicarbonate - protonDeficit * frac / liters; |
306 bicarbonate = wg_bicarbonate - protonDeficit * frac / liters; |
305 total_alkalinity = bicarbonate * 50 / 61; |
307 total_alkalinity = bicarbonate * 50 / 61; |
306 ph = pHa; |
308 ph = pHa; |
|
309 this->ignoreChanges = true; |
307 ui->wb_phEdit->setValue(ph); |
310 ui->wb_phEdit->setValue(ph); |
308 ui->mw_phEdit->setValue(ph); |
311 ui->mw_phEdit->setValue(ph); |
|
312 this->ignoreChanges = false; |
309 recipe->mash_ph = ph; |
313 recipe->mash_ph = ph; |
310 } |
314 } |
311 |
315 |
312 if ((AT == 3) && (liters > 0)) { // Sulfuctic / Zwavelzuur |
316 if ((AT == 3) && (liters > 0)) { // Sulfuctic / Zwavelzuur |
313 RA = ui->bs_caso4Edit->value() * MMSO4 / MMCaSO4 + ui->bs_mgso4Edit->value() * MMSO4 / MMMgSO4 + Acidmg / 1000 * MMSO4 / (MMSO4 + 2); |
317 RA = ui->bs_caso4Edit->value() * MMSO4 / MMCaSO4 + ui->bs_mgso4Edit->value() * MMSO4 / MMMgSO4 + Acidmg / 1000 * MMSO4 / (MMSO4 + 2); |
408 double BUGU = GetBUGU(); |
412 double BUGU = GetBUGU(); |
409 return (-1.2 * BUGU + 1.4); |
413 return (-1.2 * BUGU + 1.4); |
410 } |
414 } |
411 |
415 |
412 |
416 |
413 void EditRecipe::on_calc_acid_clicked() |
417 void EditRecipe::mw_calc_acid_clicked() |
414 { |
418 { |
415 recipe->calc_acid = ! recipe->calc_acid; |
419 recipe->calc_acid = ! recipe->calc_acid; |
416 ui->mw_autoEdit->setChecked(recipe->calc_acid); |
420 ui->mw_autoEdit->setChecked(recipe->calc_acid); |
417 ui->mw_phEdit->setReadOnly(! recipe->calc_acid); |
421 ui->mw_phEdit->setReadOnly(! recipe->calc_acid); |
418 ui->mw_phEdit->setButtonSymbols(recipe->calc_acid ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); |
422 ui->mw_phEdit->setButtonSymbols(recipe->calc_acid ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); |
421 is_changed(); |
425 is_changed(); |
422 calcWater(); |
426 calcWater(); |
423 } |
427 } |
424 |
428 |
425 |
429 |
426 void EditRecipe::on_mw_ph_changed(double val) |
430 void EditRecipe::mw_ph_changed(double val) |
427 { |
431 { |
428 if (! recipe->calc_acid) |
432 if (! recipe->calc_acid) |
429 return; |
433 return; |
430 |
434 |
431 qDebug() << "on_mw_ph_changed" << val; |
435 if (recipe->mash_ph != val) { |
432 recipe->mash_ph = val; |
436 qDebug() << "mw_ph_changed" << val << recipe->mash_ph; |
433 is_changed(); |
437 recipe->mash_ph = val; |
434 calcWater(); |
438 is_changed(); |
435 } |
439 calcWater(); |
436 |
440 } |
437 |
441 } |
438 void EditRecipe::on_mw_acid_changed(double val) |
442 |
|
443 |
|
444 void EditRecipe::mw_acid_changed(double val) |
439 { |
445 { |
440 if (recipe->calc_acid) |
446 if (recipe->calc_acid) |
441 return; |
447 return; |
442 |
448 |
443 qDebug() << "on_mw_acid_changed" << val; |
449 qDebug() << "on_mw_acid_changed" << val; |
444 QString w = my_acids[recipe->wa_acid_name].name_en + ' ' + my_acids[recipe->wa_acid_name].name_nl; |
450 QString w = my_acids[recipe->wa_acid_name].name_en + ' ' + my_acids[recipe->wa_acid_name].name_nl; |
445 set_brewing_salt(w, val); |
451 set_brewing_salt(w, val); |
446 } |
452 } |
447 |
453 |
448 |
454 |
449 void EditRecipe::on_mw_type_changed(int val) |
455 void EditRecipe::mw_type_changed(int val) |
450 { |
456 { |
451 if (val == recipe->wa_acid_name) |
457 if (val == recipe->wa_acid_name) |
452 return; |
458 return; |
453 |
459 |
454 qDebug() << "on_mw_type_changed" << val << "old" << recipe->wa_acid_name; |
460 qDebug() << "on_mw_type_changed" << val << "old" << recipe->wa_acid_name; |
506 } |
512 } |
507 calcWater(); |
513 calcWater(); |
508 } |
514 } |
509 |
515 |
510 |
516 |
511 void EditRecipe::on_cacl2_changed(double val) { set_brewing_salt("CaCl2", val); } |
517 void EditRecipe::wb_cacl2_changed(double val) { set_brewing_salt("CaCl2", val); } |
512 void EditRecipe::on_caso4_changed(double val) { set_brewing_salt("CaSO4", val); } |
518 void EditRecipe::wb_caso4_changed(double val) { set_brewing_salt("CaSO4", val); } |
513 void EditRecipe::on_mgso4_changed(double val) { set_brewing_salt("MgSO4", val); } |
519 void EditRecipe::wb_mgso4_changed(double val) { set_brewing_salt("MgSO4", val); } |
514 void EditRecipe::on_nacl_changed(double val) { set_brewing_salt("NaCl", val); } |
520 void EditRecipe::wb_nacl_changed(double val) { set_brewing_salt("NaCl", val); } |
515 void EditRecipe::on_mgcl2_changed(double val) { set_brewing_salt("MgCl2", val); } |
521 void EditRecipe::wb_mgcl2_changed(double val) { set_brewing_salt("MgCl2", val); } |
516 void EditRecipe::on_nahco3_changed(double val) { set_brewing_salt("NaHCO3", val); } |
522 void EditRecipe::wb_nahco3_changed(double val) { set_brewing_salt("NaHCO3", val); } |
517 void EditRecipe::on_caco3_changed(double val) { set_brewing_salt("CaCO3", val); } |
523 void EditRecipe::wb_caco3_changed(double val) { set_brewing_salt("CaCO3", val); } |
518 |
524 |
519 |
525 |