Skip to content

Commit 1f1ec0f

Browse files
3nidsm-kuhn
authored andcommitted
fix dox and use metaEnum + switch to handle resolution method
1 parent fc6f55b commit 1f1ec0f

File tree

3 files changed

+29
-16
lines changed

3 files changed

+29
-16
lines changed

src/analysis/CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,7 @@ SET(QGIS_ANALYSIS_MOC_HDRS
187187
vector/geometry_checker/qgsgeometrychecker.h
188188
vector/geometry_checker/qgsgeometrycheck.h
189189
vector/geometry_checker/qgsvectorlayerfeaturepool.h
190+
vector/geometry_checker/qgsgeometrygapcheck.h
190191
)
191192

192193
INCLUDE_DIRECTORIES(SYSTEM ${SPATIALITE_INCLUDE_DIR})
@@ -292,7 +293,6 @@ SET(QGIS_ANALYSIS_HDRS
292293
vector/geometry_checker/qgsgeometryduplicatecheck.h
293294
vector/geometry_checker/qgsgeometryduplicatenodescheck.h
294295
vector/geometry_checker/qgsgeometryfollowboundariescheck.h
295-
vector/geometry_checker/qgsgeometrygapcheck.h
296296
vector/geometry_checker/qgsgeometrymissingvertexcheck.h
297297
vector/geometry_checker/qgsgeometryholecheck.h
298298
vector/geometry_checker/qgsgeometrylineintersectioncheck.h

src/analysis/vector/geometry_checker/qgsgeometrygapcheck.cpp

+20-14
Original file line numberDiff line numberDiff line change
@@ -136,26 +136,32 @@ void QgsGeometryGapCheck::collectErrors( const QMap<QString, QgsFeaturePool *> &
136136

137137
void QgsGeometryGapCheck::fixError( const QMap<QString, QgsFeaturePool *> &featurePools, QgsGeometryCheckError *error, int method, const QMap<QString, int> & /*mergeAttributeIndices*/, Changes &changes ) const
138138
{
139-
if ( method == NoChange )
139+
QMetaEnum metaEnum = QMetaEnum::fromType<QgsGeometryGapCheck::ResolutionMethod>();
140+
if ( !metaEnum.isValid() || !metaEnum.valueToKey( method ) )
140141
{
141-
error->setFixed( method );
142+
error->setFixFailed( tr( "Unknown method" ) );
142143
}
143-
else if ( method == MergeLongestEdge )
144+
else
144145
{
145-
QString errMsg;
146-
if ( mergeWithNeighbor( featurePools, static_cast<QgsGeometryGapCheckError *>( error ), changes, errMsg ) )
147-
{
148-
error->setFixed( method );
149-
}
150-
else
146+
ResolutionMethod methodValue = static_cast<ResolutionMethod>( method );
147+
switch ( methodValue )
151148
{
152-
error->setFixFailed( tr( "Failed to merge with neighbor: %1" ).arg( errMsg ) );
149+
case NoChange:
150+
error->setFixed( method );
151+
break;
152+
case MergeLongestEdge:
153+
QString errMsg;
154+
if ( mergeWithNeighbor( featurePools, static_cast<QgsGeometryGapCheckError *>( error ), changes, errMsg ) )
155+
{
156+
error->setFixed( method );
157+
}
158+
else
159+
{
160+
error->setFixFailed( tr( "Failed to merge with neighbor: %1" ).arg( errMsg ) );
161+
}
162+
break;
153163
}
154164
}
155-
else
156-
{
157-
error->setFixFailed( tr( "Unknown method" ) );
158-
}
159165
}
160166

161167
bool QgsGeometryGapCheck::mergeWithNeighbor( const QMap<QString, QgsFeaturePool *> &featurePools,

src/analysis/vector/geometry_checker/qgsgeometrygapcheck.h

+8-1
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,15 @@ class ANALYSIS_EXPORT QgsGeometryGapCheckError : public QgsGeometryCheckError
7676

7777
class ANALYSIS_EXPORT QgsGeometryGapCheck : public QgsGeometryCheck
7878
{
79+
Q_GADGET
7980
public:
80-
enum ResolutionMethod { MergeLongestEdge, NoChange };
81+
//! Resolution methods for geometry gap checks
82+
enum ResolutionMethod
83+
{
84+
MergeLongestEdge,
85+
NoChange
86+
};
87+
Q_ENUM( ResolutionMethod )
8188

8289
/**
8390
* The \a configuration accepts a "gapThreshold" key which specifies

0 commit comments

Comments
 (0)