32 return mMapLayers.size();
37 return mMapLayers.value( layerId );
42 QList<QgsMapLayer *> myResultList;
45 if ( layer->
name() == layerName )
47 myResultList << layer;
55 QList<QgsMapLayer *> myResultList;
58 if ( !myLayer || !myLayer->
isValid() )
60 QgsDebugMsg( QStringLiteral(
"Cannot add invalid layers" ) );
64 if ( !mMapLayers.contains( myLayer->
id() ) )
66 mMapLayers[myLayer->
id()] = myLayer;
67 myResultList << mMapLayers[myLayer->
id()];
70 myLayer->setParent(
this );
72 connect( myLayer, &QObject::destroyed,
this, &QgsMapLayerStore::onMapLayerDeleted );
76 if ( !myResultList.isEmpty() )
86 QList<QgsMapLayer *> addedLayers;
87 addedLayers =
addMapLayers( QList<QgsMapLayer *>() << layer, takeOwnership );
88 return addedLayers.isEmpty() ?
nullptr : addedLayers[0];
93 QList<QgsMapLayer *>
layers;
94 Q_FOREACH (
const QString &myId, layerIds )
96 layers << mMapLayers.value( myId );
104 if ( layers.isEmpty() )
107 QStringList layerIds;
108 QList<QgsMapLayer *> layerList;
113 if ( layer && mMapLayers.contains( layer->
id() ) )
115 layerIds << layer->
id();
120 if ( layerIds.isEmpty() )
128 QString myId( lyr->
id() );
131 mMapLayers.remove( myId );
132 if ( lyr->parent() == this )
144 removeMapLayers( QList<QgsMapLayer *>() << mMapLayers.value( layerId ) );
158 if ( mMapLayers.contains( layer->
id() ) )
165 mMapLayers.remove( layer->
id() );
166 layer->setParent(
nullptr );
185 if ( !other || other ==
this )
188 Q_ASSERT_X( other->thread() == thread(),
"QgsMapLayerStore::transferLayersFromStore",
"Cannot transfer layers from store with different thread affinity" );
190 QMap<QString, QgsMapLayer *> otherLayers = other->
mapLayers();
191 QMap<QString, QgsMapLayer *>::const_iterator it = otherLayers.constBegin();
192 for ( ; it != otherLayers.constEnd(); ++it )
200 void QgsMapLayerStore::onMapLayerDeleted( QObject *obj )
202 QString
id = mMapLayers.key( static_cast<QgsMapLayer *>( obj ) );
206 QgsDebugMsg( QStringLiteral(
"Map layer deleted without unregistering! %1" ).arg(
id ) );
207 mMapLayers.remove(
id );
Base class for all map layer types.
bool isValid() const
Returns the status of the layer.
void layerWasAdded(QgsMapLayer *layer)
Emitted when a layer was added to the store.
int count() const
Returns the number of layers contained in the store.
void removeMapLayer(const QString &id)
Remove a layer from the store by layer id.
void layersWillBeRemoved(const QStringList &layerIds)
Emitted when one or more layers are about to be removed from the store.
QgsMapLayer * takeMapLayer(QgsMapLayer *layer)
Takes a layer from the store.
void layerWillBeRemoved(const QString &layerId)
Emitted when a layer is about to be removed from the store.
void allLayersRemoved()
Emitted when all layers are removed, before layersWillBeRemoved() and layerWillBeRemoved() signals ar...
QList< QgsMapLayer * > addMapLayers(const QList< QgsMapLayer * > &layers, bool takeOwnership=true)
Add a list of layers to the store.
void removeAllMapLayers()
Removes all registered layers.
~QgsMapLayerStore() override
QMap< QString, QgsMapLayer * > mapLayers() const
Returns a map of all layers by layer ID.
void layerRemoved(const QString &layerId)
Emitted after a layer was removed from the store.
QString id() const
Returns the layer's unique ID, which is used to access this layer from QgsProject.
QVector< T > layers() const
Returns a list of registered map layers with a specified layer type.
void layersRemoved(const QStringList &layerIds)
Emitted after one or more layers were removed from the store.
QgsMapLayer * addMapLayer(QgsMapLayer *layer, bool takeOwnership=true)
Add a layer to the store.
void transferLayersFromStore(QgsMapLayerStore *other)
Transfers all the map layers contained within another map layer store and adds them to this store...
void removeMapLayers(const QStringList &layerIds)
Remove a set of layers from the store by layer ID.
A storage object for map layers, in which the layers are owned by the store and have their lifetime b...
QgsMapLayer * mapLayer(const QString &id) const
Retrieve a pointer to a layer by layer id.
QList< QgsMapLayer * > mapLayersByName(const QString &name) const
Retrieve a list of matching layers by layer name.
QgsMapLayerStore(QObject *parent=nullptr)
Constructor for QgsMapLayerStore.
void layersAdded(const QList< QgsMapLayer * > &layers)
Emitted when one or more layers were added to the store.