QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
gui
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
6
email : ivan@opengis.ch
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
18
#include "
qgsrelationwidgetregistry.h
"
19
20
#include "
qgsrelationeditorwidget.h
"
21
22
QgsRelationWidgetRegistry::QgsRelationWidgetRegistry
()
23
{
24
QgsRelationEditorWidgetFactory
*factory =
new
QgsRelationEditorWidgetFactory
();
25
addRelationWidget
( factory );
26
setDefaultWidgetType
( factory->
type
() );
27
}
28
29
QgsRelationWidgetRegistry::~QgsRelationWidgetRegistry
()
30
{
31
qDeleteAll( mRelationWidgetFactories );
32
mRelationWidgetFactories.clear();
33
}
34
35
void
QgsRelationWidgetRegistry::addRelationWidget
(
QgsAbstractRelationEditorWidgetFactory
*widgetFactory )
36
{
37
if
( !widgetFactory )
38
return
;
39
40
if
( mRelationWidgetFactories.contains( widgetFactory->
type
() ) )
41
return
;
42
43
mRelationWidgetFactories.insert( widgetFactory->
type
(), widgetFactory );
44
}
45
46
void
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
55
QStringList
QgsRelationWidgetRegistry::relationWidgetNames
()
const
56
{
57
return
mRelationWidgetFactories.keys();
58
}
59
60
void
QgsRelationWidgetRegistry::setDefaultWidgetType
(
const
QString &
defaultWidgetType
)
61
{
62
if
( !mRelationWidgetFactories.contains(
defaultWidgetType
) )
63
return
;
64
65
mDefaultWidgetType =
defaultWidgetType
;
66
}
67
68
QString
QgsRelationWidgetRegistry::defaultWidgetType
()
const
69
{
70
return
mDefaultWidgetType;
71
}
72
73
QMap<QString, QgsAbstractRelationEditorWidgetFactory *>
QgsRelationWidgetRegistry::factories
()
const
74
{
75
return
mRelationWidgetFactories;
76
}
77
78
QgsAbstractRelationEditorWidget
*
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
87
QgsAbstractRelationEditorConfigWidget
*
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
}
QgsAbstractRelationEditorConfigWidget
Abstract base class for configurable relation widget types.
Definition
qgsabstractrelationeditorwidget.h:341
QgsAbstractRelationEditorWidgetFactory
Factory class for creating relation widgets and their corresponding config widgets.
Definition
qgsabstractrelationeditorwidget.h:420
QgsAbstractRelationEditorWidgetFactory::type
virtual QString type() const =0
Returns the machine readable identifier name of this widget type.
QgsAbstractRelationEditorWidget
Base class to build new relation widgets.
Definition
qgsabstractrelationeditorwidget.h:46
QgsRelationEditorWidgetFactory
Factory class for creating a relation editor widget and the respective config widget.
Definition
qgsrelationeditorwidget.h:322
QgsRelationEditorWidgetFactory::type
QString type() const override
Returns the machine readable identifier name of this widget type.
Definition
qgsrelationeditorwidget.cpp:1050
QgsRelationWidgetRegistry::setDefaultWidgetType
void setDefaultWidgetType(const QString &widgetType)
Sets the default editor widget type.
Definition
qgsrelationwidgetregistry.cpp:60
QgsRelationWidgetRegistry::factories
QMap< QString, QgsAbstractRelationEditorWidgetFactory * > factories() const
Gets access to all registered factories.
Definition
qgsrelationwidgetregistry.cpp:73
QgsRelationWidgetRegistry::QgsRelationWidgetRegistry
QgsRelationWidgetRegistry()
Constructor.
Definition
qgsrelationwidgetregistry.cpp:22
QgsRelationWidgetRegistry::~QgsRelationWidgetRegistry
~QgsRelationWidgetRegistry()
Definition
qgsrelationwidgetregistry.cpp:29
QgsRelationWidgetRegistry::addRelationWidget
void addRelationWidget(QgsAbstractRelationEditorWidgetFactory *widgetFactory)
Adds a new registered relation widgetFactory.
Definition
qgsrelationwidgetregistry.cpp:35
QgsRelationWidgetRegistry::relationWidgetNames
QStringList relationWidgetNames() const
Returns a list of names of registered relation widgets.
Definition
qgsrelationwidgetregistry.cpp:55
QgsRelationWidgetRegistry::createConfigWidget
QgsAbstractRelationEditorConfigWidget * createConfigWidget(const QString &widgetType, const QgsRelation &relation, QWidget *parent=nullptr) const
Creates a configuration widget.
Definition
qgsrelationwidgetregistry.cpp:87
QgsRelationWidgetRegistry::removeRelationWidget
void removeRelationWidget(const QString &widgetType)
Removes a registered relation widget with given widgetType.
Definition
qgsrelationwidgetregistry.cpp:46
QgsRelationWidgetRegistry::create
QgsAbstractRelationEditorWidget * create(const QString &widgetType, const QVariantMap &config, QWidget *parent=nullptr) const
Create a relation widget of a given type for a given field.
Definition
qgsrelationwidgetregistry.cpp:78
QgsRelationWidgetRegistry::defaultWidgetType
QString defaultWidgetType() const
Returns the default editor widget type.
Definition
qgsrelationwidgetregistry.cpp:68
QgsRelation
Represents a relationship between two vector layers.
Definition
qgsrelation.h:42
qgsrelationeditorwidget.h
qgsrelationwidgetregistry.h
Generated on
for QGIS API Documentation by
1.17.0