src/EditRecipe.cpp

changeset 103
6da4e93b6ceb
parent 102
b017001850df
child 104
c02dfb7bb2f9
--- a/src/EditRecipe.cpp	Sun Apr 03 17:43:45 2022 +0200
+++ b/src/EditRecipe.cpp	Sun Apr 03 22:02:12 2022 +0200
@@ -254,7 +254,7 @@
     connect(ui->perc_sugarsShow, &QProgressBar::valueChanged, this, &EditRecipe::on_perc_sugars_valueChanged);
     connect(ui->perc_caraShow, &QProgressBar::valueChanged, this, &EditRecipe::on_perc_cara_valueChanged);
     connect(ui->lintnerShow, &QProgressBar::valueChanged, this, &EditRecipe::on_lintner_valueChanged);
-//    connect(ui->fermentablesTable, SIGNAL(cellChanged(int, int)), this, SLOT(cell_Changed(int, int)));
+    connect(ui->fermentablesTable, SIGNAL(cellChanged(int, int)), this, SLOT(cell_Fermentable_changed(int, int)));
 
     // All signals from tab "Hops"
 //    connect(ui->hopsTable, SIGNAL(cellChanged(int, int)), this, SLOT(cell_Changed(int, int)));
@@ -385,19 +385,10 @@
             item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter);
             ui->fermentablesTable->setItem(i, 7, item);
 
-	    if (obj["f_adjust_to_total_100"].toString().toInt()) {
-            	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, 8, pWidget);
-            } else {
-            	ui->fermentablesTable->removeCellWidget(i, 8);
-            }
+	    QTableWidgetItem *checkBoxItem = new QTableWidgetItem();
+	    checkBoxItem->setCheckState((obj["f_adjust_to_total_100"].toInt()) ? Qt::Checked : Qt::Unchecked);
+	    checkBoxItem->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter);
+            ui->fermentablesTable->setItem(i, 8, checkBoxItem);
 
 	    /* Add the Delete row button */
             pWidget = new QWidget();
@@ -806,6 +797,41 @@
 }
 
 
+void EditRecipe::cell_Fermentable_changed(int nRow, int nCol)
+{
+    if (this->ignoreChanges)
+        return;
+
+    qDebug() << "Cell at row " + QString::number(nRow) + " column " + QString::number(nCol) + " was changed.";
+
+    if (nCol == 8) {	// 100% checkbox
+	this->ignoreChanges = true;
+
+	if (ui->fermentablesTable->item(nRow, nCol)->checkState() == Qt::Checked) {
+	    /*
+	     * This row is checked. Remove any other checked item.
+	     */
+	    for (int i = 0; i < ui->fermentablesTable->rowCount(); i++) {
+		if (i != nRow) {
+		    QTableWidgetItem *checkBoxItem = ui->fermentablesTable->item(i, nCol);
+		    checkBoxItem->setCheckState(Qt::Unchecked);
+		    ui->fermentablesTable->setItem(i, nCol, checkBoxItem);
+		}
+	    }
+	} else {
+	    /*
+	     * Unchecked, start working with amounts instead of percentages.
+	     */
+	}
+	qDebug() << ui->fermentablesTable->item(nRow, nCol)->checkState();
+	this->ignoreChanges = false;
+    }
+
+    // TODO: some checks and auto fixes.
+//    make_Json();
+}
+
+
 void EditRecipe::on_deleteFermentRow_clicked()
 {
     QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender());

mercurial