QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
qgsgeometrycheckregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsgeometrycheckregistry.cpp
3 --------------------------------------
4 Date : September 2018
5 Copyright : (C) 2018 Matthias Kuhn
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
18#include "qgis.h"
19
20
22{
23 qDeleteAll( mGeometryCheckFactories );
24}
25
26QgsGeometryCheck *QgsGeometryCheckRegistry::geometryCheck( const QString &checkId, QgsGeometryCheckContext *context, const QVariantMap &geometryCheckConfig )
27{
28 QgsGeometryCheckFactory *factory = mGeometryCheckFactories.value( checkId );
29 if ( factory )
30 return factory->createGeometryCheck( context, geometryCheckConfig );
31 else
32 return nullptr;
33}
34
35QList<QgsGeometryCheckFactory *> QgsGeometryCheckRegistry::geometryCheckFactories( QgsVectorLayer *layer, QgsGeometryCheck::CheckType type, QgsGeometryCheck::Flags flags ) const
36{
37 QList<QgsGeometryCheckFactory *> factories;
38 for ( QgsGeometryCheckFactory *factory : mGeometryCheckFactories )
39 {
40 if ( factory->checkType() == type && ( factory->flags() & flags ) == flags && factory->isCompatible( layer ) )
41 factories << factory;
42 }
43 return factories;
44}
45
47{
48 mGeometryCheckFactories.insert( checkFactory->id(), checkFactory );
49}
Base configuration for geometry checks.
A factory for geometry checks.
virtual QString id() const =0
The unique id for this geometry check.
virtual QgsGeometryCheck * createGeometryCheck(const QgsGeometryCheckContext *context, const QVariantMap &configuration) const =0
Creates a new geometry check with context and configuration.
QgsGeometryCheck * geometryCheck(const QString &checkId, QgsGeometryCheckContext *context, const QVariantMap &geometryCheckConfig)
Create a new geometryCheck of type checkId Pass the context and geometryCheckConfiguration to the new...
void registerGeometryCheck(QgsGeometryCheckFactory *checkFactory)
Registers a new geometry check factory.
QList< QgsGeometryCheckFactory * > geometryCheckFactories(QgsVectorLayer *layer, QgsGeometryCheck::CheckType type, QgsGeometryCheck::Flags flags=QgsGeometryCheck::Flags()) const
Returns all geometry check factories that are compatible with layer and have all of the flags set.
This class implements a geometry check.
CheckType
The type of a check.
Represents a vector layer which manages a vector based data sets.