Sat, 16 Apr 2022 21:54:43 +0200
Fixed complains about missing signals. Added add misc row, misc amount changed, misc time changed, misc select changed and misc instock changed. Silence false changed trigger.
src/EditRecipe.cpp | file | annotate | diff | comparison | revisions | |
src/EditRecipe.h | file | annotate | diff | comparison | revisions | |
src/EditRecipeTab2.cpp | file | annotate | diff | comparison | revisions | |
src/EditRecipeTab3.cpp | file | annotate | diff | comparison | revisions | |
src/EditRecipeTab4.cpp | file | annotate | diff | comparison | revisions | |
src/EditRecipeTab7.cpp | file | annotate | diff | comparison | revisions | |
ui/EditRecipe.ui | file | annotate | diff | comparison | revisions |
--- a/src/EditRecipe.cpp Sat Apr 16 15:19:04 2022 +0200 +++ b/src/EditRecipe.cpp Sat Apr 16 21:54:43 2022 +0200 @@ -50,7 +50,6 @@ ui->ibu_methodEdit->addItem("Daniels"); for (int i = 0; i < my_acids.size(); i++) { - qDebug() << i << my_acids.at(i).name_en; ui->mw_acidPick->addItem(my_acids.at(i).name_en); ui->sp_acidtypeEdit->addItem(my_acids.at(i).name_en); } @@ -189,7 +188,7 @@ } else if (fermentables.isArray()) { for (int i = 0; i < fermentables.array().size(); i++) { QJsonObject obj = fermentables.array().at(i).toObject(); - qDebug() << i << obj; + //qDebug() << i << obj; Fermentables f; f.f_name = obj["f_name"].toString(); f.f_origin = obj["f_origin"].toString(); @@ -232,7 +231,7 @@ } else if (hops.isArray()) { for (int i = 0; i < hops.array().size(); i++) { QJsonObject obj = hops.array().at(i).toObject(); -// qDebug() << i << obj; + //qDebug() << i << obj; Hops h; h.h_name = obj["h_name"].toString(); h.h_origin = obj["h_origin"].toString(); @@ -258,7 +257,6 @@ qDebug() << "empty hops"; } -qDebug() << query.value(86).toString(); const auto& m_json = query.value(86).toString(); if (!m_json.trimmed().isEmpty()) { const auto& formattedJson = QString("%1").arg(m_json); @@ -628,39 +626,40 @@ // All signals from tab "Fermentables" ui->fermentablesTable->setEditTriggers(QAbstractItemView::NoEditTriggers); connect(ui->est_og2Edit, &QDoubleSpinBox::textChanged, this, &EditRecipe::is_changed); - connect(ui->perc_mashShow, &QProgressBar::valueChanged, this, &EditRecipe::on_perc_mash_valueChanged); - 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->addFermentable, SIGNAL(clicked()), this, SLOT(on_addFermentRow_clicked())); + connect(ui->perc_mashShow, &QProgressBar::valueChanged, this, &EditRecipe::ferment_perc_mash_valueChanged); + connect(ui->perc_sugarsShow, &QProgressBar::valueChanged, this, &EditRecipe::ferment_perc_sugars_valueChanged); + connect(ui->perc_caraShow, &QProgressBar::valueChanged, this, &EditRecipe::ferment_perc_cara_valueChanged); + connect(ui->lintnerShow, &QProgressBar::valueChanged, this, &EditRecipe::ferment_lintner_valueChanged); + connect(ui->addFermentable, SIGNAL(clicked()), this, SLOT(addFermentRow_clicked())); // All signals from tab "Hops" ui->hopsTable->setEditTriggers(QAbstractItemView::NoEditTriggers); - connect(ui->hop_tasteShow, &QProgressBar::valueChanged, this, &EditRecipe::on_Flavour_valueChanged); - connect(ui->hop_aromaShow, &QProgressBar::valueChanged, this, &EditRecipe::on_Aroma_valueChanged); - connect(ui->addHop, SIGNAL(clicked()), this, SLOT(on_addHopRow_clicked())); + connect(ui->hop_tasteShow, &QProgressBar::valueChanged, this, &EditRecipe::hop_Flavour_valueChanged); + connect(ui->hop_aromaShow, &QProgressBar::valueChanged, this, &EditRecipe::hop_Aroma_valueChanged); + connect(ui->addHop, SIGNAL(clicked()), this, SLOT(addHopRow_clicked())); // All signals from tab "Miscs" ui->miscsTable->setEditTriggers(QAbstractItemView::NoEditTriggers); + connect(ui->addMisc, SIGNAL(clicked()), this, SLOT(addMiscRow_clicked())); // All signals from tab "Yeasts" // All signals from tab "Mash" // All signals from tab "Water" - connect(ui->bs_cacl2Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_cacl2_changed); - connect(ui->bs_caso4Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_caso4_changed); - connect(ui->bs_mgso4Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_mgso4_changed); - connect(ui->bs_naclEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_nacl_changed); - connect(ui->bs_mgcl2Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_mgcl2_changed); - connect(ui->bs_nahco3Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_nahco3_changed); - connect(ui->bs_caco3Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_caco3_changed); - connect(ui->mw_autoEdit, &QCheckBox::stateChanged, this, &EditRecipe::on_calc_acid_clicked); - connect(ui->mw_phEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_mw_ph_changed); - connect(ui->mw_acidvolEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_mw_acid_changed); - connect(ui->mw_acidPick, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditRecipe::on_mw_type_changed); - connect(ui->wt_sourceEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditRecipe::on_target_changed); - connect(ui->w2_volEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::on_w2_vol_changed); + connect(ui->bs_cacl2Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::wb_cacl2_changed); + connect(ui->bs_caso4Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::wb_caso4_changed); + connect(ui->bs_mgso4Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::wb_mgso4_changed); + connect(ui->bs_naclEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::wb_nacl_changed); + connect(ui->bs_mgcl2Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::wb_mgcl2_changed); + connect(ui->bs_nahco3Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::wb_nahco3_changed); + connect(ui->bs_caco3Edit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::wb_caco3_changed); + connect(ui->mw_autoEdit, &QCheckBox::stateChanged, this, &EditRecipe::mw_calc_acid_clicked); + connect(ui->mw_phEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::mw_ph_changed); + connect(ui->mw_acidvolEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::mw_acid_changed); + connect(ui->mw_acidPick, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditRecipe::mw_type_changed); + connect(ui->wt_sourceEdit, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &EditRecipe::wt_target_changed); + connect(ui->w2_volEdit, QOverload<double>::of(&QDoubleSpinBox::valueChanged), this, &EditRecipe::w2_volume_changed); ui->saveButton->setEnabled(false); ui->deleteButton->setEnabled((id >= 0) ? true:false);
--- a/src/EditRecipe.h Sat Apr 16 15:19:04 2022 +0200 +++ b/src/EditRecipe.h Sat Apr 16 21:54:43 2022 +0200 @@ -285,37 +285,37 @@ void misc_select_changed(int val); void misc_instock_changed(bool val); void misc_useat_changed(int val); - void on_addFermentRow_clicked(); - void on_deleteFermentRow_clicked(); - void on_editFermentRow_clicked(); - void on_addHopRow_clicked(); - void on_deleteHopRow_clicked(); - void on_editHopRow_clicked(); - void on_addMiscRow_clicked(); - void on_deleteMiscRow_clicked(); - void on_editMiscRow_clicked(); + void addFermentRow_clicked(); + void deleteFermentRow_clicked(); + void editFermentRow_clicked(); + void addHopRow_clicked(); + void deleteHopRow_clicked(); + void editHopRow_clicked(); + void addMiscRow_clicked(); + void deleteMiscRow_clicked(); + void editMiscRow_clicked(); - void on_w2_vol_changed(double val); - void on_cacl2_changed(double val); - void on_caso4_changed(double val); - void on_mgso4_changed(double val); - void on_nacl_changed(double val); - void on_mgcl2_changed(double val); - void on_nahco3_changed(double val); - void on_caco3_changed(double val); - void on_calc_acid_clicked(); - void on_target_changed(int val); - void on_mw_ph_changed(double val); - void on_mw_acid_changed(double val); - void on_mw_type_changed(int val); + void w2_volume_changed(double val); + void wb_cacl2_changed(double val); + void wb_caso4_changed(double val); + void wb_mgso4_changed(double val); + void wb_nacl_changed(double val); + void wb_mgcl2_changed(double val); + void wb_nahco3_changed(double val); + void wb_caco3_changed(double val); + void mw_calc_acid_clicked(); + void wt_target_changed(int val); + void mw_ph_changed(double val); + void mw_acid_changed(double val); + void mw_type_changed(int val); /* Modified progress bars */ - void on_perc_mash_valueChanged(int value); - void on_perc_sugars_valueChanged(int value); - void on_perc_cara_valueChanged(int value); - void on_lintner_valueChanged(int value); - void on_Flavour_valueChanged(int value); - void on_Aroma_valueChanged(int value); + void ferment_perc_mash_valueChanged(int value); + void ferment_perc_sugars_valueChanged(int value); + void ferment_perc_cara_valueChanged(int value); + void ferment_lintner_valueChanged(int value); + void hop_Flavour_valueChanged(int value); + void hop_Aroma_valueChanged(int value); private: Ui::EditRecipe *ui; @@ -348,7 +348,7 @@ QDoubleSpinBox *famountEdit, *pctEdit, *fmaxEdit, *hamountEdit, *ibuEdit, *mamountEdit; QSpinBox *htimeEdit, *mtimeEdit; QCheckBox *to100Edit, *finstockEdit, *hinstockEdit, *minstockEdit; - QLabel *htimeLabel, *mtimeLabel; + QLabel *htimeLabel, *mtimeLabel, *mamountLabel; void to100Fermentables(int row); static bool ferment_sort_test(const Fermentables &D1, const Fermentables &D2);
--- a/src/EditRecipeTab2.cpp Sat Apr 16 15:19:04 2022 +0200 +++ b/src/EditRecipeTab2.cpp Sat Apr 16 21:54:43 2022 +0200 @@ -123,7 +123,7 @@ 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())); + connect(btn_dele, SIGNAL(clicked()), this, SLOT(deleteFermentRow_clicked())); pLayout = new QHBoxLayout(pWidget); pLayout->addWidget(btn_dele); pLayout->setContentsMargins(5, 0, 5, 0); @@ -134,7 +134,7 @@ 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())); + connect(btn_edit, SIGNAL(clicked()), this, SLOT(editFermentRow_clicked())); pLayout = new QHBoxLayout(pWidget); pLayout->addWidget(btn_edit); pLayout->setContentsMargins(5, 0, 5, 0); @@ -342,7 +342,7 @@ } -void EditRecipe::on_perc_mash_valueChanged(int value) +void EditRecipe::ferment_perc_mash_valueChanged(int value) { if (value < 90) ui->perc_mashShow->setStyleSheet(bar_green); @@ -353,7 +353,7 @@ } -void EditRecipe::on_perc_sugars_valueChanged(int value) +void EditRecipe::ferment_perc_sugars_valueChanged(int value) { if (value < 20) ui->perc_sugarsShow->setStyleSheet(bar_green); @@ -362,7 +362,7 @@ } -void EditRecipe::on_perc_cara_valueChanged(int value) +void EditRecipe::ferment_perc_cara_valueChanged(int value) { if (value < 25) ui->perc_caraShow->setStyleSheet(bar_green); @@ -371,7 +371,7 @@ } -void EditRecipe::on_lintner_valueChanged(int value) +void EditRecipe::ferment_lintner_valueChanged(int value) { if (value < 30) ui->lintnerShow->setStyleSheet(bar_red); @@ -382,7 +382,7 @@ } -void EditRecipe::on_addFermentRow_clicked() +void EditRecipe::addFermentRow_clicked() { Fermentables newf; @@ -421,7 +421,7 @@ } -void EditRecipe::on_deleteFermentRow_clicked() +void EditRecipe::deleteFermentRow_clicked() { QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender()); int row = pb->objectName().toInt(); @@ -718,7 +718,7 @@ } -void EditRecipe::on_editFermentRow_clicked() +void EditRecipe::editFermentRow_clicked() { QSqlQuery query;
--- a/src/EditRecipeTab3.cpp Sat Apr 16 15:19:04 2022 +0200 +++ b/src/EditRecipeTab3.cpp Sat Apr 16 21:54:43 2022 +0200 @@ -120,7 +120,7 @@ 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_deleteHopRow_clicked())); + connect(btn_dele, SIGNAL(clicked()), this, SLOT(deleteHopRow_clicked())); pLayout = new QHBoxLayout(pWidget); pLayout->addWidget(btn_dele); pLayout->setContentsMargins(5, 0, 5, 0); @@ -131,7 +131,7 @@ 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_editHopRow_clicked())); + connect(btn_edit, SIGNAL(clicked()), this, SLOT(editHopRow_clicked())); pLayout = new QHBoxLayout(pWidget); pLayout->addWidget(btn_edit); pLayout->setContentsMargins(5, 0, 5, 0); @@ -142,7 +142,7 @@ } -void EditRecipe::on_Flavour_valueChanged(int value) +void EditRecipe::hop_Flavour_valueChanged(int value) { if (value < 20) { ui->hop_tasteShow->setStyleSheet(bar_20); @@ -163,7 +163,7 @@ } -void EditRecipe::on_Aroma_valueChanged(int value) +void EditRecipe::hop_Aroma_valueChanged(int value) { if (value < 20) { ui->hop_aromaShow->setStyleSheet(bar_20); @@ -212,7 +212,7 @@ } -void EditRecipe::on_addHopRow_clicked() +void EditRecipe::addHopRow_clicked() { Hops newh; @@ -245,7 +245,7 @@ } -void EditRecipe::on_deleteHopRow_clicked() +void EditRecipe::deleteHopRow_clicked() { QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender()); int row = pb->objectName().toInt(); @@ -463,7 +463,7 @@ } -void EditRecipe::on_editHopRow_clicked() +void EditRecipe::editHopRow_clicked() { QSqlQuery query;
--- a/src/EditRecipeTab4.cpp Sat Apr 16 15:19:04 2022 +0200 +++ b/src/EditRecipeTab4.cpp Sat Apr 16 21:54:43 2022 +0200 @@ -103,7 +103,7 @@ 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_deleteMiscRow_clicked())); + connect(btn_dele, SIGNAL(clicked()), this, SLOT(deleteMiscRow_clicked())); pLayout = new QHBoxLayout(pWidget); pLayout->addWidget(btn_dele); pLayout->setContentsMargins(5, 0, 5, 0); @@ -114,7 +114,7 @@ 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_editMiscRow_clicked())); + connect(btn_edit, SIGNAL(clicked()), this, SLOT(editMiscRow_clicked())); pLayout = new QHBoxLayout(pWidget); pLayout->addWidget(btn_edit); pLayout->setContentsMargins(5, 0, 5, 0); @@ -256,26 +256,29 @@ } -void EditRecipe::on_addMiscRow_clicked() +void EditRecipe::addMiscRow_clicked() { Miscs newm; - qDebug() << "Add misc row"; - for (int i = 0; i < recipe->miscs.size(); i++) { if (recipe->miscs.at(i).m_amount == 0) return; // Add only one at a time. } newm.m_name = "Select one"; - - + newm.m_amount = 0; + newm.m_type = 0; + newm.m_use_use = 0; + newm.m_time = 0; + newm.m_amount_is_weight = true; + newm.m_cost = 0; recipe->miscs.append(newm); + is_changed(); emit refreshAll(); } -void EditRecipe::on_deleteMiscRow_clicked() +void EditRecipe::deleteMiscRow_clicked() { QPushButton *pb = qobject_cast<QPushButton *>(QObject::sender()); int row = pb->objectName().toInt(); @@ -299,34 +302,158 @@ void EditRecipe::misc_amount_changed(double val) { + QTableWidgetItem *item; + qDebug() << "misc_amount_changed()" << recipe->miscs_row << val; + this->ignoreChanges = true; + + recipe->miscs[recipe->miscs_row].m_amount = val / 1000.0; + if (recipe->miscs.at(recipe->miscs_row).m_amount_is_weight) { + item = new QTableWidgetItem(QString("%1 gr").arg(recipe->miscs.at(recipe->miscs_row).m_amount * 1000.0, 3, 'f', 2, '0')); + } else { + item = new QTableWidgetItem(QString("%1 ml").arg(recipe->miscs.at(recipe->miscs_row).m_amount * 1000.0, 3, 'f', 2, '0')); + } + item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); + ui->miscsTable->setItem(recipe->miscs_row, 4, item); + + this->ignoreChanges = false; + is_changed(); } void EditRecipe::misc_time_changed(int val) { + QTableWidgetItem *item; + qDebug() << "misc_time_changed()" << recipe->miscs_row << val; + + this->ignoreChanges = true; + if (recipe->miscs.at(recipe->miscs_row).m_use_use == 2) { // Boil + recipe->miscs[recipe->miscs_row].m_time = val; + item = new QTableWidgetItem(QString("%1 min.").arg(val, 1, 'f', 0, '0')); + } else if (recipe->miscs.at(recipe->miscs_row).m_use_use == 3 || recipe->miscs.at(recipe->miscs_row).m_use_use == 4) { // Primary or secondary + recipe->miscs[recipe->miscs_row].m_time = val * 1440; + item = new QTableWidgetItem(QString("%1 days.").arg(val, 1, 'f', 0, '0')); + } else { + item = new QTableWidgetItem(QString("")); + } + item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); + ui->miscsTable->setItem(recipe->miscs_row, 4, item); + + this->ignoreChanges = false; + is_changed(); } void EditRecipe::misc_select_changed(int val) { QSqlQuery query; - bool instock = hinstockEdit->isChecked(); + bool instock = minstockEdit->isChecked(); QString w; QTableWidgetItem *item; if (val < 1) return; - qDebug() << "misc_select_changed()" << recipe->fermentables_row << val << instock; + qDebug() << "misc_select_changed()" << recipe->miscs_row << val << instock; + + /* + * Search the misc ingredient pointed by the index and instock flag. + */ + QString sql = "SELECT name,type,use_use,time,amount_is_weight,cost FROM inventory_miscs WHERE "; + if (instock) + sql.append("inventory > 0 AND "); + sql.append("type != 4 ORDER BY name"); + qDebug() << sql; + query.prepare(sql); + query.exec(); + query.first(); + for (int i = 0; i < (val - 1); i++) { + query.next(); + } + qDebug() << "found" << query.value(0).toString(); + + /* + * Replace the misc record contents + */ + this->ignoreChanges = true; + recipe->miscs[recipe->miscs_row].m_name = query.value(0).toString(); + recipe->miscs[recipe->miscs_row].m_type = query.value(1).toInt(); + recipe->miscs[recipe->miscs_row].m_use_use = query.value(2).toInt(); + recipe->miscs[recipe->miscs_row].m_time = query.value(3).toDouble(); + recipe->miscs[recipe->miscs_row].m_amount_is_weight = query.value(4).toInt() ? true:false; + recipe->miscs[recipe->miscs_row].m_cost = query.value(5).toDouble(); + + /* + * Update the visible fields + */ + mnameEdit->setText(recipe->miscs.at(recipe->miscs_row).m_name); + ui->miscsTable->setItem(recipe->miscs_row, 0, new QTableWidgetItem(recipe->miscs.at(recipe->miscs_row).m_name)); + item = new QTableWidgetItem(m_types[recipe->miscs.at(recipe->miscs_row).m_type]); + item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); + ui->miscsTable->setItem(recipe->miscs_row, 1, item); + + item = new QTableWidgetItem(m_uses[recipe->miscs.at(recipe->miscs_row).m_use_use]); + item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); + ui->miscsTable->setItem(recipe->miscs_row, 2, item); + useatEdit->setCurrentIndex(recipe->miscs.at(recipe->miscs_row).m_use_use); + + if (recipe->miscs.at(recipe->miscs_row).m_use_use == 3 || recipe->miscs.at(recipe->miscs_row).m_use_use == 4) { // Fermentation stages + mtimeEdit->setValue(recipe->miscs.at(recipe->miscs_row).m_time / 1440); + mtimeEdit->setReadOnly(false); + mtimeLabel->setText(tr("Time in days:")); + item = new QTableWidgetItem(QString("%1 days.").arg(recipe->miscs.at(recipe->miscs_row).m_time / 1440, 1, 'f', 0, '0')); + } else if (recipe->miscs.at(recipe->miscs_row).m_use_use == 2) { // Boil + mtimeEdit->setValue(recipe->miscs.at(recipe->miscs_row).m_time); + mtimeEdit->setReadOnly(false); + mtimeLabel->setText(tr("Time in minutes:")); + item = new QTableWidgetItem(QString("%1 min.").arg(recipe->miscs.at(recipe->miscs_row).m_time, 1, 'f', 0, '0')); + } else { + mtimeEdit->setReadOnly(true); + mtimeLabel->setText(""); + item = new QTableWidgetItem(QString("")); + } + item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); + ui->miscsTable->setItem(recipe->miscs_row, 3, item); + + if (recipe->miscs.at(recipe->miscs_row).m_amount_is_weight) { + mamountLabel->setText(tr("Amount in gr:")); + item = new QTableWidgetItem(QString("%1 gr").arg(recipe->miscs.at(recipe->miscs_row).m_amount * 1000.0, 3, 'f', 2, '0')); + } else { + mamountLabel->setText(tr("Amount in ml:")); + item = new QTableWidgetItem(QString("%1 ml").arg(recipe->miscs.at(recipe->miscs_row).m_amount * 1000.0, 3, 'f', 2, '0')); + } + item->setTextAlignment(Qt::AlignRight|Qt::AlignVCenter); + ui->miscsTable->setItem(recipe->miscs_row, 4, item); + + this->ignoreChanges = false; + is_changed(); + emit refreshAll(); } void EditRecipe::misc_instock_changed(bool val) { + QSqlQuery query; + qDebug() << "misc_instock_changed()" << recipe->miscs_row << val; + + this->mselectEdit->setCurrentIndex(-1); + this->mselectEdit->clear(); + QString sql = "SELECT name,type,amount_is_weight,inventory FROM inventory_miscs WHERE "; + if (val) + sql.append("inventory > 0 AND "); + sql.append("type != 4 ORDER BY name"); + query.prepare(sql); + query.exec(); + query.first(); + this->mselectEdit->addItem(""); // Start with empty value + for (int i = 0; i < query.size(); i++) { + this->mselectEdit->addItem(query.value(0).toString()+ " (" + m_types[query.value(1).toInt()] + ") " + + QString("%1 %2").arg(query.value(3).toDouble() * 1000.0, 3, 'f', 2, '0').arg(query.value(2).toInt()?"gr":"ml")); + query.next(); + } } @@ -336,7 +463,7 @@ } -void EditRecipe::on_editMiscRow_clicked() +void EditRecipe::editMiscRow_clicked() { QSqlQuery query; @@ -361,14 +488,14 @@ nameLabel->setGeometry(QRect(10, 10, 141, 20)); nameLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); - QLabel *amountLabel = new QLabel(dialog); - amountLabel->setObjectName(QString::fromUtf8("amountLabel")); + mamountLabel = new QLabel(dialog); + mamountLabel->setObjectName(QString::fromUtf8("mamountLabel")); if (recipe->miscs.at(recipe->miscs_row).m_amount_is_weight) - amountLabel->setText(tr("Amount in gr:")); + mamountLabel->setText(tr("Amount in gr:")); else - amountLabel->setText(tr("Amount in ml:")); - amountLabel->setGeometry(QRect(10, 70, 141, 20)); - amountLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); + mamountLabel->setText(tr("Amount in ml:")); + mamountLabel->setGeometry(QRect(10, 70, 141, 20)); + mamountLabel->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); mtimeLabel = new QLabel(dialog); mtimeLabel->setObjectName(QString::fromUtf8("mtimeLabel")); @@ -407,9 +534,9 @@ mamountEdit->setGeometry(QRect(160, 70, 121, 24)); mamountEdit->setAlignment(Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter); mamountEdit->setAccelerated(true); - mamountEdit->setDecimals(1); + mamountEdit->setDecimals(2); mamountEdit->setMaximum(1000000.0); - mamountEdit->setSingleStep(0.5); + mamountEdit->setSingleStep(0.1); mamountEdit->setValue(recipe->miscs.at(recipe->miscs_row).m_amount * 1000.0); mtimeEdit = new QSpinBox(dialog);
--- a/src/EditRecipeTab7.cpp Sat Apr 16 15:19:04 2022 +0200 +++ b/src/EditRecipeTab7.cpp Sat Apr 16 21:54:43 2022 +0200 @@ -266,7 +266,9 @@ total_alkalinity = bicarbonate * 50 / 61; } ph = TpH; + this->ignoreChanges = true; ui->wb_phEdit->setValue(ph); + this->ignoreChanges = false; recipe->mash_ph = ph; } else { // Manual /* @@ -304,8 +306,10 @@ bicarbonate = wg_bicarbonate - protonDeficit * frac / liters; total_alkalinity = bicarbonate * 50 / 61; ph = pHa; + this->ignoreChanges = true; ui->wb_phEdit->setValue(ph); ui->mw_phEdit->setValue(ph); + this->ignoreChanges = false; recipe->mash_ph = ph; } @@ -410,7 +414,7 @@ } -void EditRecipe::on_calc_acid_clicked() +void EditRecipe::mw_calc_acid_clicked() { recipe->calc_acid = ! recipe->calc_acid; ui->mw_autoEdit->setChecked(recipe->calc_acid); @@ -423,19 +427,21 @@ } -void EditRecipe::on_mw_ph_changed(double val) +void EditRecipe::mw_ph_changed(double val) { if (! recipe->calc_acid) return; - qDebug() << "on_mw_ph_changed" << val; - recipe->mash_ph = val; - is_changed(); - calcWater(); + if (recipe->mash_ph != val) { + qDebug() << "mw_ph_changed" << val << recipe->mash_ph; + recipe->mash_ph = val; + is_changed(); + calcWater(); + } } -void EditRecipe::on_mw_acid_changed(double val) +void EditRecipe::mw_acid_changed(double val) { if (recipe->calc_acid) return; @@ -446,7 +452,7 @@ } -void EditRecipe::on_mw_type_changed(int val) +void EditRecipe::mw_type_changed(int val) { if (val == recipe->wa_acid_name) return; @@ -470,13 +476,13 @@ } -void EditRecipe::on_w2_vol_changed(double val) +void EditRecipe::w2_volume_changed(double val) { - qDebug() << "on_w2_vol_changed" << val; + qDebug() << "w2_vol_changed" << val; } -void EditRecipe::on_target_changed(int val) +void EditRecipe::wt_target_changed(int val) { QSqlQuery query; @@ -508,12 +514,12 @@ } -void EditRecipe::on_cacl2_changed(double val) { set_brewing_salt("CaCl2", val); } -void EditRecipe::on_caso4_changed(double val) { set_brewing_salt("CaSO4", val); } -void EditRecipe::on_mgso4_changed(double val) { set_brewing_salt("MgSO4", val); } -void EditRecipe::on_nacl_changed(double val) { set_brewing_salt("NaCl", val); } -void EditRecipe::on_mgcl2_changed(double val) { set_brewing_salt("MgCl2", val); } -void EditRecipe::on_nahco3_changed(double val) { set_brewing_salt("NaHCO3", val); } -void EditRecipe::on_caco3_changed(double val) { set_brewing_salt("CaCO3", val); } +void EditRecipe::wb_cacl2_changed(double val) { set_brewing_salt("CaCl2", val); } +void EditRecipe::wb_caso4_changed(double val) { set_brewing_salt("CaSO4", val); } +void EditRecipe::wb_mgso4_changed(double val) { set_brewing_salt("MgSO4", val); } +void EditRecipe::wb_nacl_changed(double val) { set_brewing_salt("NaCl", val); } +void EditRecipe::wb_mgcl2_changed(double val) { set_brewing_salt("MgCl2", val); } +void EditRecipe::wb_nahco3_changed(double val) { set_brewing_salt("NaHCO3", val); } +void EditRecipe::wb_caco3_changed(double val) { set_brewing_salt("CaCO3", val); }
--- a/ui/EditRecipe.ui Sat Apr 16 15:19:04 2022 +0200 +++ b/ui/EditRecipe.ui Sat Apr 16 21:54:43 2022 +0200 @@ -95,7 +95,7 @@ <enum>QTabWidget::Rounded</enum> </property> <property name="currentIndex"> - <number>6</number> + <number>3</number> </property> <property name="elideMode"> <enum>Qt::ElideNone</enum>