Mon, 16 Oct 2023 11:39:20 +0200
Added error checks on calibration data
--- 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;
--- a/src/CalibrateiSpindel.h Sun Oct 15 17:37:08 2023 +0200 +++ b/src/CalibrateiSpindel.h Mon Oct 16 11:39:20 2023 +0200 @@ -28,7 +28,6 @@ private slots: void on_quitButton_clicked(); - void on_saveButton_clicked(); void refreshTable(void); void on_addButton_clicked(); void on_deleteRow_clicked(); @@ -44,12 +43,13 @@ QJsonDocument data; bool ignoreChanges = false; bool textIsChanged = false; + bool dataHasErrors = false; double Old[4], New[4]; QList<Calibrate> oCal; QList<Calibrate> nCal; - bool sort_test(const Calibrate &D1, const Calibrate &D2); void WindowTitle(); + void SaveData(); }; #endif
--- a/translations/bmsapp_en.ts Sun Oct 15 17:37:08 2023 +0200 +++ b/translations/bmsapp_en.ts Mon Oct 16 11:39:20 2023 +0200 @@ -60,22 +60,22 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="114"/> + <location filename="../ui/CalibrateiSpindel.ui" line="94"/> <source>Data:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="130"/> + <location filename="../ui/CalibrateiSpindel.ui" line="110"/> <source>Add</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="147"/> + <location filename="../ui/CalibrateiSpindel.ui" line="127"/> <source>Old formula:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="163"/> + <location filename="../ui/CalibrateiSpindel.ui" line="143"/> <source>New formula:</source> <translation type="unfinished"></translation> </message> @@ -85,99 +85,100 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="87"/> - <source>Save</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../src/CalibrateiSpindel.cpp" line="122"/> + <location filename="../src/CalibrateiSpindel.cpp" line="123"/> <source>SG</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="122"/> + <location filename="../src/CalibrateiSpindel.cpp" line="123"/> <source>°Plato</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="122"/> - <location filename="../src/CalibrateiSpindel.cpp" line="209"/> + <location filename="../src/CalibrateiSpindel.cpp" line="123"/> + <location filename="../src/CalibrateiSpindel.cpp" line="232"/> <source>Angle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="122"/> - <location filename="../src/CalibrateiSpindel.cpp" line="165"/> + <location filename="../src/CalibrateiSpindel.cpp" line="123"/> + <location filename="../src/CalibrateiSpindel.cpp" line="189"/> <source>Del</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="197"/> + <location filename="../src/CalibrateiSpindel.cpp" line="220"/> <source>Old</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="198"/> + <location filename="../src/CalibrateiSpindel.cpp" line="221"/> <source>New</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="201"/> + <location filename="../src/CalibrateiSpindel.cpp" line="224"/> <source>Calibration plot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="241"/> + <location filename="../src/CalibrateiSpindel.cpp" line="264"/> <source>iSpindel calibrate changed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="241"/> + <location filename="../src/CalibrateiSpindel.cpp" line="264"/> <source>The calibration data has been modified. Save changes?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="288"/> + <location filename="../src/CalibrateiSpindel.cpp" line="269"/> + <source>Data is changed but has errors, not saving.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/CalibrateiSpindel.cpp" line="316"/> <source>Database error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="289"/> + <location filename="../src/CalibrateiSpindel.cpp" line="317"/> <source>MySQL error: %1 %2 %3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="307"/> - <location filename="../src/CalibrateiSpindel.cpp" line="346"/> - <location filename="../src/CalibrateiSpindel.cpp" line="355"/> - <location filename="../src/CalibrateiSpindel.cpp" line="364"/> + <location filename="../src/CalibrateiSpindel.cpp" line="269"/> + <location filename="../src/CalibrateiSpindel.cpp" line="335"/> + <location filename="../src/CalibrateiSpindel.cpp" line="374"/> + <location filename="../src/CalibrateiSpindel.cpp" line="383"/> + <location filename="../src/CalibrateiSpindel.cpp" line="392"/> <source>iSpindel calibrate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="307"/> + <location filename="../src/CalibrateiSpindel.cpp" line="335"/> <source>You cannot delete too many rows.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="346"/> + <location filename="../src/CalibrateiSpindel.cpp" line="374"/> <source>The SG must be between 1.000 and 1.100.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="355"/> + <location filename="../src/CalibrateiSpindel.cpp" line="383"/> <source>Plato must be between 0 and 25.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="364"/> + <location filename="../src/CalibrateiSpindel.cpp" line="392"/> <source>The tilt angles must be between 10 and 80.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="381"/> + <location filename="../src/CalibrateiSpindel.cpp" line="409"/> <source>BMSapp - Calibrate iSpindel %1</source> <translation type="unfinished"></translation> </message>
--- a/translations/bmsapp_nl.ts Sun Oct 15 17:37:08 2023 +0200 +++ b/translations/bmsapp_nl.ts Mon Oct 16 11:39:20 2023 +0200 @@ -90,22 +90,22 @@ <translation type="unfinished">Naam:</translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="114"/> + <location filename="../ui/CalibrateiSpindel.ui" line="94"/> <source>Data:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="130"/> + <location filename="../ui/CalibrateiSpindel.ui" line="110"/> <source>Add</source> <translation type="unfinished">Nieuw</translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="147"/> + <location filename="../ui/CalibrateiSpindel.ui" line="127"/> <source>Old formula:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="163"/> + <location filename="../ui/CalibrateiSpindel.ui" line="143"/> <source>New formula:</source> <translation type="unfinished"></translation> </message> @@ -114,9 +114,8 @@ <translation type="obsolete">Naam van het vergisting profiel</translation> </message> <message> - <location filename="../ui/CalibrateiSpindel.ui" line="87"/> <source>Save</source> - <translation type="unfinished">Bewaar</translation> + <translation type="obsolete">Bewaar</translation> </message> <message> <source>Steps:</source> @@ -144,59 +143,64 @@ <translation type="unfinished">Terug</translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="122"/> + <location filename="../src/CalibrateiSpindel.cpp" line="123"/> <source>SG</source> <translation type="unfinished">SG</translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="122"/> + <location filename="../src/CalibrateiSpindel.cpp" line="123"/> <source>°Plato</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="122"/> - <location filename="../src/CalibrateiSpindel.cpp" line="209"/> + <location filename="../src/CalibrateiSpindel.cpp" line="123"/> + <location filename="../src/CalibrateiSpindel.cpp" line="232"/> <source>Angle</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="122"/> - <location filename="../src/CalibrateiSpindel.cpp" line="165"/> + <location filename="../src/CalibrateiSpindel.cpp" line="123"/> + <location filename="../src/CalibrateiSpindel.cpp" line="189"/> <source>Del</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="197"/> + <location filename="../src/CalibrateiSpindel.cpp" line="220"/> <source>Old</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="198"/> + <location filename="../src/CalibrateiSpindel.cpp" line="221"/> <source>New</source> <translation type="unfinished">Nieuw</translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="201"/> + <location filename="../src/CalibrateiSpindel.cpp" line="224"/> <source>Calibration plot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="241"/> + <location filename="../src/CalibrateiSpindel.cpp" line="264"/> <source>iSpindel calibrate changed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="241"/> + <location filename="../src/CalibrateiSpindel.cpp" line="264"/> <source>The calibration data has been modified. Save changes?</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="288"/> + <location filename="../src/CalibrateiSpindel.cpp" line="269"/> + <source>Data is changed but has errors, not saving.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/CalibrateiSpindel.cpp" line="316"/> <source>Database error</source> <translation type="unfinished">Database fout</translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="289"/> + <location filename="../src/CalibrateiSpindel.cpp" line="317"/> <source>MySQL error: %1 %2 %3</source> @@ -205,35 +209,36 @@ %3</translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="307"/> - <location filename="../src/CalibrateiSpindel.cpp" line="346"/> - <location filename="../src/CalibrateiSpindel.cpp" line="355"/> - <location filename="../src/CalibrateiSpindel.cpp" line="364"/> + <location filename="../src/CalibrateiSpindel.cpp" line="269"/> + <location filename="../src/CalibrateiSpindel.cpp" line="335"/> + <location filename="../src/CalibrateiSpindel.cpp" line="374"/> + <location filename="../src/CalibrateiSpindel.cpp" line="383"/> + <location filename="../src/CalibrateiSpindel.cpp" line="392"/> <source>iSpindel calibrate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="307"/> + <location filename="../src/CalibrateiSpindel.cpp" line="335"/> <source>You cannot delete too many rows.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="346"/> + <location filename="../src/CalibrateiSpindel.cpp" line="374"/> <source>The SG must be between 1.000 and 1.100.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="355"/> + <location filename="../src/CalibrateiSpindel.cpp" line="383"/> <source>Plato must be between 0 and 25.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="364"/> + <location filename="../src/CalibrateiSpindel.cpp" line="392"/> <source>The tilt angles must be between 10 and 80.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/CalibrateiSpindel.cpp" line="381"/> + <location filename="../src/CalibrateiSpindel.cpp" line="409"/> <source>BMSapp - Calibrate iSpindel %1</source> <translation type="unfinished"></translation> </message>
--- a/ui/CalibrateiSpindel.ui Sun Oct 15 17:37:08 2023 +0200 +++ b/ui/CalibrateiSpindel.ui Mon Oct 16 11:39:20 2023 +0200 @@ -51,7 +51,7 @@ <widget class="QPushButton" name="quitButton"> <property name="geometry"> <rect> - <x>110</x> + <x>462</x> <y>510</y> <width>80</width> <height>23</height> @@ -71,26 +71,6 @@ <normaloff>:icons/silk/door_out.png</normaloff>:icons/silk/door_out.png</iconset> </property> </widget> - <widget class="QPushButton" name="saveButton"> - <property name="enabled"> - <bool>false</bool> - </property> - <property name="geometry"> - <rect> - <x>820</x> - <y>510</y> - <width>80</width> - <height>23</height> - </rect> - </property> - <property name="text"> - <string>Save</string> - </property> - <property name="icon"> - <iconset> - <normaloff>:icons/silk/disk.png</normaloff>:icons/silk/disk.png</iconset> - </property> - </widget> <widget class="QTableWidget" name="dataTable"> <property name="geometry"> <rect> @@ -225,7 +205,6 @@ <tabstops> <tabstop>nameEdit</tabstop> <tabstop>quitButton</tabstop> - <tabstop>saveButton</tabstop> </tabstops> <resources> <include location="../../../../../../home/mbroek/MyProjects/bmsapp/resources/icons.qrc"/>