--- a/src/EditProductTab1.cpp Wed May 18 08:59:54 2022 +0200 +++ b/src/EditProductTab1.cpp Wed May 18 17:03:05 2022 +0200 @@ -202,6 +202,8 @@ stage = PROD_STAGE_BREW; if ((stage == PROD_STAGE_BREW) && (! product->brew_date_start.date().isValid())) stage = PROD_STAGE_WAIT; + /* from PROD_STAGE_BREW to PROD_STAGE_PRIMARY is handled in EditProductTab9.cpp */ + /* from PROD_STAGE_PRIMARY to PROD_STAGE_SECONDARY is handled in EditProductTab10.cpp */ if (product->stage != stage) { qDebug() << "setStage() change state:" << prod_stages[product->stage] << "to:" << prod_stages[stage]; @@ -312,6 +314,7 @@ ui->brew_startButton1->show(); ui->brew_startButton2->show(); ui->brew_startDate->setReadOnly(false); + ui->brew_startDate->setMinimumDate(product->birth.addDays(-1)); // The birth date is the first valid date. ui->brew_endButton1->hide(); ui->brew_startLabel2->hide(); ui->brew_endLabel->hide(); @@ -422,7 +425,63 @@ /* Tab 10, fermentation */ ui->tabWidget->setTabEnabled(9, stage > PROD_STAGE_WAIT); - + ui->prim_enddateEdit->setReadOnly(true); + ui->prim_enddateEdit->setButtonSymbols(QAbstractSpinBox::NoButtons); + ui->prim_enddateButton->hide(); + ui->prim_ackButton->hide(); + ui->sec_enddateEdit->setReadOnly(true); + ui->sec_enddateEdit->setButtonSymbols(QAbstractSpinBox::NoButtons); + ui->sec_enddateButton->hide(); + ui->sec_ackButton->hide(); + ui->prim_startCEdit->setReadOnly(product->stage != PROD_STAGE_PRIMARY); + ui->prim_startCEdit->setButtonSymbols((product->stage == PROD_STAGE_PRIMARY) ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); + ui->prim_maxCEdit->setReadOnly(product->stage != PROD_STAGE_PRIMARY); + ui->prim_maxCEdit->setButtonSymbols((product->stage == PROD_STAGE_PRIMARY) ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); + ui->prim_endCEdit->setReadOnly(product->stage != PROD_STAGE_PRIMARY); + ui->prim_endCEdit->setButtonSymbols((product->stage == PROD_STAGE_PRIMARY) ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); + ui->prim_endsgEdit->setReadOnly(product->stage != PROD_STAGE_PRIMARY); + ui->prim_endsgEdit->setButtonSymbols((product->stage == PROD_STAGE_PRIMARY) ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); + if (product->stage == PROD_STAGE_PRIMARY) + ui->prim_endsgButton->show(); + else + ui->prim_endsgButton->hide(); + if ((product->primary_start_temp > 0) && (product->primary_max_temp > 0) && (product->primary_end_temp > 0) && + (product->primary_end_sg > 0.980) && (product->stage == PROD_STAGE_PRIMARY)) { + ui->prim_enddateEdit->setReadOnly(false); + ui->prim_enddateEdit->setButtonSymbols(QAbstractSpinBox::UpDownArrows); + ui->prim_enddateEdit->setMinimumDate(product->brew_date_end.date()); + ui->prim_enddateEdit->setMaximumDate(QDate::currentDate()); + ui->prim_enddateButton->show(); + if (product->primary_end_date.isValid()) { + ui->prim_ackButton->show(); + } + } + ui->sec_tempEdit->setReadOnly(product->stage != PROD_STAGE_SECONDARY); + ui->sec_tempEdit->setButtonSymbols((product->stage == PROD_STAGE_SECONDARY) ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); + ui->sec_sgEdit->setReadOnly(product->stage != PROD_STAGE_SECONDARY); + ui->sec_sgEdit->setButtonSymbols((product->stage == PROD_STAGE_SECONDARY) ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); + if (product->stage == PROD_STAGE_SECONDARY) + ui->sec_sgButton->show(); + else + ui->sec_sgButton->hide(); + if ((product->secondary_end_sg > 0.980) && (product->secondary_temp > 0) && (product->stage == PROD_STAGE_SECONDARY)) { + ui->sec_enddateEdit->setReadOnly(false); + ui->sec_enddateEdit->setButtonSymbols(QAbstractSpinBox::UpDownArrows); + ui->sec_enddateEdit->setMinimumDate(product->primary_end_date.addDays(-1)); // Allow same date as primary end. + ui->sec_enddateEdit->setMaximumDate(QDate::currentDate()); + ui->sec_enddateButton->show(); + if (product->secondary_end_date.isValid()) { + ui->sec_ackButton->show(); + } + } + ui->tert_tempEdit->setReadOnly(product->stage != PROD_STAGE_TERTIARY); + ui->tert_tempEdit->setButtonSymbols((product->stage == PROD_STAGE_TERTIARY) ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); + ui->tert_sgEdit->setReadOnly(product->stage != PROD_STAGE_TERTIARY); + ui->tert_sgEdit->setButtonSymbols((product->stage == PROD_STAGE_TERTIARY) ? QAbstractSpinBox::UpDownArrows : QAbstractSpinBox::NoButtons); + if (product->stage == PROD_STAGE_TERTIARY) + ui->tert_sgButton->show(); + else + ui->tert_sgButton->hide(); /* Tab 11, packaging */ ui->tabWidget->setTabEnabled(10, stage > PROD_STAGE_PLAN);