From 7a00c7f90567ac2706d7041337de05b824b2bfd1 Mon Sep 17 00:00:00 2001 From: m_thread Date: Sun, 28 Sep 2014 02:00:54 +0200 Subject: [PATCH] OP-1222 Fixed false positive dirty indication for stabilization tab in configplugin. Added tracking of TPS curve changes. --- .../src/plugins/config/configstabilizationwidget.cpp | 10 ++++++++++ .../src/plugins/config/configstabilizationwidget.h | 2 +- .../plugins/uavobjectwidgetutils/configtaskwidget.h | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp index 3b02f285c..e8dbadbee 100644 --- a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp @@ -134,6 +134,7 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa ui->thrustPIDScalingCurve->setMin(-0.5); ui->thrustPIDScalingCurve->setMax(0.5); ui->thrustPIDScalingCurve->initLinearCurve(5, -0.25, 0.25); + connect(ui->thrustPIDScalingCurve, SIGNAL(curveUpdated()), this, SLOT(throttleCurveUpdated())); addWidget(ui->defaultThrottleCurveButton); addWidget(ui->enableThrustPIDScalingCheckBox); @@ -170,6 +171,7 @@ void ConfigStabilizationWidget::updateObjectsFromWidgets() void ConfigStabilizationWidget::updateThrottleCurveFromObject() { + bool dirty = isDirty(); UAVObject *stabBank = getObjectManager()->getObject(QString(m_pidTabBars.at(0)->tabData(m_currentPIDBank).toString())); Q_ASSERT(stabBank); @@ -192,6 +194,7 @@ void ConfigStabilizationWidget::updateThrottleCurveFromObject() bool enabled = field->getValue() == "TRUE"; ui->enableThrustPIDScalingCheckBox->setChecked(enabled); ui->thrustPIDScalingCurve->setEnabled(enabled); + setDirty(dirty); } void ConfigStabilizationWidget::updateObjectFromThrottleCurve() @@ -242,6 +245,11 @@ void ConfigStabilizationWidget::resetThrottleCurveToDefault() delete defaultStabBank; } +void ConfigStabilizationWidget::throttleCurveUpdated() +{ + setDirty(true); +} + void ConfigStabilizationWidget::realtimeUpdatesSlot(bool value) { ui->realTimeUpdates_6->setChecked(value); @@ -335,6 +343,7 @@ void ConfigStabilizationWidget::onBoardConnected() void ConfigStabilizationWidget::pidBankChanged(int index) { + bool dirty = isDirty(); updateObjectFromThrottleCurve(); foreach(QTabBar * tabBar, m_pidTabBars) { disconnect(tabBar, SIGNAL(currentChanged(int)), this, SLOT(pidBankChanged(int))); @@ -351,6 +360,7 @@ void ConfigStabilizationWidget::pidBankChanged(int index) m_currentPIDBank = index; qDebug() << "current bank:" << m_currentPIDBank; updateThrottleCurveFromObject(); + setDirty(dirty); } bool ConfigStabilizationWidget::shouldObjectBeSaved(UAVObject *object) diff --git a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.h b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.h index 5b3c536f6..f8409c050 100644 --- a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.h +++ b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.h @@ -74,6 +74,6 @@ private slots: void onBoardConnected(); void pidBankChanged(int index); void resetThrottleCurveToDefault(); + void throttleCurveUpdated(); }; - #endif // ConfigStabilizationWidget_H diff --git a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h index 6ff337060..3cf5c5253 100644 --- a/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h +++ b/ground/openpilotgcs/src/plugins/uavobjectwidgetutils/configtaskwidget.h @@ -139,7 +139,7 @@ public: void autoLoadWidgets(); bool isDirty(); - void setDirty(bool value); + virtual void setDirty(bool value); bool allObjectsUpdated(); void setOutOfLimitsStyle(QString style)