diff --git a/src/ui/QGCParamWidget.cc b/src/ui/QGCParamWidget.cc index 30c8285b45e145034fd64d44a8dc26f71bf5a4dc..4177186aff02575892cccc3d1b97dea92bd34cfb 100644 --- a/src/ui/QGCParamWidget.cc +++ b/src/ui/QGCParamWidget.cc @@ -206,15 +206,17 @@ void QGCParamWidget::handlePendingParamUpdate(int compId, const QString& paramNa } QTreeWidgetItem* paramItem = updateParameterDisplay(compId,paramName,value); - if (isPending) { - paramItem->setBackground(0, QBrush(QColor(QGC::colorOrange))); - paramItem->setBackground(1, QBrush(QColor(QGC::colorOrange))); - //ensure that the adjusted item is visible - tree->expandItem(paramItem->parent()); - } - else { - paramItem->setBackground(0, Qt::NoBrush); - paramItem->setBackground(1, Qt::NoBrush); + if (paramItem) { + if (isPending) { + paramItem->setBackground(0, QBrush(QColor(QGC::colorOrange))); + paramItem->setBackground(1, QBrush(QColor(QGC::colorOrange))); + //ensure that the adjusted item is visible + tree->expandItem(paramItem->parent()); + } + else { + paramItem->setBackground(0, Qt::NoBrush); + paramItem->setBackground(1, Qt::NoBrush); + } } updatingParamNameLock.clear(); @@ -348,6 +350,24 @@ void QGCParamWidget::insertParamAlphabetical(int indexLowerBound, int indexUpper QTreeWidgetItem* QGCParamWidget::updateParameterDisplay(int compId, QString parameterName, QVariant value) { //qDebug() << "QGCParamWidget::updateParameterDisplay" << parameterName; + + // Filter the parameters according to the filter list + if (_filterList.count() != 0) { + bool filterFound = false; + foreach(QString paramFilter, _filterList) { + if (paramFilter.endsWith("*") && parameterName.startsWith(paramFilter.left(paramFilter.size() - 1))) { + filterFound = true; + break; + } + if (paramFilter == parameterName) { + filterFound = true; + break; + } + } + if (!filterFound) { + return NULL; + } + } // Reference to item in tree QTreeWidgetItem* paramItem = NULL; diff --git a/src/ui/QGCParamWidget.h b/src/ui/QGCParamWidget.h index 98b5d044a2b98ad28c7c6204aab14f732cf24348..5581c5f2c8c4a66cc4c7f69c47c6b2e3d685669f 100644 --- a/src/ui/QGCParamWidget.h +++ b/src/ui/QGCParamWidget.h @@ -52,6 +52,11 @@ class QGCParamWidget : public QGCBaseParamWidget Q_OBJECT public: QGCParamWidget(QWidget *parent = 0); + + /// @brief Sets the list of parameters which should be shown by this editor. Parameter names can be + /// wildcarded at the end such as this: "RC*". Which will filter to all parameters which begin + /// with "RC". The wildcard (*) can only be at the end of the string. + void setFilterList(const QStringList& filterList) { _filterList = filterList; } protected: virtual void setParameterStatusMsg(const QString& msg); @@ -98,6 +103,7 @@ protected: QMap* > paramGroups; ///< Parameter groups to organize component items QLabel* statusLabel; ///< User-facing parameter status label QTreeWidget* tree; ///< The parameter tree + QStringList _filterList; };