Skip to content

Commit

Permalink
don't use temporary list, and edit temporary snapping config
Browse files Browse the repository at this point in the history
  • Loading branch information
signedav committed Jul 15, 2019
1 parent a93cbf1 commit decc3f5
Showing 1 changed file with 10 additions and 19 deletions.
29 changes: 10 additions & 19 deletions src/core/qgsofflineediting.cpp
Expand Up @@ -87,17 +87,6 @@ bool QgsOfflineEditing::convertToOfflineProject( const QString &offlineDataPath,
return false;
}

//preserve individual snapping settings
QgsSnappingConfig snappingConfig = QgsProject::instance()->snappingConfig();
QHash<QString, QgsSnappingConfig::IndividualLayerSettings> preservedIndividualLayerSettings;
const QHash<QgsVectorLayer *, QgsSnappingConfig::IndividualLayerSettings> individualLayerSettings = snappingConfig.individualLayerSettings();
for ( const QgsSnappingConfig::IndividualLayerSettings &individualSetting : individualLayerSettings )
{
preservedIndividualLayerSettings.insert( individualLayerSettings.key( individualSetting )->id(), individualSetting );
}

snappingConfig.removeLayers( QgsProject::instance()->mapLayers().values() );

QString dbPath = QDir( offlineDataPath ).absoluteFilePath( offlineDbFile );
if ( createOfflineDb( dbPath, containerType ) )
{
Expand Down Expand Up @@ -144,6 +133,9 @@ bool QgsOfflineEditing::convertToOfflineProject( const QString &offlineDataPath,
joinInfoBuffer.insert( vl->id(), joins );
}

//preserve individual snapping settings
QgsSnappingConfig snappingConfig = QgsProject::instance()->snappingConfig();

// copy selected vector layers to SpatiaLite
for ( int i = 0; i < layerIds.count(); i++ )
{
Expand All @@ -158,13 +150,20 @@ bool QgsOfflineEditing::convertToOfflineProject( const QString &offlineDataPath,
if ( newLayer )
{
layerIdMapping.insert( origLayerId, newLayer );
//append snapping setting on new layer
snappingConfig.setIndividualLayerSettings( newLayer, QgsProject::instance()->snappingConfig().individualLayerSettings( vl ) );
snappingConfig.removeLayers( QList<QgsMapLayer *>() << vl );

// remove remote layer
QgsProject::instance()->removeMapLayers(
QStringList() << origLayerId );
}
}
}

//set snapping config
QgsProject::instance()->setSnappingConfig( snappingConfig );

// restore join info on new SpatiaLite layer
QMap<QString, QgsVectorJoinList >::ConstIterator it;
for ( it = joinInfoBuffer.constBegin(); it != joinInfoBuffer.constEnd(); ++it )
Expand All @@ -186,7 +185,6 @@ bool QgsOfflineEditing::convertToOfflineProject( const QString &offlineDataPath,
}
}


emit progressStopped();

// save offline project
Expand All @@ -200,13 +198,6 @@ bool QgsOfflineEditing::convertToOfflineProject( const QString &offlineDataPath,

QgsProject::instance()->writeEntry( PROJECT_ENTRY_SCOPE_OFFLINE, PROJECT_ENTRY_KEY_OFFLINE_DB_PATH, QgsProject::instance()->writePath( dbPath ) );

//preserve individual snapping settings
for ( const QgsSnappingConfig::IndividualLayerSettings &preservedIndividualSetting : preservedIndividualLayerSettings )
{
snappingConfig.setIndividualLayerSettings( layerIdMapping.value( preservedIndividualLayerSettings.key( preservedIndividualSetting ) ), preservedIndividualSetting );
}
QgsProject::instance()->setSnappingConfig( snappingConfig );

return true;
}
}
Expand Down

0 comments on commit decc3f5

Please sign in to comment.