QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsrelationwidgetregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsrelationwidgetregistry.h
3 ----------------------
4 begin : October 2020
5 copyright : (C) 2020 by Ivan Ivanov
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
19
21
28
30{
31 qDeleteAll( mRelationWidgetFactories );
32 mRelationWidgetFactories.clear();
33}
34
36{
37 if ( !widgetFactory )
38 return;
39
40 if ( mRelationWidgetFactories.contains( widgetFactory->type() ) )
41 return;
42
43 mRelationWidgetFactories.insert( widgetFactory->type(), widgetFactory );
44}
45
46void QgsRelationWidgetRegistry::removeRelationWidget( const QString &widgetType )
47{
48 // protect the default relation editor widget from removing, so the user has at least one relation widget type
49 if ( widgetType == mDefaultWidgetType )
50 return;
51
52 mRelationWidgetFactories.remove( widgetType );
53}
54
56{
57 return mRelationWidgetFactories.keys();
58}
59
61{
62 if ( !mRelationWidgetFactories.contains( defaultWidgetType ) )
63 return;
64
65 mDefaultWidgetType = defaultWidgetType;
66}
67
69{
70 return mDefaultWidgetType;
71}
72
73QMap<QString, QgsAbstractRelationEditorWidgetFactory *> QgsRelationWidgetRegistry::factories() const
74{
75 return mRelationWidgetFactories;
76}
77
78QgsAbstractRelationEditorWidget *QgsRelationWidgetRegistry::create( const QString &widgetType, const QVariantMap &config, QWidget *parent ) const
79{
80 auto it = mRelationWidgetFactories.constFind( widgetType );
81 if ( it == mRelationWidgetFactories.constEnd() )
82 return nullptr;
83
84 return it.value()->create( config, parent );
85}
86
87QgsAbstractRelationEditorConfigWidget *QgsRelationWidgetRegistry::createConfigWidget( const QString &widgetType, const QgsRelation &relation, QWidget *parent ) const
88{
89 auto it = mRelationWidgetFactories.constFind( widgetType );
90 if ( it == mRelationWidgetFactories.constEnd() )
91 return nullptr;
92
93 return it.value()->configWidget( relation, parent );
94}
Abstract base class for configurable relation widget types.
Factory class for creating relation widgets and their corresponding config widgets.
virtual QString type() const =0
Returns the machine readable identifier name of this widget type.
Base class to build new relation widgets.
Factory class for creating a relation editor widget and the respective config widget.
QString type() const override
Returns the machine readable identifier name of this widget type.
void setDefaultWidgetType(const QString &widgetType)
Sets the default editor widget type.
QMap< QString, QgsAbstractRelationEditorWidgetFactory * > factories() const
Gets access to all registered factories.
void addRelationWidget(QgsAbstractRelationEditorWidgetFactory *widgetFactory)
Adds a new registered relation widgetFactory.
QStringList relationWidgetNames() const
Returns a list of names of registered relation widgets.
QgsAbstractRelationEditorConfigWidget * createConfigWidget(const QString &widgetType, const QgsRelation &relation, QWidget *parent=nullptr) const
Creates a configuration widget.
void removeRelationWidget(const QString &widgetType)
Removes a registered relation widget with given widgetType.
QgsAbstractRelationEditorWidget * create(const QString &widgetType, const QVariantMap &config, QWidget *parent=nullptr) const
Create a relation widget of a given type for a given field.
QString defaultWidgetType() const
Returns the default editor widget type.
Represents a relationship between two vector layers.
Definition qgsrelation.h:42