From 6cd6f596ad688e62c1be72e0e1a06b7398e96db4 Mon Sep 17 00:00:00 2001 From: Michael Carpenter Date: Tue, 3 Mar 2015 15:49:01 -0500 Subject: [PATCH] Adv Param List: Fix for invalid numbers entered in Adv Param List being taken as zero --- src/ui/configuration/AdvParameterList.cc | 18 +++++++++++++++++- src/ui/configuration/AdvParameterList.h | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/ui/configuration/AdvParameterList.cc b/src/ui/configuration/AdvParameterList.cc index 6c09896e49..5183be2b09 100644 --- a/src/ui/configuration/AdvParameterList.cc +++ b/src/ui/configuration/AdvParameterList.cc @@ -91,6 +91,19 @@ void AdvParameterList::tableWidgetItemChanged(QTableWidgetItem* item) //Invalid item, something has gone awry. return; } + QLocale locallocale; + bool ok = false; + double number = locallocale.toDouble(item->text(),&ok); + if (!ok) + { + //Failed to convert + QMessageBox::warning(this,"Error","Failed to convert number, please verify your input and try again"); + disconnect(ui.tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)),this, SLOT(tableWidgetItemChanged(QTableWidgetItem*))); + ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_VALUE)->setText(m_paramToOrigValueMap[ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_PARAM)->text()]); + connect(ui.tableWidget, SIGNAL(itemChanged(QTableWidgetItem*)),this, SLOT(tableWidgetItemChanged(QTableWidgetItem*))); + return; + } + m_origBrushList.append(ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_PARAM)->text()); QBrush brush = QBrush(QColor::fromRgb(132,181,132)); ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_PARAM)->setBackground(brush); @@ -98,7 +111,9 @@ void AdvParameterList::tableWidgetItemChanged(QTableWidgetItem* item) ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_UNIT)->setBackground(brush); ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_RANGE)->setBackground(brush); ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_DESCRIPTION)->setBackground(brush); - m_modifiedParamMap[ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_PARAM)->text()] = item->text().toDouble(); + m_modifiedParamMap[ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_PARAM)->text()] = number; + m_paramToOrigValueMap[ui.tableWidget->item(item->row(),ADV_TABLE_COLUMN_PARAM)->text()] = item->text(); + int itemsChanged = m_modifiedParamMap.size(); @@ -411,6 +426,7 @@ void AdvParameterList::parameterChanged(int /*uas*/, int /*component*/, QString { valstr = QString::number(value.toInt(),'f',0); } + m_paramToOrigValueMap[parameterName] = valstr; m_paramValueMap[parameterName]->setText(valstr); connect(ui.tableWidget,SIGNAL(itemChanged(QTableWidgetItem*)),this,SLOT(tableWidgetItemChanged(QTableWidgetItem*))); diff --git a/src/ui/configuration/AdvParameterList.h b/src/ui/configuration/AdvParameterList.h index 8ef1b53635..e14e31a342 100644 --- a/src/ui/configuration/AdvParameterList.h +++ b/src/ui/configuration/AdvParameterList.h @@ -82,6 +82,7 @@ private slots: QMap m_modifiedParamMap; QMap m_paramToUnitMap; QMap m_paramToRangeMap; + QMap m_paramToOrigValueMap; QList m_searchItemList; int m_searchIndex;