Commit 59a34f58 authored by Don Gagne's avatar Don Gagne
Browse files

Add support for filter list

This allows you to filter the list of parameters the widget displays.
parent fc6c0692
......@@ -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;
......
......@@ -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<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;
};
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment