|
@@ -136,26 +136,32 @@ void QgsGeometryGapCheck::collectErrors( const QMap<QString, QgsFeaturePool *> & |
|
|
|
|
|
void QgsGeometryGapCheck::fixError( const QMap<QString, QgsFeaturePool *> &featurePools, QgsGeometryCheckError *error, int method, const QMap<QString, int> & /*mergeAttributeIndices*/, Changes &changes ) const |
|
|
{ |
|
|
if ( method == NoChange ) |
|
|
QMetaEnum metaEnum = QMetaEnum::fromType<QgsGeometryGapCheck::ResolutionMethod>(); |
|
|
if ( !metaEnum.isValid() || !metaEnum.valueToKey( method ) ) |
|
|
{ |
|
|
error->setFixed( method ); |
|
|
error->setFixFailed( tr( "Unknown method" ) ); |
|
|
} |
|
|
else if ( method == MergeLongestEdge ) |
|
|
else |
|
|
{ |
|
|
QString errMsg; |
|
|
if ( mergeWithNeighbor( featurePools, static_cast<QgsGeometryGapCheckError *>( error ), changes, errMsg ) ) |
|
|
{ |
|
|
error->setFixed( method ); |
|
|
} |
|
|
else |
|
|
ResolutionMethod methodValue = static_cast<ResolutionMethod>( method ); |
|
|
switch ( methodValue ) |
|
|
{ |
|
|
error->setFixFailed( tr( "Failed to merge with neighbor: %1" ).arg( errMsg ) ); |
|
|
case NoChange: |
|
|
error->setFixed( method ); |
|
|
break; |
|
|
case MergeLongestEdge: |
|
|
QString errMsg; |
|
|
if ( mergeWithNeighbor( featurePools, static_cast<QgsGeometryGapCheckError *>( error ), changes, errMsg ) ) |
|
|
{ |
|
|
error->setFixed( method ); |
|
|
} |
|
|
else |
|
|
{ |
|
|
error->setFixFailed( tr( "Failed to merge with neighbor: %1" ).arg( errMsg ) ); |
|
|
} |
|
|
break; |
|
|
} |
|
|
} |
|
|
else |
|
|
{ |
|
|
error->setFixFailed( tr( "Unknown method" ) ); |
|
|
} |
|
|
} |
|
|
|
|
|
bool QgsGeometryGapCheck::mergeWithNeighbor( const QMap<QString, QgsFeaturePool *> &featurePools, |
|
|