QGIS API Documentation  3.4.15-Madeira (e83d02e274)
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 }
Class for parsing and evaluation of expressions (formerly called "search strings").
void filterFeatures(const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures) const override
Filter the features of the layer.
QString dump() const
Returns an expression string, constructed from the internal abstract syntax tree. ...
QgsFeatureRequest & setFilterExpression(const QString &expression)
Set the filter expression.
void setFilter(const QgsVectorLayer *layer, const QgsExpression &expression)
Set a filter for the given layer.
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.
Abstract interface for use by classes that filter the features of a layer.
QgsFeatureFilterProvider * clone() const override
Returns a clone of the object.
QgsFeatureFilter()=default
Constructor.
Represents a vector layer which manages a vector based data sets.