QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
gui
qgslayermetadataresultsproxymodel.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgslayermetadataresultsproxymodel.cpp - QgsLayerMetadataResultsProxyModel
3
4
---------------------
5
begin : 1.9.2022
6
copyright : (C) 2022 by Alessandro Pasotti
7
email : elpaso at itopen dot it
8
***************************************************************************
9
* *
10
* This program is free software; you can redistribute it and/or modify *
11
* it under the terms of the GNU General Public License as published by *
12
* the Free Software Foundation; either version 2 of the License, or *
13
* (at your option) any later version. *
14
* *
15
***************************************************************************/
16
#include "
qgslayermetadataresultsproxymodel.h
"
17
18
#include "
qgsabstractlayermetadataprovider.h
"
19
20
#include "moc_qgslayermetadataresultsproxymodel.cpp"
21
22
QgsLayerMetadataResultsProxyModel::QgsLayerMetadataResultsProxyModel
( QObject *parent )
23
: QSortFilterProxyModel( parent )
24
{}
25
26
void
QgsLayerMetadataResultsProxyModel::setFilterExtent
(
const
QgsRectangle
&extent )
27
{
28
mFilterExtent = extent;
29
invalidateFilter();
30
}
31
32
void
QgsLayerMetadataResultsProxyModel::setFilterGeometryType
(
const
Qgis::GeometryType
geometryType )
33
{
34
mFilterGeometryType = geometryType;
35
invalidateFilter();
36
}
37
38
void
QgsLayerMetadataResultsProxyModel::setFilterString
(
const
QString &
filterString
)
39
{
40
mFilterString =
filterString
;
41
invalidateFilter();
42
}
43
44
void
QgsLayerMetadataResultsProxyModel::setFilterMapLayerType
(
const
Qgis::LayerType
mapLayerType )
45
{
46
mFilterMapLayerType = mapLayerType;
47
invalidateFilter();
48
}
49
50
bool
QgsLayerMetadataResultsProxyModel::filterAcceptsRow
(
int
sourceRow,
const
QModelIndex &sourceParent )
const
51
{
52
QModelIndex index0 = sourceModel()->index( sourceRow, 0, sourceParent );
53
bool
result { QSortFilterProxyModel::filterAcceptsRow( sourceRow, sourceParent ) };
54
55
if
( result )
56
{
57
const
QgsLayerMetadataProviderResult
&metadataResult { sourceModel()->data( index0, Qt::ItemDataRole::UserRole ).value<
QgsLayerMetadataProviderResult
>() };
58
59
if
( !mFilterString.isEmpty() )
60
{
61
result = result && metadataResult.
contains
( mFilterString );
62
}
63
64
if
( result && !mFilterExtent.isEmpty() )
65
{
66
// Exclude aspatial from extent filter
67
result = result
68
&& ( metadataResult.
geometryType
() !=
Qgis::GeometryType::Unknown
&& metadataResult.
geometryType
() !=
Qgis::GeometryType::Null
)
69
&& mFilterExtent.intersects( metadataResult.
geographicExtent
().
boundingBox
() );
70
}
71
72
if
( result && mFilterMapLayerTypeEnabled )
73
{
74
result = result && metadataResult.
layerType
() == mFilterMapLayerType;
75
}
76
77
if
( result && mFilterGeometryTypeEnabled )
78
{
79
if
( mFilterGeometryType ==
Qgis::GeometryType::Unknown
|| mFilterGeometryType ==
Qgis::GeometryType::Null
)
80
{
81
result = result && ( metadataResult.
geometryType
() ==
Qgis::GeometryType::Unknown
|| metadataResult.
geometryType
() ==
Qgis::GeometryType::Null
);
82
}
83
else
84
{
85
result = result && metadataResult.
geometryType
() == mFilterGeometryType;
86
}
87
}
88
}
89
90
return
result;
91
}
92
93
void
QgsLayerMetadataResultsProxyModel::setFilterMapLayerTypeEnabled
(
bool
enabled )
94
{
95
mFilterMapLayerTypeEnabled = enabled;
96
invalidateFilter();
97
}
98
99
void
QgsLayerMetadataResultsProxyModel::setFilterGeometryTypeEnabled
(
bool
enabled )
100
{
101
mFilterGeometryTypeEnabled = enabled;
102
invalidateFilter();
103
}
104
105
const
QString
QgsLayerMetadataResultsProxyModel::filterString
()
const
106
{
107
return
mFilterString;
108
}
Qgis::GeometryType
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition
qgis.h:399
Qgis::GeometryType::Unknown
@ Unknown
Unknown types.
Definition
qgis.h:403
Qgis::GeometryType::Null
@ Null
No geometry.
Definition
qgis.h:404
Qgis::LayerType
LayerType
Types of layers that can be added to a map.
Definition
qgis.h:206
QgsAbstractGeometry::boundingBox
virtual QgsRectangle boundingBox() const
Returns the minimal bounding box for the geometry.
Definition
qgsabstractgeometry.cpp:119
QgsLayerMetadataProviderResult
Result record of layer metadata provider search.
Definition
qgsabstractlayermetadataprovider.h:59
QgsLayerMetadataProviderResult::geometryType
Qgis::GeometryType geometryType() const
Returns the layer geometry type.
Definition
qgsabstractlayermetadataprovider.cpp:58
QgsLayerMetadataProviderResult::geographicExtent
const QgsPolygon & geographicExtent() const
Returns the layer extent in EPSG:4326.
Definition
qgsabstractlayermetadataprovider.cpp:48
QgsLayerMetadataProviderResult::layerType
Qgis::LayerType layerType() const
Returns the layer type.
Definition
qgsabstractlayermetadataprovider.cpp:98
QgsLayerMetadataResultsProxyModel::QgsLayerMetadataResultsProxyModel
QgsLayerMetadataResultsProxyModel(QObject *parent=nullptr)
Constructs a QgsLayerMetadataResultsProxyModel with an optional parent.
Definition
qgslayermetadataresultsproxymodel.cpp:22
QgsLayerMetadataResultsProxyModel::setFilterGeometryType
void setFilterGeometryType(Qgis::GeometryType geometryType)
Sets the geometry type filter to geometryType.
Definition
qgslayermetadataresultsproxymodel.cpp:32
QgsLayerMetadataResultsProxyModel::setFilterString
void setFilterString(const QString &filterString)
Sets the text filter to filterString.
Definition
qgslayermetadataresultsproxymodel.cpp:38
QgsLayerMetadataResultsProxyModel::setFilterExtent
void setFilterExtent(const QgsRectangle &extent)
Sets the extent filter to extent.
Definition
qgslayermetadataresultsproxymodel.cpp:26
QgsLayerMetadataResultsProxyModel::setFilterMapLayerTypeEnabled
void setFilterMapLayerTypeEnabled(bool enabled)
Sets the map layer type filter status to enabled.
Definition
qgslayermetadataresultsproxymodel.cpp:93
QgsLayerMetadataResultsProxyModel::filterAcceptsRow
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
Definition
qgslayermetadataresultsproxymodel.cpp:50
QgsLayerMetadataResultsProxyModel::setFilterMapLayerType
void setFilterMapLayerType(const Qgis::LayerType mapLayerType)
Sets the map layer type filter to mapLayerType.
Definition
qgslayermetadataresultsproxymodel.cpp:44
QgsLayerMetadataResultsProxyModel::setFilterGeometryTypeEnabled
void setFilterGeometryTypeEnabled(bool enabled)
Sets the geometry type filter status to enabled.
Definition
qgslayermetadataresultsproxymodel.cpp:99
QgsLayerMetadataResultsProxyModel::filterString
const QString filterString() const
Returns the filter string.
Definition
qgslayermetadataresultsproxymodel.cpp:105
QgsLayerMetadata::contains
bool contains(const QString &searchString) const
Returns true if the metadata identifier, title, abstract, keywords or categories contain searchString...
Definition
qgslayermetadata.cpp:448
QgsRectangle
A rectangle specified with double values.
Definition
qgsrectangle.h:47
qgsabstractlayermetadataprovider.h
qgslayermetadataresultsproxymodel.h
Generated on
for QGIS API Documentation by
1.17.0