QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core
qgsstoredexpressionmanager.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsstoredexpressionmanager.cpp
3
-------------------
4
begin : August 2019
5
copyright : (C) 2019 David Signer
6
email : david 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 "
qgsstoredexpressionmanager.h
"
19
20
#include "
qgis.h
"
21
22
#include <QDomElement>
23
#include <QString>
24
25
#include "moc_qgsstoredexpressionmanager.cpp"
26
27
using namespace
Qt::StringLiterals;
28
29
QString
QgsStoredExpressionManager::addStoredExpression
(
const
QString &name,
const
QString &expression,
const
QgsStoredExpression::Category
&tag )
30
{
31
QgsStoredExpression
storedExpression
( name, expression, tag );
32
33
mStoredExpressions.append(
storedExpression
);
34
35
return
storedExpression
.id;
36
}
37
38
void
QgsStoredExpressionManager::removeStoredExpression
(
const
QString &
id
)
39
{
40
int
i = 0;
41
for
(
const
QgsStoredExpression
&
storedExpression
: std::as_const( mStoredExpressions ) )
42
{
43
if
(
storedExpression
.id ==
id
)
44
{
45
mStoredExpressions.removeAt( i );
46
//leave the loop after editing source
47
break
;
48
}
49
++i;
50
}
51
}
52
53
void
QgsStoredExpressionManager::updateStoredExpression
(
const
QString &
id
,
const
QString &name,
const
QString &expression,
const
QgsStoredExpression::Category
&tag )
54
{
55
int
i = 0;
56
for
(
const
QgsStoredExpression
&
storedExpression
: std::as_const( mStoredExpressions ) )
57
{
58
if
(
storedExpression
.id ==
id
)
59
{
60
QgsStoredExpression
newStoredExpression =
storedExpression
;
61
newStoredExpression.
name
= name;
62
newStoredExpression.
expression
= expression;
63
newStoredExpression.
tag
= tag;
64
mStoredExpressions.replace( i, newStoredExpression );
65
//leave the loop after editing source
66
break
;
67
}
68
++i;
69
}
70
}
71
72
void
QgsStoredExpressionManager::addStoredExpressions
(
const
QList< QgsStoredExpression > &
storedExpressions
)
73
{
74
mStoredExpressions.append(
storedExpressions
);
75
}
76
77
QList< QgsStoredExpression >
QgsStoredExpressionManager::storedExpressions
(
const
QgsStoredExpression::Category
&tag )
78
{
79
QList< QgsStoredExpression >
storedExpressions
;
80
81
for
(
const
QgsStoredExpression
&
storedExpression
: std::as_const( mStoredExpressions ) )
82
{
83
if
(
storedExpression
.tag & tag )
84
{
85
storedExpressions
.append(
storedExpression
);
86
}
87
}
88
return
storedExpressions
;
89
}
90
91
QgsStoredExpression
QgsStoredExpressionManager::storedExpression
(
const
QString &
id
)
const
92
{
93
for
(
const
QgsStoredExpression
&
storedExpression
: std::as_const( mStoredExpressions ) )
94
{
95
if
(
storedExpression
.id ==
id
)
96
{
97
return
storedExpression
;
98
}
99
}
100
return
QgsStoredExpression
();
101
}
102
103
QgsStoredExpression
QgsStoredExpressionManager::findStoredExpressionByExpression
(
const
QString &expression,
const
QgsStoredExpression::Category
&tag )
const
104
{
105
for
(
const
QgsStoredExpression
&
storedExpression
: std::as_const( mStoredExpressions ) )
106
{
107
if
(
storedExpression
.expression == expression &&
storedExpression
.tag & tag )
108
{
109
return
storedExpression
;
110
}
111
}
112
return
QgsStoredExpression
();
113
}
114
115
void
QgsStoredExpressionManager::clearStoredExpressions
()
116
{
117
mStoredExpressions.clear();
118
}
119
120
bool
QgsStoredExpressionManager::writeXml
( QDomNode &layerNode )
const
121
{
122
QDomElement aStoredExpressions = layerNode.ownerDocument().createElement( u
"storedexpressions"
_s );
123
124
for
(
const
QgsStoredExpression
&
storedExpression
: std::as_const( mStoredExpressions ) )
125
{
126
QDomElement aStoredExpression = layerNode.ownerDocument().createElement( u
"storedexpression"
_s );
127
aStoredExpression.setAttribute( u
"name"
_s,
storedExpression
.name );
128
aStoredExpression.setAttribute( u
"expression"
_s,
storedExpression
.expression );
129
aStoredExpression.setAttribute( u
"tag"
_s,
storedExpression
.tag );
130
aStoredExpressions.appendChild( aStoredExpression );
131
}
132
layerNode.appendChild( aStoredExpressions );
133
134
return
true
;
135
}
136
137
bool
QgsStoredExpressionManager::readXml
(
const
QDomNode &layerNode )
138
{
139
clearStoredExpressions
();
140
141
QDomNode aaNode = layerNode.namedItem( u
"storedexpressions"
_s );
142
143
if
( !aaNode.isNull() )
144
{
145
QDomNodeList aStoredExpressions = aaNode.toElement().elementsByTagName( u
"storedexpression"
_s );
146
for
(
int
i = 0; i < aStoredExpressions.size(); ++i )
147
{
148
QDomElement aStoredExpression = aStoredExpressions.at( i ).toElement();
149
addStoredExpression
( aStoredExpression.attribute( u
"name"
_s ), aStoredExpression.attribute( u
"expression"
_s ),
QgsStoredExpression::Category
( aStoredExpression.attribute( u
"tag"
_s ).toInt() ) );
150
}
151
}
152
return
true
;
153
}
QgsStoredExpressionManager::removeStoredExpression
void removeStoredExpression(const QString &id)
Removes an expression to the list.
Definition
qgsstoredexpressionmanager.cpp:38
QgsStoredExpressionManager::storedExpression
QgsStoredExpression storedExpression(const QString &id) const
Returns an expression according to the id.
Definition
qgsstoredexpressionmanager.cpp:91
QgsStoredExpressionManager::writeXml
bool writeXml(QDomNode &layerNode) const
Writes the stored expressions out in XML format.
Definition
qgsstoredexpressionmanager.cpp:120
QgsStoredExpressionManager::clearStoredExpressions
void clearStoredExpressions()
Clears list of stored expressions.
Definition
qgsstoredexpressionmanager.cpp:115
QgsStoredExpressionManager::findStoredExpressionByExpression
QgsStoredExpression findStoredExpressionByExpression(const QString &expression, const QgsStoredExpression::Category &tag=QgsStoredExpression::Category::All) const
Returns an expression according to the expression text.
Definition
qgsstoredexpressionmanager.cpp:103
QgsStoredExpressionManager::storedExpressions
QList< QgsStoredExpression > storedExpressions(const QgsStoredExpression::Category &tag=QgsStoredExpression::Category::All)
Returns the list of named expressions.
Definition
qgsstoredexpressionmanager.cpp:77
QgsStoredExpressionManager::addStoredExpressions
void addStoredExpressions(const QList< QgsStoredExpression > &storedExpressions)
Appends a list of expressions to the existing list.
Definition
qgsstoredexpressionmanager.cpp:72
QgsStoredExpressionManager::updateStoredExpression
void updateStoredExpression(const QString &id, const QString &name, const QString &expression, const QgsStoredExpression::Category &tag)
Updates an expression by id.
Definition
qgsstoredexpressionmanager.cpp:53
QgsStoredExpressionManager::readXml
bool readXml(const QDomNode &layerNode)
Reads the stored expressions in in XML format.
Definition
qgsstoredexpressionmanager.cpp:137
QgsStoredExpressionManager::addStoredExpression
QString addStoredExpression(const QString &name, const QString &expression, const QgsStoredExpression::Category &tag=QgsStoredExpression::Category::FilterExpression)
Adds an expression to the list.
Definition
qgsstoredexpressionmanager.cpp:29
QgsStoredExpression
Stored expression containing name, content (expression text) and a category tag.
Definition
qgsstoredexpressionmanager.h:45
QgsStoredExpression::expression
QString expression
expression text
Definition
qgsstoredexpressionmanager.h:83
QgsStoredExpression::Category
Category
Categories of use cases FilterExpression for stored expressions to filter attribute table DefaultValu...
Definition
qgsstoredexpressionmanager.h:53
QgsStoredExpression::name
QString name
descriptive name of the expression
Definition
qgsstoredexpressionmanager.h:81
QgsStoredExpression::tag
QgsStoredExpression::Category tag
category of the expression use case
Definition
qgsstoredexpressionmanager.h:85
qgis.h
qgsstoredexpressionmanager.h
Generated on
for QGIS API Documentation by
1.17.0