QGIS API Documentation 3.99.0-Master (d270888f95f)
Loading...
Searching...
No Matches
qgsvectorlayerselectionproperties.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectorlayerselectionproperties.cpp
3 ---------------
4 begin : July 2023
5 copyright : (C) 2023 by Nyall Dawson
6 email : nyall dot dawson at gmail 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
19
20#include "qgscolorutils.h"
21#include "qgssymbollayerutils.h"
22
23#include <QString>
24
25#include "moc_qgsvectorlayerselectionproperties.cpp"
26
27using namespace Qt::StringLiterals;
28
33
35
36
37QDomElement QgsVectorLayerSelectionProperties::writeXml( QDomElement &parentElement, QDomDocument &document, const QgsReadWriteContext &context )
38{
39 QDomElement element = document.createElement( u"selection"_s );
40
41 element.setAttribute( u"mode"_s, qgsEnumValueToKey( mSelectionRenderingMode ) );
42
43 QgsColorUtils::writeXml( mSelectionColor, u"selectionColor"_s, document, element, context );
44
45 if ( mSelectionSymbol )
46 {
47 QDomElement selectionSymbolElement = document.createElement( u"selectionSymbol"_s );
48 selectionSymbolElement.appendChild( QgsSymbolLayerUtils::saveSymbol( QString(), mSelectionSymbol.get(), document, context ) );
49 element.appendChild( selectionSymbolElement );
50 }
51
52 parentElement.appendChild( element );
53 return element;
54}
55
56bool QgsVectorLayerSelectionProperties::readXml( const QDomElement &element, const QgsReadWriteContext &context )
57{
58 const QDomElement selectionElement = element.firstChildElement( u"selection"_s ).toElement();
59 if ( selectionElement.isNull() )
60 return false;
61
62 mSelectionRenderingMode = qgsEnumKeyToValue( selectionElement.attribute( u"mode"_s ), Qgis::SelectionRenderingMode::Default );
63 mSelectionColor = QgsColorUtils::readXml( selectionElement, u"selectionColor"_s, context );
64
65 {
66 const QDomElement selectionSymbolElement = selectionElement.firstChildElement( u"selectionSymbol"_s ).firstChildElement( u"symbol"_s );
67 mSelectionSymbol = QgsSymbolLayerUtils::loadSymbol( selectionSymbolElement, context );
68 }
69 return true;
70}
71
73{
74 auto res = std::make_unique< QgsVectorLayerSelectionProperties >( nullptr );
75 res->mSelectionRenderingMode = mSelectionRenderingMode;
76 res->mSelectionColor = mSelectionColor;
77 res->mSelectionSymbol.reset( mSelectionSymbol ? mSelectionSymbol->clone() : nullptr );
78 return res.release();
79}
80
82{
83 return mSelectionColor;
84}
85
87{
88 if ( mSelectionColor == color )
89 {
90 return;
91 }
92
93 mSelectionColor = color;
95}
96
98{
99 return mSelectionSymbol.get();
100}
101
103{
104 mSelectionSymbol.reset( symbol );
106}
107
112
114{
115 if ( mSelectionRenderingMode == mode )
116 {
117 return;
118 }
119
120 mSelectionRenderingMode = mode;
122}
SelectionRenderingMode
Specifies how a selection should be rendered.
Definition qgis.h:1816
@ Default
Use default symbol and selection colors.
Definition qgis.h:1817
static QColor readXml(const QDomElement &element, const QString &identifier, const QgsReadWriteContext &context)
Reads a color from an XML element, matching the specified identifier string.
static void writeXml(const QColor &color, const QString &identifier, QDomDocument &document, QDomElement &element, const QgsReadWriteContext &context)
Writes a color to an XML element, storing it under the specified identifier.
QgsMapLayerSelectionProperties(QObject *parent)
Constructor for QgsMapLayerSelectionProperties, with the specified parent object.
A container for the context for various read/write operations on objects.
static std::unique_ptr< QgsSymbol > loadSymbol(const QDomElement &element, const QgsReadWriteContext &context)
Attempts to load a symbol from a DOM element.
static QDomElement saveSymbol(const QString &symbolName, const QgsSymbol *symbol, QDomDocument &doc, const QgsReadWriteContext &context)
Writes a symbol definition to XML.
Abstract base class for all rendered symbols.
Definition qgssymbol.h:231
void setSelectionSymbol(QgsSymbol *symbol)
Sets the symbol used to render selected features in the layer.
QgsVectorLayerSelectionProperties(QObject *parent=nullptr)
Constructor for QgsVectorLayerSelectionProperties, with the specified parent object.
QgsSymbol * selectionSymbol() const
Returns the symbol used to render selected features in the layer.
void selectionSymbolChanged()
Emitted whenever the selection symbol changes.
QgsVectorLayerSelectionProperties * clone() const override
Creates a clone of the properties.
QDomElement writeXml(QDomElement &element, QDomDocument &doc, const QgsReadWriteContext &context) override
Writes the properties to a DOM element, to be used later with readXml().
bool readXml(const QDomElement &element, const QgsReadWriteContext &context) override
Reads temporal properties from a DOM element previously written by writeXml().
void setSelectionColor(const QColor &color)
Sets the color to use for rendering selected features in the layer.
void selectionColorChanged()
Emitted whenever the selection color changes.
void setSelectionRenderingMode(Qgis::SelectionRenderingMode mode)
Sets the selection rendering mode to use for selected features in the layer.
void selectionRenderingModeChanged()
Emitted whenever the selection rendering mode changes.
T qgsEnumKeyToValue(const QString &key, const T &defaultValue, bool tryValueAsKey=true, bool *returnOk=nullptr)
Returns the value corresponding to the given key of an enum.
Definition qgis.h:7110
QString qgsEnumValueToKey(const T &value, bool *returnOk=nullptr)
Returns the value for the given key of an enum.
Definition qgis.h:7091