--- 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());