# HG changeset patch # User Michiel Broek # Date 1649492795 -7200 # Node ID 41563800aa92a7bb2b40ffca230549c30ce8083a # Parent a614932fd908c43879be4e280c440c2f81248cd0 Show adjust_to100 in a function. Show percentages in fermentables table only before bottling or keggng. Implemented change add moment for fermentables. diff -r a614932fd908 -r 41563800aa92 src/EditRecipe.cpp --- 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(); } diff -r a614932fd908 -r 41563800aa92 src/EditRecipe.h --- 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();