#include "CompassConfig.h" CompassConfig::CompassConfig(QWidget *parent) : QWidget(parent) { m_uas=0; ui.setupUi(this); ui.autoDecCheckBox->setEnabled(false); ui.enableCheckBox->setEnabled(false); ui.orientationComboBox->setEnabled(false); ui.declinationLineEdit->setEnabled(false); connect(ui.enableCheckBox,SIGNAL(clicked(bool)),this,SLOT(enableClicked(bool))); connect(ui.autoDecCheckBox,SIGNAL(clicked(bool)),this,SLOT(autoDecClicked(bool))); connect(ui.orientationComboBox,SIGNAL(currentIndexChanged(int)),this,SLOT(orientationComboChanged(int))); connect(UASManager::instance(),SIGNAL(activeUASSet(UASInterface*)),this,SLOT(activeUASSet(UASInterface*))); activeUASSet(UASManager::instance()->getActiveUAS()); } CompassConfig::~CompassConfig() { } void CompassConfig::activeUASSet(UASInterface *uas) { if (!uas) return; if (!m_uas) { disconnect(m_uas,SIGNAL(parameterChanged(int,int,QString,QVariant)),this,SLOT(parameterChanged(int,int,QString,QVariant))); } m_uas = uas; connect(m_uas,SIGNAL(parameterChanged(int,int,QString,QVariant)),this,SLOT(parameterChanged(int,int,QString,QVariant))); } void CompassConfig::parameterChanged(int uas, int component, QString parameterName, QVariant value) { if (parameterName == "MAG_ENABLE") { if (value.toInt() == 0) { ui.enableCheckBox->setChecked(false); ui.autoDecCheckBox->setEnabled(false); ui.declinationLineEdit->setEnabled(false); } else { ui.enableCheckBox->setChecked(true); ui.autoDecCheckBox->setEnabled(true); ui.declinationLineEdit->setEnabled(true); } ui.enableCheckBox->setEnabled(true); } else if (parameterName == "COMPASS_AUTODEC") { if (value.toInt() == 0) { ui.autoDecCheckBox->setChecked(false); } else { ui.autoDecCheckBox->setChecked(true); } } else if (parameterName == "COMPASS_DEC") { ui.declinationLineEdit->setText(QString::number(value.toDouble())); } } void CompassConfig::enableClicked(bool enabled) { if (m_uas) { if (enabled) { m_uas->setParameter(0,"MAG_ENABLE",QVariant(1)); ui.autoDecCheckBox->setEnabled(true); if (!ui.autoDecCheckBox->isChecked()) { ui.declinationLineEdit->setEnabled(true); } } else { m_uas->setParameter(0,"MAG_ENABLE",QVariant(0)); ui.autoDecCheckBox->setEnabled(false); ui.declinationLineEdit->setEnabled(false); } } } void CompassConfig::autoDecClicked(bool enabled) { if (m_uas) { if (enabled) { m_uas->setParameter(0,"COMPASS_AUTODEC",QVariant(1)); } else { m_uas->setParameter(0,"COMPASS_AUTODEC",QVariant(0)); } } } void CompassConfig::orientationComboChanged(int index) { }