diff -r 080524ab2fe8 -r c6fa5be47634 src/CalibrateiSpindel.cpp --- a/src/CalibrateiSpindel.cpp Sun Oct 15 17:37:08 2023 +0200 +++ b/src/CalibrateiSpindel.cpp Mon Oct 16 11:39:20 2023 +0200 @@ -110,6 +110,7 @@ QWidget* pWidget; QHBoxLayout* pLayout; double d, x[12], y[12]; + bool gerror, aerror; qDebug() << "refreshTable" << oldtotal << newtotal; @@ -136,6 +137,7 @@ std::sort(nCal.begin() , nCal.end(), [=]( const Calibrate& test1 , const Calibrate& test2 )->bool { return test2.angle < test1.angle; }); + this->dataHasErrors = false; for (int i = 0; i < newtotal; i++) { qDebug() << i << nCal[i].sg << nCal[i].plato << nCal[i].angle; @@ -143,19 +145,41 @@ y[i] = nCal[i].plato; x[i] = nCal[i].angle; + gerror = aerror = false; + if ((nCal[i].angle < 10) || (nCal[i].angle > 80)) + aerror = true; + if (i == 0) { + if (nCal[0].plato <= nCal[1].plato) + gerror = true; + } else if (i == (newtotal -1)) { + if (nCal[i].plato != 0) + gerror = true; + } else { + if ((nCal[i].plato <= nCal[i + 1].plato) || (nCal[i].plato >= nCal[i - 1].plato)) + gerror = true; + } + if (gerror || aerror) + this->dataHasErrors = true; + w = QString("%1").arg(nCal[i].sg, 1, 'f', 4, '0'); QTableWidgetItem *item = new QTableWidgetItem(w); item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); + if (gerror) + item->setForeground(QBrush(QColor(Qt::red))); ui->dataTable->setItem(i, 0, item); w = QString("%1").arg(nCal[i].plato, 1, 'f', 3, '0'); item = new QTableWidgetItem(w); item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); + if (gerror) + item->setForeground(QBrush(QColor(Qt::red))); ui->dataTable->setItem(i, 1, item); w = QString("%1").arg(nCal[i].angle, 1, 'f', 5, '0'); item = new QTableWidgetItem(w); item->setTextAlignment(Qt::AlignCenter|Qt::AlignVCenter); + if (aerror) + item->setForeground(QBrush(QColor(Qt::red))); ui->dataTable->setItem(i, 2, item); /* Add the Delete row button */ @@ -182,7 +206,6 @@ this->textIsChanged = (_data_old.compare(_data_new) == 0) ? false:true; qDebug() << "changed" << this->textIsChanged << _data_old.compare(_data_new); CalibrateiSpindel::WindowTitle(); - ui->saveButton->setEnabled(this->textIsChanged); new_plot = new QLineSeries(); old_plot = new QLineSeries(); @@ -242,7 +265,12 @@ QMessageBox::Save | QMessageBox::Discard | QMessageBox::Cancel, QMessageBox::Save); switch (rc) { case QMessageBox::Save: - on_saveButton_clicked(); + if (this->dataHasErrors) { + QMessageBox::warning(this, tr("iSpindel calibrate"), tr("Data is changed but has errors, not saving.")); + return; /* Return to the editor page */ + } else { + SaveData(); + } break; /* Saved and then Quit */ case QMessageBox::Discard: break; /* Quit without Save */ @@ -256,7 +284,7 @@ } -void CalibrateiSpindel::on_saveButton_clicked() +void CalibrateiSpindel::SaveData() { QSqlQuery query;