/**************************************************************************** * * (c) 2009-2016 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * ****************************************************************************/ /// @file /// @author Thomas Gubler #include "QGCMapRCToParamDialog.h" #include "ui_QGCMapRCToParamDialog.h" #include "ParameterManager.h" #include #include #include #include #include QGCMapRCToParamDialog::QGCMapRCToParamDialog(QString param_id, UASInterface *mav, MultiVehicleManager* multiVehicleManager, QWidget *parent) : QDialog(parent) , param_id(param_id) , mav(mav) , _multiVehicleManager(multiVehicleManager) , ui(new Ui::QGCMapRCToParamDialog) { ui->setupUi(this); // refresh the parameter from onboard to make sure the current value is used Vehicle* vehicle = _multiVehicleManager->getVehicleById(mav->getUASID()); Fact* paramFact = vehicle->parameterManager()->getParameter(FactSystem::defaultComponentId, param_id); ui->minValueDoubleSpinBox->setValue(paramFact->rawMin().toDouble()); ui->maxValueDoubleSpinBox->setValue(paramFact->rawMax().toDouble()); // only enable ok button when param was refreshed QPushButton *okButton = ui->buttonBox->button(QDialogButtonBox::Ok); okButton->setEnabled(false); ui->paramIdLabel->setText(param_id); connect(paramFact, &Fact::vehicleUpdated, this, &QGCMapRCToParamDialog::_parameterUpdated); vehicle->parameterManager()->refreshParameter(FactSystem::defaultComponentId, param_id); } QGCMapRCToParamDialog::~QGCMapRCToParamDialog() { delete ui; } void QGCMapRCToParamDialog::accept() { emit mapRCToParamDialogResult(param_id, (float)ui->scaleDoubleSpinBox->value(), (float)ui->value0DoubleSpinBox->value(), (quint8)ui->rcParamChannelComboBox->currentIndex(), (float)ui->minValueDoubleSpinBox->value(), (float)ui->maxValueDoubleSpinBox->value()); QDialog::accept(); } void QGCMapRCToParamDialog::_parameterUpdated(QVariant value) { Q_UNUSED(value); ui->infoLabel->setText("Parameter value is up to date"); ui->value0DoubleSpinBox->setValue(value.toDouble()); ui->value0DoubleSpinBox->setEnabled(true); connect(this, &QGCMapRCToParamDialog::mapRCToParamDialogResult, mav, &UASInterface::sendMapRCToParam); QPushButton *okButton = ui->buttonBox->button(QDialogButtonBox::Ok); okButton->setEnabled(true); }