void QgsOfflineEditing::applyGeometryChanges( QgsVectorLayer* remoteLayer, sqlite3* db, int layerId, int commitNo ) { QString sql = QString( "SELECT \"fid\", \"geom_wkt\" FROM 'log_geometry_updates' WHERE \"layer_id\" = %1 AND \"commit_no\" = %2" ).arg( layerId ).arg( commitNo ); GeometryChanges values = sqlQueryGeometryChanges( db, sql ); emit progressModeSet( QgsOfflineEditing::UpdateGeometries, values.size() ); for ( int i = 0; i < values.size(); i++ ) { QgsFeatureId fid = remoteFid( db, layerId, values.at( i ).fid ); remoteLayer->changeGeometry( fid, QgsGeometry::fromWkt( values.at( i ).geom_wkt ) ); emit progressUpdated( i + 1 ); } }
void QgsOfflineEditing::applyGeometryChanges( QgsVectorLayer* remoteLayer, sqlite3* db, int layerId, int commitNo ) { QString sql = QString( "SELECT \"fid\", \"geom_wkt\" FROM 'log_geometry_updates' WHERE \"layer_id\" = %1 AND \"commit_no\" = %2" ).arg( layerId ).arg( commitNo ); GeometryChanges values = sqlQueryGeometryChanges( db, sql ); mProgressDialog->setupProgressBar( tr( "%v / %m feature geometry updates" ), values.size() ); for ( int i = 0; i < values.size(); i++ ) { int fid = remoteFid( db, layerId, values.at( i ).fid ); remoteLayer->changeGeometry( fid, QgsGeometry::fromWkt( values.at( i ).geom_wkt ) ); mProgressDialog->setProgressValue( i + 1 ); } }
void QgsOfflineEditing::applyFeaturesRemoved( QgsVectorLayer* remoteLayer, sqlite3* db, int layerId ) { QString sql = QString( "SELECT \"fid\" FROM 'log_removed_features' WHERE \"layer_id\" = %1" ).arg( layerId ); QgsFeatureIds values = sqlQueryFeaturesRemoved( db, sql ); emit progressModeSet( QgsOfflineEditing::RemoveFeatures, values.size() ); int i = 1; for ( QgsFeatureIds::const_iterator it = values.begin(); it != values.end(); ++it ) { QgsFeatureId fid = remoteFid( db, layerId, *it ); remoteLayer->deleteFeature( fid ); emit progressUpdated( i++ ); } }
void QgsOfflineEditing::applyFeaturesRemoved( QgsVectorLayer* remoteLayer, sqlite3* db, int layerId ) { QString sql = QString( "SELECT \"fid\" FROM 'log_removed_features' WHERE \"layer_id\" = %1" ).arg( layerId ); QgsFeatureIds values = sqlQueryFeaturesRemoved( db, sql ); mProgressDialog->setupProgressBar( tr( "%v / %m features removed" ), values.size() ); int i = 1; for ( QgsFeatureIds::const_iterator it = values.begin(); it != values.end(); ++it ) { int fid = remoteFid( db, layerId, *it ); remoteLayer->deleteFeature( fid ); mProgressDialog->setProgressValue( i++ ); } }
void QgsOfflineEditing::applyAttributeValueChanges( QgsVectorLayer* offlineLayer, QgsVectorLayer* remoteLayer, sqlite3* db, int layerId, int commitNo ) { QString sql = QString( "SELECT \"fid\", \"attr\", \"value\" FROM 'log_feature_updates' WHERE \"layer_id\" = %1 AND \"commit_no\" = %2 " ).arg( layerId ).arg( commitNo ); AttributeValueChanges values = sqlQueryAttributeValueChanges( db, sql ); emit progressModeSet( QgsOfflineEditing::UpdateFeatures, values.size() ); QMap<int, int> attrLookup = attributeLookup( offlineLayer, remoteLayer ); for ( int i = 0; i < values.size(); i++ ) { QgsFeatureId fid = remoteFid( db, layerId, values.at( i ).fid ); remoteLayer->changeAttributeValue( fid, attrLookup[ values.at( i ).attr ], values.at( i ).value, false ); emit progressUpdated( i + 1 ); } }