Show adjust_to100 in a function. Show percentages in fermentables table only before bottling or keggng. Implemented change add moment for fermentables.

Sat, 09 Apr 2022 10:26:35 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 09 Apr 2022 10:26:35 +0200
changeset 123
41563800aa92
parent 122
a614932fd908
child 124
ba26b19572ab

Show adjust_to100 in a function. Show percentages in fermentables table only before bottling or keggng. Implemented change add moment for fermentables.

src/EditRecipe.cpp file | annotate | diff | comparison | revisions
src/EditRecipe.h file | annotate | diff | comparison | revisions
--- a/src/EditRecipe.cpp	Fri Apr 08 22:46:57 2022 +0200
+++ b/src/EditRecipe.cpp	Sat Apr 09 10:26:35 2022 +0200
@@ -523,13 +523,30 @@
 }
 
 
+void EditRecipe::to100Fermentables(int row)
+{
+    if (recipe->fermentables.at(row).f_adjust_to_total_100) {
+	QWidget *pWidget = new QWidget();
+	QLabel *label = new QLabel;
+	label->setPixmap(QPixmap(":icons/silk/tick.png"));
+	QHBoxLayout *pLayout = new QHBoxLayout(pWidget);
+	pLayout->addWidget(label);
+	pLayout->setAlignment(Qt::AlignCenter);
+	pLayout->setContentsMargins(0, 0, 0, 0);
+	pWidget->setLayout(pLayout);
+	ui->fermentablesTable->setCellWidget(row, 9, pWidget);
+    } else {
+	ui->fermentablesTable->removeCellWidget(row, 9);
+    }
+}
+
+
 void EditRecipe::refreshFermentables()
 {
     QString w;
     QWidget* pWidget;
     QHBoxLayout* pLayout;
     QTableWidgetItem *item;
-    QLabel *label;
 
     qDebug() << "refreshFermentables" << recipe->fermentables.size();
     std::sort(recipe->fermentables.begin(), recipe->fermentables.end(), ferment_sort_test);
@@ -589,23 +606,15 @@
         item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->fermentablesTable->setItem(i, 7, item);
 
-        item = new QTableWidgetItem(QString("%1%").arg(recipe->fermentables.at(i).f_percentage, 2, 'f', 1, '0'));
+	if (recipe->fermentables.at(i).f_added < 4) {
+            item = new QTableWidgetItem(QString("%1%").arg(recipe->fermentables.at(i).f_percentage, 2, 'f', 1, '0'));
+	} else {
+	    item = new QTableWidgetItem(QString(""));	// Blank for bottling and kegging.
+	}
         item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
         ui->fermentablesTable->setItem(i, 8, item);
 
-	if (recipe->fermentables.at(i).f_adjust_to_total_100) {
-		pWidget = new QWidget();
-            	label = new QLabel;
-            	label->setPixmap(QPixmap(":icons/silk/tick.png"));
-            	pLayout = new QHBoxLayout(pWidget);
-            	pLayout->addWidget(label);
-            	pLayout->setAlignment(Qt::AlignCenter);
-            	pLayout->setContentsMargins(0, 0, 0, 0);
-            	pWidget->setLayout(pLayout);
-            	ui->fermentablesTable->setCellWidget(i, 9, pWidget);
-	} else {
-		ui->fermentablesTable->removeCellWidget(i, 9);
-	}
+	to100Fermentables(i);
 
 	/* Add the Delete row button */
         pWidget = new QWidget();
@@ -1100,7 +1109,6 @@
 		obj.insert("f_supplier", recipe->fermentables.at(i).f_supplier);
 		obj.insert("f_type", recipe->fermentables.at(i).f_type);
 		obj.insert("f_yield", round(recipe->fermentables.at(i).f_yield * 10) / 10);
-//		qDebug() << "fermentable_Json" << i << obj;
 		array.append(obj);      /* Append this object */
 	    }
 	    QJsonDocument doc;
@@ -1523,10 +1531,6 @@
 
 void EditRecipe::ferment_to100_changed(bool val)
 {
-    QWidget* pWidget;
-    QHBoxLayout* pLayout;
-    QLabel *label;
-
     qDebug() << "ferment_to100_changed()" << recipe->fermentables_row << val << recipe->fermentables_use100;
 
     /*
@@ -1560,19 +1564,7 @@
 
     this->ignoreChanges = true;
     for (int i = 0; i < recipe->fermentables.size(); i++) {
-	if (recipe->fermentables.at(i).f_adjust_to_total_100) {
-	    pWidget = new QWidget();
-	    label = new QLabel;
-	    label->setPixmap(QPixmap(":icons/silk/tick.png"));
-	    pLayout = new QHBoxLayout(pWidget);
-	    pLayout->addWidget(label);
-	    pLayout->setAlignment(Qt::AlignCenter);
-	    pLayout->setContentsMargins(0, 0, 0, 0);
-	    pWidget->setLayout(pLayout);
-	    ui->fermentablesTable->setCellWidget(i, 9, pWidget);
-        } else {
-	    ui->fermentablesTable->removeCellWidget(i, 9);
-        }
+	to100Fermentables(i);
     }
     this->ignoreChanges = false;
     is_changed();
@@ -1687,6 +1679,24 @@
 void EditRecipe::ferment_added_changed(int val)
 {
     qDebug() << "ferment_added_changed()" << recipe->fermentables_row << val;
+
+    this->ignoreChanges = true;
+    recipe->fermentables[recipe->fermentables_row].f_added = val;
+    QTableWidgetItem *item = new QTableWidgetItem(f_added[val]);
+    item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
+    ui->fermentablesTable->setItem(recipe->fermentables_row, 5, item);
+
+    double total = 0;
+    for (int i = 0; i < recipe->fermentables.size(); i++)
+        if (recipe->fermentables.at(i).f_added < 4)             // Only before bottle/kegging
+            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 = recipe->fermentables.at(i).f_amount / total * 100;
+
+    this->ignoreChanges = false;
+    is_changed();
+    emit refreshAll();
 }
 
 
--- a/src/EditRecipe.h	Fri Apr 08 22:46:57 2022 +0200
+++ b/src/EditRecipe.h	Sat Apr 09 10:26:35 2022 +0200
@@ -302,6 +302,7 @@
     QDoubleSpinBox *amountEdit, *pctEdit, *maxEdit;
     QCheckBox *to100Edit, *instockEdit;
 
+    void to100Fermentables(int row);
     static bool ferment_sort_test(const Fermentables &D1, const Fermentables &D2);
     void WindowTitle();
     void calcFermentables();

mercurial