If percentages are not set when loading a recipe, they are set during the load.

Wed, 27 Apr 2022 13:04:49 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Wed, 27 Apr 2022 13:04:49 +0200
changeset 169
541ddf3edb10
parent 168
4bc92122d001
child 170
d25e41da6be2

If percentages are not set when loading a recipe, they are set during the load.

src/EditRecipe.cpp file | annotate | diff | comparison | revisions
--- a/src/EditRecipe.cpp	Wed Apr 27 12:15:36 2022 +0200
+++ b/src/EditRecipe.cpp	Wed Apr 27 13:04:49 2022 +0200
@@ -203,6 +203,7 @@
             if (parseError.error != QJsonParseError::NoError) {
                 qDebug() << "Parse error: " << parseError.errorString() << "at" << parseError.offset ;
 	    } else if (fermentables.isArray()) {
+		double percentcheck = 0;
 		for (int i = 0; i < fermentables.array().size(); i++) {
 		    QJsonObject obj = fermentables.array().at(i).toObject();
 		    //qDebug() << i << obj;
@@ -231,9 +232,24 @@
 		    f.f_acid_to_ph_57 = obj["f_acid_to_ph_57"].toDouble();
 		    if (f.f_adjust_to_total_100)
 			recipe->fermentables_use100 = true;
+		    percentcheck += f.f_percentage;
 		    recipe->fermentables.append(f);
 		}
-		qDebug() << "fermentables" << recipe->fermentables.size();
+		qDebug() << "fermentables" << recipe->fermentables.size() << percentcheck;
+		if (percentcheck == 0) {
+		    /* Missing percentages, fix it. */
+		    double total = 0;
+		    for (int i = 0; i < recipe->fermentables.size(); i++) {
+			if (recipe->fermentables.at(i).f_added < 4)
+			    total += recipe->fermentables.at(i).f_amount;
+		    }
+		    for (int i = 0; i < recipe->fermentables.size(); i++) {
+			if (recipe->fermentables.at(i).f_added < 4)
+			    recipe->fermentables[i].f_percentage = round((recipe->fermentables.at(i).f_amount / total) * 10000.0) / 100.0;
+		    }
+		    qDebug() << " fixed missing percentages";
+		    is_changed();
+		}
 	    }
         } else {
 	    qDebug() << "empty fermentables";

mercurial