src/CalibrateiSpindel.cpp

changeset 511
c6fa5be47634
parent 510
080524ab2fe8
child 512
1dfae8de6ca9
--- 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;
 

mercurial