Skip to content

Commit ea87815

Browse files
committed
Topology check integration in validation service
1 parent 88ef921 commit ea87815

File tree

2 files changed

+21
-3
lines changed

2 files changed

+21
-3
lines changed

src/app/qgsgeometryvalidationservice.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ void QgsGeometryValidationService::onLayersAdded( const QList<QgsMapLayer *> &la
5252
{
5353
onFeatureDeleted( vectorLayer, fid );
5454
} );
55+
connect( vectorLayer, &QgsVectorLayer::beforeCommitChanges, this, [this, vectorLayer]()
56+
{
57+
onBeforeCommitChanges( vectorLayer );
58+
} );
5559

5660
enableLayerChecks( vectorLayer );
5761
}
@@ -76,6 +80,14 @@ void QgsGeometryValidationService::onFeatureDeleted( QgsVectorLayer *layer, QgsF
7680
cancelChecks( layer, fid );
7781
}
7882

83+
void QgsGeometryValidationService::onBeforeCommitChanges( QgsVectorLayer *layer )
84+
{
85+
if ( !mTopologyChecksOk.value( layer ) )
86+
{
87+
triggerTopologyChecks( layer );
88+
}
89+
}
90+
7991
void QgsGeometryValidationService::enableLayerChecks( QgsVectorLayer *layer )
8092
{
8193
// TODO: finish all ongoing checks
@@ -145,7 +157,9 @@ void QgsGeometryValidationService::processFeature( QgsVectorLayer *layer, QgsFea
145157
}
146158

147159
emit geometryCheckCompleted( layer, fid, allErrors );
148-
// TODO: this is a bit hardcore
149-
// const auto errors = mIsValidGeometryCheck->processGeometry( feature.geometry() );
150-
// emit geometryCheckCompleted( layer, fid, errors );
160+
}
161+
162+
void QgsGeometryValidationService::triggerTopologyChecks( QgsVectorLayer *layer )
163+
{
164+
151165
}

src/app/qgsgeometryvalidationservice.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ class QgsGeometryValidationService : public QObject
7171
void onFeatureAdded( QgsVectorLayer *layer, QgsFeatureId fid );
7272
void onGeometryChanged( QgsVectorLayer *layer, QgsFeatureId fid, const QgsGeometry &geometry );
7373
void onFeatureDeleted( QgsVectorLayer *layer, QgsFeatureId fid );
74+
void onBeforeCommitChanges( QgsVectorLayer *layer );
7475

7576
private:
7677
void enableLayerChecks( QgsVectorLayer *layer );
@@ -79,9 +80,12 @@ class QgsGeometryValidationService : public QObject
7980

8081
void processFeature( QgsVectorLayer *layer, QgsFeatureId fid );
8182

83+
void triggerTopologyChecks( QgsVectorLayer *layer );
84+
8285
QgsProject *mProject = nullptr;
8386

8487
QHash<QgsVectorLayer *, QList< QgsSingleGeometryCheck * > > mSingleFeatureChecks;
88+
QHash<QgsVectorLayer *, bool > mTopologyChecksOk;
8589
};
8690

8791
#endif // QGSGEOMETRYVALIDATIONSERVICE_H

0 commit comments

Comments
 (0)