QGIS API Documentation  3.10.0-A Coruña (6c816b4204)
qgsgeometrycheckregistry.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsgeometrycheckregistry.cpp
3  --------------------------------------
4  Date : September 2018
5  Copyright : (C) 2018 Matthias Kuhn
6  Email : [email protected]
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 
26 QgsGeometryCheck *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 
35 QList<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 }
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...
Base configuration for geometry checks.
CheckType
The type of a check.
QList< QgsGeometryCheckFactory * > geometryCheckFactories(QgsVectorLayer *layer, QgsGeometryCheck::CheckType type, QgsGeometryCheck::Flags flags=nullptr) const
Returns all geometry check factories that are compatible with layer and have all of the flags set...
virtual QString id() const =0
The unique id for this geometry check.
This class implements a geometry check.
void registerGeometryCheck(QgsGeometryCheckFactory *checkFactory)
Registers a new geometry check factory.
virtual QgsGeometryCheck * createGeometryCheck(const QgsGeometryCheckContext *context, const QVariantMap &configuration) const =0
Creates a new geometry check with context and configuration.
Represents a vector layer which manages a vector based data sets.
A factory for geometry checks.