QGIS API Documentation
4.3.0-Master (0ad0cdb9438)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core
qgsgroupedfeaturefilterprovider.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsgroupedfeaturefilterprovider.cpp
3
--------------------------------
4
begin : 2025-07-26
5
copyright : (C) 2025 by Mathieu Pellerin
6
email : mathieu at opengis dot ch
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 "
qgsgroupedfeaturefilterprovider.h
"
19
20
#include "
qgsfeaturerequest.h
"
21
#include "
qgsvectorlayer.h
"
22
23
bool
QgsGroupedFeatureFilterProvider::isFilterThreadSafe
()
const
24
{
25
for
(
const
QgsFeatureFilterProvider
*provider : mProviders )
26
{
27
Q_NOWARN_DEPRECATED_PUSH
28
if
( !provider->isFilterThreadSafe() )
29
{
30
return
false
;
31
}
32
Q_NOWARN_DEPRECATED_POP
33
}
34
return
true
;
35
}
36
37
void
QgsGroupedFeatureFilterProvider::filterFeatures
(
const
QgsVectorLayer
*layer,
QgsFeatureRequest
&
filterFeatures
)
const
38
{
39
for
(
const
QgsFeatureFilterProvider
*provider : mProviders )
40
{
41
QgsFeatureRequest
temp;
42
Q_NOWARN_DEPRECATED_PUSH
43
if
( provider->isFilterThreadSafe() )
44
{
45
provider->filterFeatures( layer->
id
(), temp );
46
}
47
else
48
{
49
provider->filterFeatures( layer, temp );
50
}
51
Q_NOWARN_DEPRECATED_POP
52
if
(
auto
*lFilterExpression = temp.
filterExpression
() )
53
{
54
filterFeatures
.combineFilterExpression( lFilterExpression->dump() );
55
}
56
}
57
}
58
59
void
QgsGroupedFeatureFilterProvider::filterFeatures
(
const
QString &layerId,
QgsFeatureRequest
&
filterFeatures
)
const
60
{
61
for
(
const
QgsFeatureFilterProvider
*provider : mProviders )
62
{
63
QgsFeatureRequest
temp;
64
provider->filterFeatures( layerId, temp );
65
if
(
auto
*lFilterExpression = temp.
filterExpression
() )
66
{
67
filterFeatures
.combineFilterExpression( lFilterExpression->dump() );
68
}
69
}
70
}
71
72
QStringList
QgsGroupedFeatureFilterProvider::layerAttributes
(
const
QgsVectorLayer
*layer,
const
QStringList &attributes )
const
73
{
74
QStringList allowedAttributes { attributes };
75
for
(
const
QgsFeatureFilterProvider
*provider : mProviders )
76
{
77
const
QgsFeatureRequest
temp;
78
allowedAttributes = provider->layerAttributes( layer, allowedAttributes );
79
}
80
return
allowedAttributes;
81
}
82
83
QgsGroupedFeatureFilterProvider
*
QgsGroupedFeatureFilterProvider::clone
()
const
84
{
85
QgsGroupedFeatureFilterProvider
*filter =
new
QgsGroupedFeatureFilterProvider
();
86
filter->mProviders = mProviders;
87
return
filter;
88
}
89
90
QgsGroupedFeatureFilterProvider
&
QgsGroupedFeatureFilterProvider::addProvider
(
const
QgsFeatureFilterProvider
*provider )
91
{
92
if
( provider )
93
{
94
mProviders.append( provider );
95
}
96
return
*
this
;
97
}
QgsFeatureFilterProvider::QgsFeatureFilterProvider
QgsFeatureFilterProvider()=default
QgsFeatureRequest
Wraps a request for features to a vector layer (or directly its vector data provider).
Definition
qgsfeaturerequest.h:85
QgsFeatureRequest::filterExpression
QgsExpression * filterExpression() const
Returns the filter expression (if set).
Definition
qgsfeaturerequest.h:525
QgsGroupedFeatureFilterProvider::isFilterThreadSafe
Q_DECL_DEPRECATED bool isFilterThreadSafe() const override
Returns true if the filterFeature function is thread safe, which will lead to reliance on layer ID in...
Definition
qgsgroupedfeaturefilterprovider.cpp:23
QgsGroupedFeatureFilterProvider::QgsGroupedFeatureFilterProvider
QgsGroupedFeatureFilterProvider()=default
Constructor.
QgsGroupedFeatureFilterProvider::clone
QgsGroupedFeatureFilterProvider * clone() const override
Create a clone of the feature filter provider.
Definition
qgsgroupedfeaturefilterprovider.cpp:83
QgsGroupedFeatureFilterProvider::filterFeatures
Q_DECL_DEPRECATED void filterFeatures(const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures) const override
Add additional filters to the feature request to further restrict the features returned by the reques...
Definition
qgsgroupedfeaturefilterprovider.cpp:37
QgsGroupedFeatureFilterProvider::addProvider
QgsGroupedFeatureFilterProvider & addProvider(const QgsFeatureFilterProvider *provider)
Add another filter provider to the group.
Definition
qgsgroupedfeaturefilterprovider.cpp:90
QgsGroupedFeatureFilterProvider::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
qgsgroupedfeaturefilterprovider.cpp:72
QgsMapLayer::id
QString id
Definition
qgsmaplayer.h:86
QgsVectorLayer
Represents a vector layer which manages a vector based dataset.
Definition
qgsvectorlayer.h:414
Q_NOWARN_DEPRECATED_POP
#define Q_NOWARN_DEPRECATED_POP
Definition
qgis.h:8379
Q_NOWARN_DEPRECATED_PUSH
#define Q_NOWARN_DEPRECATED_PUSH
Definition
qgis.h:8378
qgsfeaturerequest.h
qgsgroupedfeaturefilterprovider.h
qgsvectorlayer.h
Generated on
for QGIS API Documentation by
1.17.0