bool QgsVirtualLayerProvider::loadSourceLayers() { Q_FOREACH ( const QgsVirtualLayerDefinition::SourceLayer &layer, mDefinition.sourceLayers() ) { if ( layer.isReferenced() ) { QgsMapLayer *l = QgsMapLayerRegistry::instance()->mapLayer( layer.reference() ); if ( !l ) { PROVIDER_ERROR( QString( "Cannot find layer %1" ).arg( layer.reference() ) ); return false; } if ( l->type() != QgsMapLayer::VectorLayer ) { PROVIDER_ERROR( QString( "Layer %1 is not a vector layer" ).arg( layer.reference() ) ); return false; } // add the layer to the list QgsVectorLayer* vl = static_cast<QgsVectorLayer*>( l ); mLayers << SourceLayer( vl, layer.name() ); // connect to modification signals to invalidate statistics connect( vl, SIGNAL( featureAdded( QgsFeatureId ) ), this, SLOT( invalidateStatistics() ) ); connect( vl, SIGNAL( featureDeleted( QgsFeatureId ) ), this, SLOT( invalidateStatistics() ) ); connect( vl, SIGNAL( geometryChanged( QgsFeatureId, const QgsGeometry& ) ), this, SLOT( invalidateStatistics() ) ); } else {
void QgsVirtualLayerDefinition::addSource( const QString& name, const QString source, const QString& provider, const QString& encoding ) { mSourceLayers.append( SourceLayer( name, source, provider, encoding ) ); }
void QgsVirtualLayerDefinition::addSource( const QString& name, const QString ref ) { mSourceLayers.append( SourceLayer( name, ref ) ); }