QGIS API Documentation  3.23.0-Master (dd0cd13a00)
qgsfeaturefilter.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsfeaturefilter.cpp
3  --------------------
4  begin : 26-10-2017
5  copyright : (C) 2017 by Patrick Valsecchi
6  email : patrick dot valsecchi at camptocamp dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #include "qgsfeaturefilter.h"
19 #include "qgsfeaturerequest.h"
20 #include "qgsvectorlayer.h"
21 #include "qgsexpression.h"
22 
23 void QgsFeatureFilter::filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const
24 {
25  const QString expr = mFilters[layer->id()];
26  if ( !expr.isEmpty() )
27  {
28  filterFeatures.setFilterExpression( expr );
29  }
30 }
31 
32 QStringList QgsFeatureFilter::layerAttributes( const QgsVectorLayer *, const QStringList &attributes ) const
33 {
34  // Do nothing
35  return attributes;
36 }
37 
39 {
40  auto result = new QgsFeatureFilter();
41  result->mFilters = mFilters;
42  return result;
43 }
44 
45 void QgsFeatureFilter::setFilter( const QgsVectorLayer *layer, const QgsExpression &filter )
46 {
47  mFilters[layer->id()] = filter.dump();
48 }
Class for parsing and evaluation of expressions (formerly called "search strings").
QString dump() const
Returns an expression string, constructed from the internal abstract syntax tree.
Abstract interface for use by classes that filter the features or attributes of a layer.
void setFilter(const QgsVectorLayer *layer, const QgsExpression &expression)
Set a filter for the given layer.
QgsFeatureFilter()=default
Constructor.
QStringList layerAttributes(const QgsVectorLayer *layer, const QStringList &attributes) const override
Returns the list of visible attribute names from a list of attributes names for the given layer.
void filterFeatures(const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures) const override
Filter the features of the layer.
QgsFeatureFilterProvider * clone() const override
Returns a clone of the object.
This class wraps a request for features to a vector layer (or directly its vector data provider).
QString id() const
Returns the layer's unique ID, which is used to access this layer from QgsProject.
Represents a vector layer which manages a vector based data sets.