QGIS API Documentation  3.6.0-Noosa (5873452)
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.
QString id() const
Returns the layer's unique ID, which is used to access this layer from QgsProject.
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)...
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.