src/EditRecipeTab4.cpp

changeset 131
0115b97e8c39
parent 128
0f4eee875ea6
child 132
9ede9c75cb54
--- a/src/EditRecipeTab4.cpp	Mon Apr 11 22:32:04 2022 +0200
+++ b/src/EditRecipeTab4.cpp	Tue Apr 12 21:03:19 2022 +0200
@@ -18,8 +18,157 @@
  */
 
 
-void EditRecipe::refreshMiscs()
+bool EditRecipe::misc_sort_test(const Miscs &D1, const Miscs &D2)
 {
+    if (D1.m_use_use > D2.m_use_use)
+	return false;
+    if (D1.m_use_use < D2.m_use_use)
+	return true;
+    if (D1.m_type > D2.m_type)
+	return false;
+    if (D1.m_type < D2.m_type)
+	return true;
+    return (D1.m_amount > D2.m_amount);
 }
 
 
+void EditRecipe::refreshMiscs()
+{
+    QString w;
+    QWidget* pWidget;
+    QHBoxLayout* pLayout;
+    QTableWidgetItem *item;
+
+    qDebug() << "refreshMiscs" << recipe->miscs.size();
+    std::sort(recipe->miscs.begin(), recipe->miscs.end(), misc_sort_test);
+
+    /*
+     * During filling the table turn off the cellChanged signal because every cell that is filled
+     * triggers the cellChanged signal. The QTableWidget has no better signal to use.
+     */
+    this->ignoreChanges = true;
+
+    const QStringList labels({tr("Ingredient"), tr("Type"), tr("Use at"), tr("Time"), tr("Amount"), tr("Delete"), tr("Edit") });
+
+    ui->miscsTable->setColumnCount(7);
+    ui->miscsTable->setColumnWidth(0, 300);	/* Ingredient	*/
+    ui->miscsTable->setColumnWidth(1, 100);	/* Type		*/
+    ui->miscsTable->setColumnWidth(2, 100);	/* Added	*/
+    ui->miscsTable->setColumnWidth(3,  75);	/* Time		*/
+    ui->miscsTable->setColumnWidth(4,  90);	/* Amount	*/
+    ui->miscsTable->setColumnWidth(5,  80);	/* Delete	*/
+    ui->miscsTable->setColumnWidth(6,  80);	/* Edit		*/
+    ui->miscsTable->setHorizontalHeaderLabels(labels);
+    ui->miscsTable->verticalHeader()->hide();
+    ui->miscsTable->setRowCount(recipe->miscs.size());
+
+    ui->mw_acidPick->setCurrentIndex(-1);
+
+    for (int i = 0; i < recipe->miscs.size(); i++) {
+
+	ui->miscsTable->setItem(i, 0, new QTableWidgetItem(recipe->miscs.at(i).m_name));
+
+	item = new QTableWidgetItem(m_types[recipe->miscs.at(i).m_type]);
+        item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
+        ui->miscsTable->setItem(i, 1, item);
+
+	item = new QTableWidgetItem(m_uses[recipe->miscs.at(i).m_use_use]);
+        item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
+        ui->miscsTable->setItem(i, 2, item);
+
+	if (recipe->miscs.at(i).m_use_use == 2) {	// Boil
+	    item = new QTableWidgetItem(QString("%1 min.").arg(recipe->miscs.at(i).m_time, 1, 'f', 0, '0'));
+	} else if (recipe->miscs.at(i).m_use_use == 3 || recipe->miscs.at(i).m_use_use == 4) {	// Primary or secondary
+	    item = new QTableWidgetItem(QString("%1 days.").arg(recipe->miscs.at(i).m_time / 1440, 1, 'f', 0, '0'));
+	} else {
+	    item = new QTableWidgetItem(QString(""));
+	}
+	item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
+        ui->miscsTable->setItem(i, 3, item);
+
+	if (recipe->miscs.at(i).m_amount_is_weight)
+	    item = new QTableWidgetItem(QString("%1 gr").arg(recipe->miscs.at(i).m_amount * 1000.0, 2, 'f', 1, '0'));
+	else
+	    item = new QTableWidgetItem(QString("%1 ml").arg(recipe->miscs.at(i).m_amount * 1000.0, 2, 'f', 1, '0'));
+	item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
+        ui->miscsTable->setItem(i, 4, item);
+
+	/*
+	 * Add the Delete and Edit row buttons.
+	 * Not for water agents, these are set on the water tab.
+	 */
+	if (recipe->miscs.at(i).m_type == 4) {
+	    ui->miscsTable->removeCellWidget(i, 5);
+	    ui->miscsTable->removeCellWidget(i, 6);
+	} else {
+            pWidget = new QWidget();
+            QPushButton* btn_dele = new QPushButton();
+            btn_dele->setObjectName(QString("%1").arg(i));  /* Send row with the button */
+            btn_dele->setText(tr("Delete"));
+            connect(btn_dele, SIGNAL(clicked()), this, SLOT(on_deleteFermentRow_clicked()));
+            pLayout = new QHBoxLayout(pWidget);
+            pLayout->addWidget(btn_dele);
+            pLayout->setContentsMargins(5, 0, 5, 0);
+            pWidget->setLayout(pLayout);
+            ui->miscsTable->setCellWidget(i, 5, pWidget);
+
+            pWidget = new QWidget();
+            QPushButton* btn_edit = new QPushButton();
+            btn_edit->setObjectName(QString("%1").arg(i));  /* Send row with the button */
+            btn_edit->setText(tr("Edit"));
+            connect(btn_edit, SIGNAL(clicked()), this, SLOT(on_editFermentRow_clicked()));
+            pLayout = new QHBoxLayout(pWidget);
+            pLayout->addWidget(btn_edit);
+            pLayout->setContentsMargins(5, 0, 5, 0);
+            pWidget->setLayout(pLayout);
+            ui->miscsTable->setCellWidget(i, 6, pWidget);
+	}
+
+	/*
+	 * Update the water agents.
+	 */
+	if (recipe->miscs.at(i).m_type == 4) {
+	    if (recipe->miscs.at(i).m_name == "CaCl2") {
+		ui->bs_cacl2Edit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "CaSO4") {
+		ui->bs_caso4Edit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "MgSO4") {
+		ui->bs_mgso4Edit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "NaCl") {
+		ui->bs_naclEdit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "MgCl2") {
+		ui->bs_mgcl2Edit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "NaHCO3") {
+		ui->bs_nahco3Edit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "CaCO3") {
+		ui->bs_caco3Edit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "Melkzuur" || recipe->miscs.at(i).m_name == "Lactic") {
+		recipe->wa_acid_name = 0;
+		recipe->wa_acid_perc = my_acids.at(0).AcidPrc;
+		ui->mw_acidPick->setCurrentIndex(0);
+		ui->mw_acidpercEdit->setValue(my_acids.at(0).AcidPrc);
+		ui->mw_acidvolEdit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "Zoutzuur" || recipe->miscs.at(i).m_name == "Hydrochloric") {
+                recipe->wa_acid_name = 1;
+                recipe->wa_acid_perc = my_acids.at(1).AcidPrc;
+		ui->mw_acidPick->setCurrentIndex(1);
+                ui->mw_acidpercEdit->setValue(my_acids.at(1).AcidPrc);
+                ui->mw_acidvolEdit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "Fosforzuur" || recipe->miscs.at(i).m_name == "Phosphoric") {
+                recipe->wa_acid_name = 2;
+                recipe->wa_acid_perc = my_acids.at(2).AcidPrc;
+		ui->mw_acidPick->setCurrentIndex(2);
+                ui->mw_acidpercEdit->setValue(my_acids.at(2).AcidPrc);
+                ui->mw_acidvolEdit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    } else if (recipe->miscs.at(i).m_name == "Zwavelzuur" || recipe->miscs.at(i).m_name == "Sulfuric") {
+                recipe->wa_acid_name = 3;
+                recipe->wa_acid_perc = my_acids.at(3).AcidPrc;
+		ui->mw_acidPick->setCurrentIndex(3);
+                ui->mw_acidpercEdit->setValue(my_acids.at(3).AcidPrc);
+                ui->mw_acidvolEdit->setValue(recipe->miscs.at(i).m_amount * 1000.0);
+	    }
+	}
+    }
+}
+
+

mercurial