Thu, 20 Apr 2023 17:23:44 +0200
Fixed recipe editor add yeast crash.
175
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1 | /** |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
2 | * EditProduct.cpp is part of bmsapp. |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
3 | * |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
4 | * Tab 2, equipment settings. |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
5 | * |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
6 | * bmsapp is free software: you can redistribute it and/or modify |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
7 | * it under the terms of the GNU General Public License as published by |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
8 | * the Free Software Foundation, either version 3 of the License, or |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
9 | * (at your option) any later version. |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
10 | * |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
11 | * bmsapp is distributed in the hope that it will be useful, |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
14 | * GNU General Public License for more details. |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
15 | * |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
16 | * You should have received a copy of the GNU General Public License |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
17 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
18 | */ |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
19 | |
f1ed3a2a94e9
Initial import of EditProduct, the part from EditRecipe is ported.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
20 | |
176
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
21 | void EditProduct::showEquipment() |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
22 | { |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
23 | ui->eq_nameEdit->setText(product->eq_name); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
24 | ui->eq_notesEdit->setPlainText(product->eq_notes); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
25 | |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
26 | /* Mashing */ |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
27 | ui->tun_volumeEdit->setValue(product->eq_tun_volume); |
301
fe6346211b5b
Finally the translation of string arrays is working.
Michiel Broek <mbroek@mbse.eu>
parents:
189
diff
changeset
|
28 | ui->tun_materialEdit->setText(QCoreApplication::translate("TunMaterial", g_tun_materials[product->eq_tun_material])); |
176
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
29 | ui->mash_volumeEdit->setValue(product->eq_mash_volume); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
30 | ui->mash_maxEdit->setValue(product->eq_mash_max); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
31 | |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
32 | /* Lautering */ |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
33 | ui->lauter_deadspaceEdit->setValue(product->eq_lauter_deadspace); |
423
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
34 | ui->eq_efficiencyEdit->setValue(product->eq_efficiency); |
176
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
35 | |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
36 | /* Boiling */ |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
37 | ui->kettle_volumeEdit->setValue(product->eq_kettle_volume); |
458
ac216a75ca9b
Renamed trub_chiller_loss fields to trub_loss
Michiel Broek <mbroek@mbse.eu>
parents:
454
diff
changeset
|
38 | ui->kettle_lossEdit->setValue(product->eq_trub_loss); |
176
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
39 | ui->eqboil_sizeEdit->setValue(product->eq_boil_size); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
40 | ui->evap_rateEdit->setValue(product->eq_evap_rate); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
41 | ui->eqboil_timeEdit->setValue(product->eq_boil_time); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
42 | ui->topup_kettleEdit->setValue(product->eq_top_up_kettle); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
43 | ui->eqbatch_sizeEdit->setValue(product->eq_batch_size); |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
44 | |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
45 | /* Chilling */ |
423
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
46 | ui->chiller_typeEdit->setText(QCoreApplication::translate("ChillerType", g_chiller_types[product->eq_chiller_type])); |
454
2dfead81c72f
Version 0.3.3. Removed several obsolete debug messages. IBU and Fermentation calculation debug messages are now controlled by conditional defines in global.h. In the brewday tab update the preboil and afterboil reference volumes. In the brewday tab the chiller type is a read only field directy linked to the selected equipment.
Michiel Broek <mbroek@mbse.eu>
parents:
429
diff
changeset
|
47 | ui->brew_coolwithShow->setText(QCoreApplication::translate("ChillerType", g_chiller_types[product->eq_chiller_type])); |
423
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
48 | ui->chiller_to79Edit->setValue(product->eq_chiller_to79); |
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
49 | ui->chiller_volumeEdit->setValue(product->eq_chiller_volume); |
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
50 | ui->chiller_lpmEdit->setValue(product->eq_chiller_lpm); |
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
51 | ui->chiller_lossEdit->setValue(product->eq_chiller_loss); |
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
52 | |
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
53 | /* Transfer */ |
176
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
54 | ui->topup_waterEdit->setValue(product->eq_top_up_water); |
458
ac216a75ca9b
Renamed trub_chiller_loss fields to trub_loss
Michiel Broek <mbroek@mbse.eu>
parents:
454
diff
changeset
|
55 | ui->vol_fermenterEdit->setValue((product->eq_batch_size / 1.04) - product->eq_trub_loss - product->eq_chiller_loss); |
176
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
56 | } |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
57 | |
69a033e099a2
Tab 2 equipent, all editfields placed.
Michiel Broek <mbroek@mbse.eu>
parents:
175
diff
changeset
|
58 | |
189 | 59 | void EditProduct::initEquipment() |
60 | { | |
61 | QSqlQuery query; | |
62 | ||
63 | ui->eq_selectEdit->addItem(""); | |
64 | query.prepare("SELECT name FROM inventory_equipments ORDER BY name"); | |
65 | query.exec(); | |
66 | while (query.next()) { | |
67 | ui->eq_selectEdit->addItem(query.value(0).toString()); | |
68 | } | |
69 | connect(ui->eq_selectEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditProduct::eq_changed); | |
70 | ||
71 | showEquipment(); | |
72 | } | |
73 | ||
74 | ||
75 | void EditProduct::eq_changed(int val) | |
76 | { | |
77 | QSqlQuery query; | |
78 | ||
79 | if (val == 0) | |
80 | return; | |
81 | ||
82 | qDebug() << "equipment changed" << val; | |
83 | query.prepare("SELECT * FROM inventory_equipments ORDER BY name"); | |
84 | query.exec(); | |
85 | query.first(); | |
86 | ||
87 | for (int i; i < (val - 1); i++) { | |
88 | query.next(); | |
89 | } | |
90 | qDebug() << "got" << query.value("name").toString(); | |
91 | ||
92 | product->eq_name = query.value("name").toString(); | |
93 | product->eq_notes = query.value("notes").toString(); | |
94 | product->eq_boil_size = query.value("boil_size").toDouble(); | |
95 | product->eq_batch_size = query.value("batch_size").toDouble(); | |
96 | product->eq_tun_volume = query.value("tun_volume").toDouble(); | |
97 | product->eq_tun_weight = query.value("tun_weight").toDouble(); | |
98 | product->eq_tun_specific_heat = query.value("tun_specific_heat").toDouble(); | |
99 | product->eq_tun_material = query.value("tun_material").toInt(); | |
100 | product->eq_tun_height = query.value("tun_height").toDouble(); | |
101 | product->eq_top_up_water = query.value("top_up_water").toDouble(); | |
458
ac216a75ca9b
Renamed trub_chiller_loss fields to trub_loss
Michiel Broek <mbroek@mbse.eu>
parents:
454
diff
changeset
|
102 | product->eq_trub_loss = query.value("trub_loss").toDouble(); |
189 | 103 | product->eq_evap_rate = query.value("evap_rate").toDouble(); |
104 | product->eq_boil_time = query.value("boil_time").toDouble(); | |
105 | product->eq_top_up_kettle = query.value("top_up_kettle").toDouble(); | |
106 | product->eq_lauter_deadspace = query.value("lauter_deadspace").toDouble(); | |
107 | product->eq_kettle_volume = query.value("kettle_volume").toDouble(); | |
108 | product->eq_kettle_height = query.value("kettle_height").toDouble(); | |
109 | product->eq_mash_volume = query.value("mash_volume").toDouble(); | |
110 | product->eq_mash_max = query.value("mash_max").toDouble(); | |
111 | product->eq_efficiency = query.value("efficiency").toDouble(); | |
454
2dfead81c72f
Version 0.3.3. Removed several obsolete debug messages. IBU and Fermentation calculation debug messages are now controlled by conditional defines in global.h. In the brewday tab update the preboil and afterboil reference volumes. In the brewday tab the chiller type is a read only field directy linked to the selected equipment.
Michiel Broek <mbroek@mbse.eu>
parents:
429
diff
changeset
|
112 | product->eq_chiller_type = product->brew_cooling_method = query.value("chiller_type").toInt(); |
423
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
113 | product->eq_chiller_to79 = query.value("chiller_to79").toDouble(); |
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
114 | product->eq_chiller_volume = query.value("chiller_volume").toDouble(); |
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
115 | product->eq_chiller_lpm = query.value("chiller_lpm").toDouble(); |
8cb46020796a
Adjusted chiller_loss default value to 0.4. Disabled product fields eq_calc_boil_volume, eq_hop_utilization, eq_lauter_volume and eq_lauter_height. Added eq_chiller_type, eq_chiller_to79, eq_chiller_volume, eq_chiller_lpm, eq_chiller_loss with default values for immersion chilling. Load these values from new selected equipment. Changed edit product tab 2 to show new the new fields and removed the obsolete fields.
Michiel Broek <mbroek@mbse.eu>
parents:
301
diff
changeset
|
116 | product->eq_chiller_loss = query.value("chiller_loss").toDouble(); |
189 | 117 | showEquipment(); |
118 | ||
119 | /* | |
120 | * Now change some important settings and recalculate the recipe parts. | |
121 | */ | |
122 | double factor = product->eq_batch_size / product->batch_size; | |
123 | double estog = product->est_og; | |
124 | ||
125 | const QSignalBlocker blocker1(ui->batch_sizeEdit); | |
126 | const QSignalBlocker blocker2(ui->boil_sizeEdit); | |
127 | const QSignalBlocker blocker3(ui->boil_timeEdit); | |
128 | const QSignalBlocker blocker4(ui->efficiencyEdit); | |
129 | ||
130 | product->boil_size = product->eq_boil_size; | |
131 | product->boil_time = product->eq_boil_time; | |
132 | product->batch_size = product->eq_batch_size; | |
133 | product->efficiency = product->eq_efficiency; | |
134 | ui->batch_sizeEdit->setValue(product->batch_size); | |
135 | ui->boil_sizeEdit->setValue(product->boil_size); | |
136 | ui->boil_timeEdit->setValue(product->boil_time); | |
137 | ui->efficiencyEdit->setValue(product->efficiency); | |
454
2dfead81c72f
Version 0.3.3. Removed several obsolete debug messages. IBU and Fermentation calculation debug messages are now controlled by conditional defines in global.h. In the brewday tab update the preboil and afterboil reference volumes. In the brewday tab the chiller type is a read only field directy linked to the selected equipment.
Michiel Broek <mbroek@mbse.eu>
parents:
429
diff
changeset
|
138 | ui->brew_preboilvolShow->setValue(product->boil_size * 1.04); |
461
add4dbef0c81
On the brewday tab, show the afterboil volume inclusive the volume of the immersion chiller in the wort. Added refractometer buttons on the brewday tab. The brew volume cm edit popup shows a message if a immersion chiller is in the wort.
Michiel Broek <mbroek@mbse.eu>
parents:
458
diff
changeset
|
139 | ui->brew_aboilvolShow->setValue(product->batch_size * 1.04 + product->eq_chiller_volume); |
189 | 140 | |
141 | calcFermentablesFromOG(estog); | |
142 | adjustWaters(factor); | |
143 | calcFermentables(); | |
144 | adjustHops(factor); | |
145 | adjustMiscs(factor); | |
146 | adjustYeasts(factor); | |
147 | calcIBUs(); | |
148 | calcWater(); | |
149 | calcMash(); | |
150 | is_changed(); | |
151 | emit refreshAll(); | |
152 | } | |
153 | ||
154 |