diff --git a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp index faf2c911e..c412a475c 100644 --- a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp +++ b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.cpp @@ -65,7 +65,7 @@ MyTabbedStackWidget::MyTabbedStackWidget(QWidget *parent, bool isVertical, bool m_stackWidget->setContentsMargins(0, 0, 0, 0); setLayout(toplevelLayout); - connect(m_listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(showWidget(int))); + connect(m_listWidget, SIGNAL(currentRowChanged(int)), this, SLOT(showWidget(int)),Qt::QueuedConnection); } void MyTabbedStackWidget::insertTab(const int index, QWidget *tab, const QIcon &icon, const QString &label) @@ -97,9 +97,19 @@ void MyTabbedStackWidget::setCurrentIndex(int index) void MyTabbedStackWidget::showWidget(int index) { - emit currentAboutToShow(index); - m_stackWidget->setCurrentIndex(index); - emit currentChanged(index); + if(m_stackWidget->currentIndex()==index) + return; + bool proceed=false; + emit currentAboutToShow(index,&proceed); + if(proceed) + { + m_stackWidget->setCurrentIndex(index); + emit currentChanged(index); + } + else + { + m_listWidget->setCurrentRow(m_stackWidget->currentIndex(),QItemSelectionModel::ClearAndSelect); + } } void MyTabbedStackWidget::insertCornerWidget(int index, QWidget *widget) diff --git a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.h b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.h index 428ed8646..f32524ce5 100644 --- a/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.h +++ b/ground/openpilotgcs/src/libs/utils/mytabbedstackwidget.h @@ -51,9 +51,10 @@ public: void insertCornerWidget(int index, QWidget *widget); int cornerWidgetCount() { return m_cornerWidgetCount; } + QWidget * currentWidget(){return m_stackWidget->currentWidget();} signals: - void currentAboutToShow(int index); + void currentAboutToShow(int index,bool * proceed); void currentChanged(int index); public slots: diff --git a/ground/openpilotgcs/src/plugins/config/configccattitudewidget.cpp b/ground/openpilotgcs/src/plugins/config/configccattitudewidget.cpp index a88bcf2ac..ae9eeeaf0 100644 --- a/ground/openpilotgcs/src/plugins/config/configccattitudewidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configccattitudewidget.cpp @@ -45,16 +45,16 @@ ConfigCCAttitudeWidget::ConfigCCAttitudeWidget(QWidget *parent) : setupButtons(ui->applyButton,ui->saveButton); addUAVObject("AttitudeSettings"); - refreshWidgetsValues(); // The 1st time this panel is instanciated, the autopilot is already connected. UAVObject * settings = AttitudeSettings::GetInstance(getObjectManager()); // Connect the help button connect(ui->ccAttitudeHelp, SIGNAL(clicked()), this, SLOT(openHelp())); - addWidget(ui->rollBias); - addWidget(ui->pitchBias); - addWidget(ui->yawBias); + addUAVObjectToWidgetRelation("AttitudeSettings","ZeroDuringArming",ui->zeroGyroBiasOnArming); + + addUAVObjectToWidgetRelation("AttitudeSettings","BoardRotation",ui->rollBias,AttitudeSettings::BOARDROTATION_ROLL); + addUAVObjectToWidgetRelation("AttitudeSettings","BoardRotation",ui->pitchBias,AttitudeSettings::BOARDROTATION_PITCH); + addUAVObjectToWidgetRelation("AttitudeSettings","BoardRotation",ui->yawBias,AttitudeSettings::BOARDROTATION_YAW); addWidget(ui->zeroBias); - addWidget(ui->zeroGyroBiasOnArming); } ConfigCCAttitudeWidget::~ConfigCCAttitudeWidget() @@ -123,27 +123,6 @@ void ConfigCCAttitudeWidget::timeout() { } -void ConfigCCAttitudeWidget::updateObjectsFromWidgets() { - AttitudeSettings::DataFields attitudeSettingsData = AttitudeSettings::GetInstance(getObjectManager())->getData(); - attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_ROLL] = ui->rollBias->value(); - attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_PITCH] = ui->pitchBias->value(); - attitudeSettingsData.BoardRotation[AttitudeSettings::BOARDROTATION_YAW] = ui->yawBias->value(); - attitudeSettingsData.ZeroDuringArming = ui->zeroGyroBiasOnArming->isChecked() ? AttitudeSettings::ZERODURINGARMING_TRUE : - AttitudeSettings::ZERODURINGARMING_FALSE; - AttitudeSettings::GetInstance(getObjectManager())->setData(attitudeSettingsData); -} - -void ConfigCCAttitudeWidget::refreshWidgetsValues() { - bool dirty=isDirty(); - AttitudeSettings::DataFields attitudeSettingsData = AttitudeSettings::GetInstance(getObjectManager())->getData(); - - ui->rollBias->setValue(attitudeSettingsData.BoardRotation[0]); - ui->pitchBias->setValue(attitudeSettingsData.BoardRotation[1]); - ui->yawBias->setValue(attitudeSettingsData.BoardRotation[2]); - ui->zeroGyroBiasOnArming->setChecked(attitudeSettingsData.ZeroDuringArming == AttitudeSettings::ZERODURINGARMING_TRUE); - setDirty(dirty); -} - void ConfigCCAttitudeWidget::startAccelCalibration() { QMutexLocker locker(&startStop); diff --git a/ground/openpilotgcs/src/plugins/config/configccattitudewidget.h b/ground/openpilotgcs/src/plugins/config/configccattitudewidget.h index 209d7ed28..aa3b6cad7 100644 --- a/ground/openpilotgcs/src/plugins/config/configccattitudewidget.h +++ b/ground/openpilotgcs/src/plugins/config/configccattitudewidget.h @@ -50,8 +50,6 @@ private slots: void attitudeRawUpdated(UAVObject * obj); void timeout(); void startAccelCalibration(); - void updateObjectsFromWidgets(); - virtual void refreshWidgetsValues(); void openHelp(); private: diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp index 5662bb3de..0078a1bf2 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.cpp @@ -99,7 +99,7 @@ ConfigGadgetWidget::ConfigGadgetWidget(QWidget *parent) : QWidget(parent) onAutopilotConnect(); help = 0; - connect(ftw->m_tabBar,SIGNAL(aboutToChange(bool*)),this,SLOT(tabAboutToChange(bool*)));//,Qt::BlockingQueuedConnection); + connect(ftw,SIGNAL(currentAboutToShow(int,bool*)),this,SLOT(tabAboutToChange(int,bool*)));//,Qt::BlockingQueuedConnection); } @@ -155,7 +155,7 @@ void ConfigGadgetWidget::onAutopilotConnect() { emit autopilotConnected(); } -void ConfigGadgetWidget::tabAboutToChange(bool * proceed) +void ConfigGadgetWidget::tabAboutToChange(int i,bool * proceed) { *proceed=true; ConfigTaskWidget * wid=qobject_cast(ftw->currentWidget()); diff --git a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h index f84694642..356d11a74 100644 --- a/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h +++ b/ground/openpilotgcs/src/plugins/config/configgadgetwidget.h @@ -55,7 +55,7 @@ public: public slots: void onAutopilotConnect(); void onAutopilotDisconnect(); - void tabAboutToChange(bool *); + void tabAboutToChange(int i,bool *); signals: void autopilotConnected(); diff --git a/ground/openpilotgcs/src/plugins/config/configoutputwidget.cpp b/ground/openpilotgcs/src/plugins/config/configoutputwidget.cpp index 77138a5a0..0adc41e2c 100644 --- a/ground/openpilotgcs/src/plugins/config/configoutputwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configoutputwidget.cpp @@ -45,7 +45,6 @@ ConfigOutputWidget::ConfigOutputWidget(QWidget *parent) : ConfigTaskWidget(paren m_config->setupUi(this); ExtensionSystem::PluginManager *pm = ExtensionSystem::PluginManager::instance(); - UAVObjectManager *objManager = pm->getObject(); setupButtons(m_config->saveRCOutputToRAM,m_config->saveRCOutputToSD); addUAVObject("ActuatorSettings"); diff --git a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp index 22ad60b0e..cbe554f4e 100644 --- a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp +++ b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.cpp @@ -100,6 +100,8 @@ ConfigStabilizationWidget::ConfigStabilizationWidget(QWidget *parent) : ConfigTa addWidget(m_stabilization->maximumRoll); addWidget(m_stabilization->maximumPitch); addWidget(m_stabilization->maximumYaw); + addWidget(m_stabilization->lowThrottleZeroIntegral); + } ConfigStabilizationWidget::~ConfigStabilizationWidget() @@ -107,13 +109,6 @@ ConfigStabilizationWidget::~ConfigStabilizationWidget() // Do nothing } - -void ConfigStabilizationWidget::enableControls(bool enable) -{ - //m_stabilization->saveStabilizationToRAM->setEnabled(enable); - m_stabilization->saveStabilizationToSD->setEnabled(enable); -} - void ConfigStabilizationWidget::updateRateRollKP(double val) { if (m_stabilization->linkRateRP->isChecked()) { @@ -251,6 +246,8 @@ void ConfigStabilizationWidget::refreshWidgetsValues() m_stabilization->maximumRoll->setValue(stabData.MaximumRate[StabilizationSettings::MAXIMUMRATE_ROLL]); m_stabilization->maximumPitch->setValue(stabData.MaximumRate[StabilizationSettings::MAXIMUMRATE_PITCH]); m_stabilization->maximumYaw->setValue(stabData.MaximumRate[StabilizationSettings::MAXIMUMRATE_YAW]); + m_stabilization->lowThrottleZeroIntegral->setChecked(stabData.LowThrottleZeroIntegral==StabilizationSettings::LOWTHROTTLEZEROINTEGRAL_TRUE ? true : false); + setDirty(dirty); } @@ -299,6 +296,9 @@ void ConfigStabilizationWidget::updateObjectsFromWidgets() stabData.MaximumRate[StabilizationSettings::MAXIMUMRATE_PITCH] = m_stabilization->maximumPitch->value(); stabData.MaximumRate[StabilizationSettings::MAXIMUMRATE_YAW] = m_stabilization->maximumYaw->value(); + stabData.LowThrottleZeroIntegral = (m_stabilization->lowThrottleZeroIntegral->isChecked() ? StabilizationSettings::LOWTHROTTLEZEROINTEGRAL_TRUE :StabilizationSettings::LOWTHROTTLEZEROINTEGRAL_FALSE); + + stabSettings->setData(stabData); // this is atomic } diff --git a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.h b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.h index f17ac593e..e512c5097 100644 --- a/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.h +++ b/ground/openpilotgcs/src/plugins/config/configstabilizationwidget.h @@ -49,7 +49,6 @@ private: Ui_StabilizationWidget *m_stabilization; StabilizationSettings* stabSettings; QTimer updateTimer; - virtual void enableControls(bool enable); private slots: virtual void refreshWidgetsValues();