16#ifndef QGSMAPLAYERREF_H 
   17#define QGSMAPLAYERREF_H 
   34template<
typename TYPE>
 
   58    , 
layerId( l ? l->id() : QString() )
 
   59    , 
source( l ? l->publicSource() : QString() )
 
   61    , 
provider( l && l->dataProvider() ? l->dataProvider()->
name() : QString() )
 
   82    layerId = l ? l->id() : QString();
 
   83    source = l ? l->publicSource() : QString();
 
   84    name = l ? l->name() : QString();
 
   85    provider = l && l->dataProvider() ? l->dataProvider()->name() : QString();
 
   94    return static_cast< bool >( 
layer.data() );
 
  153    if ( project && !
layerId.isEmpty() )
 
  167    if ( matchType & MatchType::Name && ( 
layer->name().isEmpty() || 
layer->name() != 
name ) )
 
  175      if ( matchType & MatchType::Provider && 
layer->providerType() != 
provider )
 
  179      if ( matchType & MatchType::Source && 
layer->publicSource() != 
source )
 
  220      QList<QgsMapLayer *> layers;
 
  222      if ( matchType & MatchType::Name )
 
  224        if ( 
name.isEmpty() )
 
  234      for ( 
auto it = layers.constBegin(); it != layers.constEnd(); ++it )
 
  236        if ( TYPE *tl = qobject_cast< TYPE *>( *it ) )
 
  278    if ( project && !
name.isEmpty() )
 
  283        if ( TYPE *tl = qobject_cast< TYPE *>( l ) )
 
  303    layerId = element.attribute( QStringLiteral( 
"id" ) );
 
  304    name = element.attribute( QStringLiteral( 
"name" ) );
 
  305    source = element.attribute( QStringLiteral( 
"source" ) );
 
  306    provider = element.attribute( QStringLiteral( 
"provider" ) );
 
  320    element.setAttribute( QStringLiteral( 
"id" ), 
layerId );
 
  321    element.setAttribute( QStringLiteral( 
"name" ), 
name );
 
  322    element.setAttribute( QStringLiteral( 
"source" ), 
source );
 
  323    element.setAttribute( QStringLiteral( 
"provider" ), 
provider );
 
Base class for all map layer types.
 
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
 
Q_INVOKABLE QgsMapLayer * mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layer ID.
 
QList< QgsMapLayer * > mapLayersByName(const QString &layerName) const
Retrieve a list of matching registered layers by layer name.
 
QMap< QString, QgsMapLayer * > mapLayers(const bool validOnly=false) const
Returns a map of all registered layers by layer ID.
 
The class is used as a container of context for various read/write operations on other objects.
 
_LayerRef< QgsMapLayer > QgsMapLayerRef
 
Internal structure to keep weak pointer to QgsMapLayer or layerId if the layer is not available yet.
 
TYPE * operator->() const
Forwards the to map layer.
 
TYPE * resolveWeakly(const QgsProject *project, MatchType matchType=MatchType::All)
Resolves the map layer by attempting to find a matching layer in a project using a weak match.
 
_LayerRef(const QString &id, const QString &name=QString(), const QString &source=QString(), const QString &provider=QString())
Constructor for a weak layer reference, using a combination of layer ID, name, public source and prov...
 
_LayerRef(TYPE *l=nullptr)
Constructor for a layer reference from an existing map layer.
 
MatchType
Flag for match type in weak resolution.
 
@ Provider
Match layer name.
 
@ Source
Match layer provider name.
 
void writeXml(QDomElement &element, const QgsReadWriteContext &context) const
Writes the layer's properties to a XML element.
 
QString source
Weak reference to layer public source.
 
QString name
Weak reference to layer name.
 
bool layerMatchesWeakly(QgsMapLayer *layer, MatchType matchType=MatchType::All) const
 
TYPE * resolveByIdOrNameOnly(const QgsProject *project)
Resolves the map layer by attempting to find a matching layer in a project using a weak match.
 
TYPE * get() const
Returns a pointer to the layer, or nullptr if the reference has not yet been matched to a layer.
 
QString provider
Weak reference to layer provider.
 
bool layerMatchesSource(QgsMapLayer *layer) const
Returns true if a layer matches the weak references to layer public source, layer name and data provi...
 
QPointer< TYPE > layer
Weak pointer to map layer.
 
TYPE * resolve(const QgsProject *project)
Resolves the map layer by attempting to find a layer with matching ID within a project.
 
void setLayer(TYPE *l)
Sets the reference to point to a specified layer.
 
bool readXml(const QDomElement &element, const QgsReadWriteContext &context)
Reads the layer's properties from an XML element.
 
QString layerId
Original layer ID.