From 42332c69134b5ca648e2209dd37fbbd61c857f0d Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Mon, 15 Jan 2018 12:36:42 +0100 Subject: [PATCH] LP-551 Add enableBanks function - Refine bank freeze/unfreeze - Remove unused bankModeName() --- .../gcs/src/plugins/config/configoutputwidget.cpp | 49 ++++++++++------------ ground/gcs/src/plugins/config/configoutputwidget.h | 3 +- 2 files changed, 25 insertions(+), 27 deletions(-) diff --git a/ground/gcs/src/plugins/config/configoutputwidget.cpp b/ground/gcs/src/plugins/config/configoutputwidget.cpp index 028009c11..5a51df094 100644 --- a/ground/gcs/src/plugins/config/configoutputwidget.cpp +++ b/ground/gcs/src/plugins/config/configoutputwidget.cpp @@ -224,14 +224,7 @@ void ConfigOutputWidget::runChannelTests(bool state) channelTestsStarted = state; - // Disable/Enable banks - for (int i = 0; i < m_banks.count(); i++) { - OutputBankControls controls = m_banks.at(i); - bool isUsed = !(controls.rateCombo()->currentText() == "-" && controls.modeCombo()->currentText() == "PWM"); - if (isUsed) { - controls.modeCombo()->setEnabled(!state); - } - } + enableBanks(!state); ActuatorCommand *obj = ActuatorCommand::GetInstance(getObjectManager()); UAVObject::Metadata mdata = obj->getMetadata(); @@ -420,6 +413,9 @@ void ConfigOutputWidget::refreshWidgetsValuesImpl(UAVObject *obj) } } + // Store how many banks are active according to the board + activeBanksCount = bankLabels.count(); + int i = 0; foreach(QString banklabel, bankLabels) { OutputBankControls controls = m_banks.at(i); @@ -429,11 +425,12 @@ void ConfigOutputWidget::refreshWidgetsValuesImpl(UAVObject *obj) if (index == -1) { controls.rateCombo()->addItem(tr("%1 Hz").arg(actuatorSettingsData.BankUpdateFreq[i]), actuatorSettingsData.BankUpdateFreq[i]); } + bool isPWM = (controls.modeCombo()->currentIndex() == ActuatorSettings::BANKMODE_PWM); controls.rateCombo()->setCurrentIndex(index); - controls.rateCombo()->setEnabled(controls.modeCombo()->currentIndex() == ActuatorSettings::BANKMODE_PWM); + controls.rateCombo()->setEnabled(!inputCalibrationStarted && !channelTestsStarted && isPWM); setColor(controls.rateCombo(), controls.color()); + controls.modeCombo()->setEnabled(!inputCalibrationStarted && !channelTestsStarted); setColor(controls.modeCombo(), controls.color()); - controls.modeCombo()->setEnabled((inputCalibrationStarted || channelTestsStarted) ? false : true); i++; } @@ -761,6 +758,21 @@ void ConfigOutputWidget::updateChannelConfigWarning(ChannelConfigWarning warning setConfigWarning(warning_str); } +void ConfigOutputWidget::enableBanks(bool state) +{ + // Disable/Enable banks + for (int i = 0; i < m_banks.count(); i++) { + OutputBankControls controls = m_banks.at(i); + if (i < activeBanksCount) { + controls.modeCombo()->setEnabled(state); + controls.rateCombo()->setEnabled(state); + } else { + controls.modeCombo()->setEnabled(false); + controls.rateCombo()->setEnabled(false); + } + } +} + void ConfigOutputWidget::setBoardWarning(QString message) { m_ui->boardWarningFrame->setVisible(!message.isNull()); @@ -775,22 +787,6 @@ void ConfigOutputWidget::setConfigWarning(QString message) m_ui->configWarningTxt->setText(message); } -QString ConfigOutputWidget::bankModeName(int index) -{ - UAVDataObject *actuator = dynamic_cast(getObjectManager()->getObject(QString("ActuatorSettings"))); - - Q_ASSERT(actuator); - UAVObjectField *field = actuator->getField("BankMode"); - Q_ASSERT(field); - QStringList bankModeOptions; - - if (field) { - bankModeOptions = field->getOptions(); - } - - return bankModeOptions.at(index); -} - void ConfigOutputWidget::inputCalibrationStatus(bool started) { inputCalibrationStarted = started; @@ -798,6 +794,7 @@ void ConfigOutputWidget::inputCalibrationStatus(bool started) // Disable UI when a input calibration is started // so user cannot manipulate settings. enableControls(!started); + enableBanks(!started); // Disable every channel form when needed for (unsigned int i = 0; i < ActuatorCommand::CHANNEL_NUMELEM; i++) { diff --git a/ground/gcs/src/plugins/config/configoutputwidget.h b/ground/gcs/src/plugins/config/configoutputwidget.h index 1789da3e8..340d1d421 100644 --- a/ground/gcs/src/plugins/config/configoutputwidget.h +++ b/ground/gcs/src/plugins/config/configoutputwidget.h @@ -105,6 +105,8 @@ private: int m_mccDataRate; UAVObject::Metadata m_accInitialData; QList m_banks; + int activeBanksCount; + void enableBanks(bool state); bool inputCalibrationStarted; bool channelTestsStarted; @@ -119,7 +121,6 @@ private: ChannelConfigWarning checkChannelConfig(OutputChannelForm *channelForm, OutputBankControls *bankControls); void checkOutputConfig(); void updateChannelConfigWarning(ChannelConfigWarning warning); - QString bankModeName(int index); private slots: void updateBoardWarnings(UAVObject *); -- 2.11.4.GIT