diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc index 0e5c0eab0cfe124119a549e439178ffffdedb8eb..b78010031420eb28cf91fb8b642b453bcdf7c532 100644 --- a/src/ui/QGCParamWidget.cc +++ b/src/ui/QGCParamWidget.cc @@ -43,7 +43,8 @@ This file is part of the QGROUNDCONTROL project QGCParamWidget::QGCParamWidget(UASInterface* uas, QWidget *parent) : QWidget(parent), mav(uas), - components(new QMap()) + components(new QMap()), + changedValues()//QMap* >()) { // Create tree widget tree = new QTreeWidget(this); @@ -140,6 +141,7 @@ void QGCParamWidget::addParameter(int uas, int component, QString parameterName, { addComponent(uas, component, "Component #" + QString::number(component)); } + // TODO Replace old value components->value(component)->addChild(item); item->setFlags(item->flags() | Qt::ItemIsEditable); //connect(item, SIGNAL()) @@ -158,12 +160,29 @@ void QGCParamWidget::requestParameterList() mav->requestParameters(); } -void QGCParamWidget::parameterItemChanged(QTreeWidgetItem* prev, QTreeWidgetItem* curr) +void QGCParamWidget::parameterItemChanged(QTreeWidgetItem* current, QTreeWidgetItem* previous) { int key; - if (!changedValues->contains(key)) + if (!changedValues.contains(key)) { - + changedValues.insert(key, new QMap()); + } + QMap* map = changedValues.value(key, NULL); + if (map) + { + bool ok; + QString str = current->data(0, Qt::DisplayRole).toString(); + float value = current->data(1, Qt::DisplayRole).toDouble(&ok); + // Send parameter to MAV + if (ok) + { + float oldvalue = current->data(1, Qt::DisplayRole).toDouble(&ok); + if (ok && (oldvalue != value)) + { + qDebug() << "PARAM CHANGED: KEY:" << str << "VALUE:" << value; + map->insert(str, value); + } + } } } @@ -210,6 +229,9 @@ void QGCParamWidget::setParameters() } } } + + // TODO Instead of clearing, keep parameter list and wait for individual update messages + clear(); //mav->requestParameters(); qDebug() << __FILE__ << __LINE__ << "SETTING ALL PARAMETERS"; diff --git a/src/ui/QGCParamWidget.h b/src/ui/QGCParamWidget.h index b4f93c8f0577f44669d49589815ae4ab376b5d1c..d3b0d71ddd977b623e6aa82d458350ef6bd440af 100644 --- a/src/ui/QGCParamWidget.h +++ b/src/ui/QGCParamWidget.h @@ -73,7 +73,7 @@ protected: UASInterface* mav; ///< The MAV this widget is controlling QTreeWidget* tree; ///< The parameter tree QMap* components; ///< The list of components - QMap >* changedValues; ///< Changed values + QMap* > changedValues; ///< Changed values };