1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2025-03-16 08:29:15 +01:00

Merged in m_thread/librepilot/thread/LP-235_Failsafe_Flight_Mode (pull request #189)

LP-235 Changed the contents and logic of the Failsafe flight mode setting.
This commit is contained in:
Philippe Renon 2016-03-05 17:23:17 +01:00
commit de1a0ce49a
2 changed files with 28 additions and 1 deletions

View File

@ -250,6 +250,8 @@ ConfigInputWidget::ConfigInputWidget(QWidget *parent) :
connect(ui->failsafeFlightMode, SIGNAL(currentIndexChanged(int)), this, SLOT(failsafeFlightModeChanged(int)));
connect(ui->failsafeFlightModeCb, SIGNAL(toggled(bool)), this, SLOT(failsafeFlightModeCbToggled(bool)));
connect(this, SIGNAL(enableControlsChanged(bool)), this, SLOT(enableControlsChanged(bool)));
addWidget(ui->configurationWizard);
addWidget(ui->runCalibration);
addWidget(ui->failsafeFlightModeCb);
@ -448,7 +450,9 @@ ConfigInputWidget::ConfigInputWidget(QWidget *parent) :
void ConfigInputWidget::buildOptionComboBox(QComboBox *combo, UAVObjectField *field, int index, bool applyLimits)
{
if (combo == ui->failsafeFlightMode) {
ConfigTaskWidget::buildOptionComboBox(combo, flightModeSettingsObj->getField("FlightModePosition"), index, applyLimits);
for (quint32 i = 0; i < FlightModeSettings::FLIGHTMODEPOSITION_NUMELEM; i++) {
ui->failsafeFlightMode->addItem(QString("Position %1").arg(i + 1), QVariant(i));
}
} else {
ConfigTaskWidget::buildOptionComboBox(combo, field, index, applyLimits);
}
@ -1743,6 +1747,11 @@ void ConfigInputWidget::highlightStabilizationMode(int pos)
}
}
void setComboBoxItemEnabled(QComboBox *combo, int index, bool enabled = true)
{
combo->setItemData(index, enabled ? QVariant(1 | 32) : QVariant(0), Qt::UserRole - 1);
}
void ConfigInputWidget::updatePositionSlider()
{
ManualControlSettings::DataFields manualSettingsDataPriv = manualSettingsObj->getData();
@ -1753,31 +1762,37 @@ void ConfigInputWidget::updatePositionSlider()
ui->fmsModePos6->setEnabled(true);
ui->pidBankSs1_5->setEnabled(true);
ui->assistControlPos6->setEnabled(true);
setComboBoxItemEnabled(ui->failsafeFlightMode, 5);
// pass through
case 5:
ui->fmsModePos5->setEnabled(true);
ui->pidBankSs1_4->setEnabled(true);
ui->assistControlPos5->setEnabled(true);
setComboBoxItemEnabled(ui->failsafeFlightMode, 4);
// pass through
case 4:
ui->fmsModePos4->setEnabled(true);
ui->pidBankSs1_3->setEnabled(true);
ui->assistControlPos4->setEnabled(true);
setComboBoxItemEnabled(ui->failsafeFlightMode, 3);
// pass through
case 3:
ui->fmsModePos3->setEnabled(true);
ui->pidBankSs1_2->setEnabled(true);
ui->assistControlPos3->setEnabled(true);
setComboBoxItemEnabled(ui->failsafeFlightMode, 2);
// pass through
case 2:
ui->fmsModePos2->setEnabled(true);
ui->pidBankSs1_1->setEnabled(true);
ui->assistControlPos2->setEnabled(true);
setComboBoxItemEnabled(ui->failsafeFlightMode, 1);
// pass through
case 1:
ui->fmsModePos1->setEnabled(true);
ui->pidBankSs1_0->setEnabled(true);
ui->assistControlPos1->setEnabled(true);
setComboBoxItemEnabled(ui->failsafeFlightMode, 0);
// pass through
case 0:
break;
@ -1788,31 +1803,37 @@ void ConfigInputWidget::updatePositionSlider()
ui->fmsModePos1->setEnabled(false);
ui->pidBankSs1_0->setEnabled(false);
ui->assistControlPos1->setEnabled(false);
setComboBoxItemEnabled(ui->failsafeFlightMode, 0, false);
// pass through
case 1:
ui->fmsModePos2->setEnabled(false);
ui->pidBankSs1_1->setEnabled(false);
ui->assistControlPos2->setEnabled(false);
setComboBoxItemEnabled(ui->failsafeFlightMode, 1, false);
// pass through
case 2:
ui->fmsModePos3->setEnabled(false);
ui->pidBankSs1_2->setEnabled(false);
ui->assistControlPos3->setEnabled(false);
setComboBoxItemEnabled(ui->failsafeFlightMode, 2, false);
// pass through
case 3:
ui->fmsModePos4->setEnabled(false);
ui->pidBankSs1_3->setEnabled(false);
ui->assistControlPos4->setEnabled(false);
setComboBoxItemEnabled(ui->failsafeFlightMode, 3, false);
// pass through
case 4:
ui->fmsModePos5->setEnabled(false);
ui->pidBankSs1_4->setEnabled(false);
ui->assistControlPos5->setEnabled(false);
setComboBoxItemEnabled(ui->failsafeFlightMode, 4, false);
// pass through
case 5:
ui->fmsModePos6->setEnabled(false);
ui->pidBankSs1_5->setEnabled(false);
ui->assistControlPos6->setEnabled(false);
setComboBoxItemEnabled(ui->failsafeFlightMode, 5, false);
// pass through
case 6:
default:
@ -2091,3 +2112,8 @@ void ConfigInputWidget::failsafeFlightModeCbToggled(bool checked)
{
ui->failsafeFlightMode->setCurrentIndex(checked ? 0 : -1);
}
void ConfigInputWidget::enableControlsChanged(bool enabled)
{
ui->failsafeFlightMode->setEnabled(enabled && ui->failsafeFlightMode->currentIndex() != -1);
}

View File

@ -233,6 +233,7 @@ private slots:
void failsafeFlightModeChanged(int index);
void failsafeFlightModeCbToggled(bool checked);
void enableControlsChanged(bool enabled);
protected:
void resizeEvent(QResizeEvent *event);