Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Use clone() methods within duplicateLayers() function
  • Loading branch information
pblottiere committed May 18, 2017
1 parent c6f97e5 commit 70b2581
Showing 1 changed file with 2 additions and 34 deletions.
36 changes: 2 additions & 34 deletions src/app/qgisapp.cpp
Expand Up @@ -8985,39 +8985,7 @@ void QgisApp::duplicateLayers( const QList<QgsMapLayer *> &lyrList )
}
else if ( vlayer )
{
QgsVectorLayer *dupVLayer = new QgsVectorLayer( vlayer->source(), layerDupName, vlayer->providerType() );
if ( vlayer->dataProvider() )
{
dupVLayer->setProviderEncoding( vlayer->dataProvider()->encoding() );
}

//add variables defined in layer properties
QStringList variableNames = vlayer->customProperty( QStringLiteral( "variableNames" ) ).toStringList();
QStringList variableValues = vlayer->customProperty( QStringLiteral( "variableValues" ) ).toStringList();

int varIndex = 0;
Q_FOREACH ( const QString &variableName, variableNames )
{
if ( varIndex >= variableValues.length() )
{
break;
}

QVariant varValue = variableValues.at( varIndex );
varIndex++;
QgsExpressionContextUtils::setLayerVariable( dupVLayer, variableName, varValue );
}

Q_FOREACH ( const QgsVectorLayerJoinInfo &join, vlayer->vectorJoins() )
dupVLayer->addJoin( join );

for ( int fld = 0; fld < vlayer->fields().count(); fld++ )
{
if ( vlayer->fields().fieldOrigin( fld ) == QgsFields::OriginExpression )
dupVLayer->addExpressionField( vlayer->expressionField( fld ), vlayer->fields().at( fld ) );
}

dupLayer = dupVLayer;
dupLayer = vlayer->clone();
}
}

Expand All @@ -9026,7 +8994,7 @@ void QgisApp::duplicateLayers( const QList<QgsMapLayer *> &lyrList )
QgsRasterLayer *rlayer = qobject_cast<QgsRasterLayer *>( selectedLyr );
if ( rlayer )
{
dupLayer = new QgsRasterLayer( rlayer->source(), layerDupName );
dupLayer = rlayer->clone();
}
}

Expand Down

0 comments on commit 70b2581

Please sign in to comment.