Browse Source

Add support for filter list

This allows you to filter the list of parameters the widget displays.
QGC4.4
Don Gagne 11 years ago
parent
commit
18138fbb84
  1. 38
      src/ui/QGCParamWidget.cc
  2. 6
      src/ui/QGCParamWidget.h

38
src/ui/QGCParamWidget.cc

@ -206,15 +206,17 @@ void QGCParamWidget::handlePendingParamUpdate(int compId, const QString& paramNa @@ -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 @@ -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;

6
src/ui/QGCParamWidget.h

@ -52,6 +52,11 @@ class QGCParamWidget : public QGCBaseParamWidget @@ -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: @@ -98,6 +103,7 @@ protected:
QMap<int, QMap<QString, QTreeWidgetItem*>* > paramGroups; ///< Parameter groups to organize component items
QLabel* statusLabel; ///< User-facing parameter status label
QTreeWidget* tree; ///< The parameter tree
QStringList _filterList;
};

Loading…
Cancel
Save