From afa582aaf0287816217162d33851a8fc7a57f289 Mon Sep 17 00:00:00 2001 From: lm Date: Fri, 14 May 2010 19:18:48 +0200 Subject: [PATCH] Param fixes --- src/ui/QGCParamWidget.cc | 30 ++++++++++++++++++++++++++---- src/ui/QGCParamWidget.h | 2 +- 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc index 0e5c0ea..b780100 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 b4f93c8..d3b0d71 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 };