QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
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 
33 {
34  auto result = new QgsFeatureFilter();
35  result->mFilters = mFilters;
36  return result;
37 }
38 
39 void QgsFeatureFilter::setFilter( const QgsVectorLayer *layer, const QgsExpression &filter )
40 {
41  mFilters[layer->id()] = filter.dump();
42 }
qgsfeaturerequest.h
qgsexpression.h
QgsExpression::dump
QString dump() const
Returns an expression string, constructed from the internal abstract syntax tree.
Definition: qgsexpression.cpp:389
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:39
qgsfeaturefilter.h
QgsFeatureRequest
This class wraps a request for features to a vector layer (or directly its vector data provider).
Definition: qgsfeaturerequest.h:76
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:148
qgsvectorlayer.h
QgsVectorLayer
Represents a vector layer which manages a vector based data sets.
Definition: qgsvectorlayer.h:387
QgsFeatureFilterProvider
Abstract interface for use by classes that filter the features of a layer.
Definition: qgsfeaturefilterprovider.h:41
QgsFeatureFilter::clone
QgsFeatureFilterProvider * clone() const override
Returns a clone of the object.
Definition: qgsfeaturefilter.cpp:32
QgsExpression
Class for parsing and evaluation of expressions (formerly called "search strings").
Definition: qgsexpression.h:105