16 #ifndef QGSMAPTHEMECOLLECTION_H 17 #define QGSMAPTHEMECOLLECTION_H 19 #include "qgis_core.h" 25 #include <QStringList> 48 Q_PROPERTY( QStringList mapThemes READ mapThemes NOTIFY mapThemesChanged )
49 Q_PROPERTY(
QgsProject *project READ project WRITE setProject NOTIFY projectChanged )
66 return mLayer == other.mLayer &&
73 return !( *
this == other );
83 bool usingCurrentStyle =
false;
87 bool usingLegendItems =
false;
102 bool expandedLayerNode =
false;
121 mHasExpandedStateInfo == other.mHasExpandedStateInfo && mExpandedGroupNodes == other.mExpandedGroupNodes;
125 return !( *
this == other );
129 QList<QgsMapThemeCollection::MapThemeLayerRecord>
layerRecords()
const {
return mLayerRecords; }
132 void setLayerRecords(
const QList<QgsMapThemeCollection::MapThemeLayerRecord> &records ) { mLayerRecords = records; }
144 QHash<QgsMapLayer *, QgsMapThemeCollection::MapThemeLayerRecord> validLayerRecords()
const SIP_SKIP;
176 QList<MapThemeLayerRecord> mLayerRecords;
179 bool mHasExpandedStateInfo =
false;
185 QSet<QString> mExpandedGroupNodes;
265 void readXml(
const QDomDocument &doc );
345 void registryLayersRemoved(
const QStringList &layerIDs );
348 void layerStyleRenamed(
const QString &oldName,
const QString &newName );
360 void reconnectToLayersStyleManager();
368 typedef QMap<QString, MapThemeRecord> MapThemeRecordMap;
369 MapThemeRecordMap mMapThemes;
375 #endif // QGSMAPTHEMECOLLECTION_H Layer tree group node serves as a container for layers and further groups.
bool operator!=(const QgsMapThemeCollection::MapThemeLayerRecord &other) const
QgsMapLayer * layer() const
Returns map layer or nullptr if the layer does not exist anymore.
Base class for all map layer types.
void setProject(QgsProject *project)
The QgsProject on which this map theme collection works.
bool hasMapTheme(const QString &name) const
Returns whether a map theme with a matching name exists.
QList< QgsMapLayer * > mapThemeVisibleLayers(const QString &name) const
Returns the list of layers that are visible for the specified map theme.
QMap< QString, QString > mapThemeStyleOverrides(const QString &name)
Gets layer style overrides (for QgsMapSettings) of the visible layers for given map theme...
QHash< QgsMapLayer *, QgsMapThemeCollection::MapThemeLayerRecord > validLayerRecords() const
Returns set with only records for valid layers.
QgsMapThemeCollection::MapThemeRecord mapThemeState(const QString &name) const
Returns the recorded state of a map theme.
Individual map theme record of visible layers and styles.
MapThemeLayerRecord(QgsMapLayer *l=nullptr)
Initialize layer record with a map layer - it will be stored as a weak pointer.
void update(const QString &name, const QgsMapThemeCollection::MapThemeRecord &state)
Updates a map theme within the collection.
void clear()
Remove all map themes from the collection.
void setExpandedGroupNodes(const QSet< QString > &expandedGroupNodes)
Sets a set of group identifiers for group nodes that should have expanded state.
Individual record of a visible layer in a map theme record.
QPointer< QgsMapLayer > QgsWeakMapLayerPointer
Weak pointer for QgsMapLayer.
void mapThemesChanged()
Emitted when map themes within the collection are changed.
void setHasExpandedStateInfo(bool hasInfo)
Sets whether the map theme contains valid expanded/collapsed state of nodes.
QStringList mapThemeVisibleLayerIds(const QString &name) const
Returns the list of layer IDs that are visible for the specified map theme.
void readXml(const QDomDocument &doc)
Reads the map theme collection state from XML.
void projectChanged()
Emitted when the project changes.
The QgsLayerTreeModel class is model implementation for Qt item views framework.
QList< QgsMapLayer *> masterVisibleLayers() const
Returns the master list of visible layers.
void mapThemeChanged(const QString &theme)
Emitted when a map theme changes definition.
bool operator==(const QgsMapThemeCollection::MapThemeLayerRecord &other) const
QgsMapThemeCollection(QgsProject *project=nullptr)
Create map theme collection that handles themes of the given project.
QList< QgsMapLayer *> masterLayerOrder() const
Returns the master layer order (this will always match the project's QgsProject::layerOrder() )...
void removeMapTheme(const QString &name)
Remove an existing map theme from collection.
void setLayerRecords(const QList< QgsMapThemeCollection::MapThemeLayerRecord > &records)
Sets layer records for the theme.
QSet< QString > checkedLegendItems
Rule keys of check legend items in layer tree model.
QStringList mapThemes() const
Returns a list of existing map theme names.
This class is a base class for nodes in a layer tree.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts, annotations, canvases, etc.
bool operator!=(const QgsMapThemeCollection::MapThemeRecord &other) const
void applyTheme(const QString &name, QgsLayerTreeGroup *root, QgsLayerTreeModel *model)
Apply theme given by its name and modify layer tree, current style of layers and checked legend items...
bool hasExpandedStateInfo() const
Returns whether information about expanded/collapsed state of nodes has been recorded and thus whethe...
void insert(const QString &name, const QgsMapThemeCollection::MapThemeRecord &state)
Inserts a new map theme to the collection.
QgsProject * project()
The QgsProject on which this map theme collection works.
QSet< QString > expandedLegendItems
Rule keys of expanded legend items in layer tree view.
QList< QgsMapThemeCollection::MapThemeLayerRecord > layerRecords() const
Returns a list of records for all visible layer belonging to the theme.
QSet< QString > expandedGroupNodes() const
Returns a set of group identifiers for group nodes that should have expanded state (other group nodes...
bool expandedLayerNode
Whether the layer's tree node is expanded (only to be applied if the parent MapThemeRecord has the in...
Container class that allows storage of map themes consisting of visible map layers and layer styles...
static QgsMapThemeCollection::MapThemeRecord createThemeFromCurrentState(QgsLayerTreeGroup *root, QgsLayerTreeModel *model)
Static method to create theme from the current state of layer visibilities in layer tree...
QString currentStyle
Name of the current style of the layer.
bool usingCurrentStyle
Whether current style is valid and should be applied.
void writeXml(QDomDocument &doc)
Writes the map theme collection state to XML.
bool operator==(const QgsMapThemeCollection::MapThemeRecord &other) const
bool usingLegendItems
Whether checkedLegendItems should be applied.
Layer tree node points to a map layer.