QGIS API Documentation  3.26.3-Buenos Aires (65e4edfdad)
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 }
qgsfeaturerequest.h
qgsexpression.h
QgsExpression::dump
QString dump() const
Returns an expression string, constructed from the internal abstract syntax tree.
Definition: qgsexpression.cpp:393
QgsFeatureFilter::layerAttributes
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.
Definition: qgsfeaturefilter.cpp:32
QgsFeatureFilter::filterFeatures
void filterFeatures(const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures) const override
Filter the features of the layer.
Definition: qgsfeaturefilter.cpp:23
QgsFeatureFilter::setFilter
void setFilter(const QgsVectorLayer *layer, const QgsExpression &expression)
Set a filter for the given layer.
Definition: qgsfeaturefilter.cpp:45
qgsfeaturefilter.h
QgsFeatureRequest
This class wraps a request for features to a vector layer (or directly its vector data provider).
Definition: qgsfeaturerequest.h:83
QgsFeatureFilter::QgsFeatureFilter
QgsFeatureFilter()=default
Constructor.
QgsMapLayer::id
QString id() const
Returns the layer's unique ID, which is used to access this layer from QgsProject.
Definition: qgsmaplayer.cpp:169
qgsvectorlayer.h
QgsVectorLayer
Represents a vector layer which manages a vector based data sets.
Definition: qgsvectorlayer.h:391
QgsFeatureFilterProvider
Abstract interface for use by classes that filter the features or attributes of a layer.
Definition: qgsfeaturefilterprovider.h:43
QgsFeatureFilter::clone
QgsFeatureFilterProvider * clone() const override
Returns a clone of the object.
Definition: qgsfeaturefilter.cpp:38
QgsExpression
Class for parsing and evaluation of expressions (formerly called "search strings")....
Definition: qgsexpression.h:102