QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
gui
qgsprovidersourcewidgetproviderregistry.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsprovidersourcewidgetproviderregistry.cpp
3
----------------------------------------
4
Date : December 2020
5
Copyright : (C) 2020 by Nyall Dawson
6
Email : nyall dot dawson at gmail dot com
7
****************************************************************************/
8
/***************************************************************************
9
* *
10
* This program is free software; you can redistribute it and/or modify *
11
* it under the terms of the GNU General Public License as published by *
12
* the Free Software Foundation; either version 2 of the License, or *
13
* (at your option) any later version. *
14
* *
15
***************************************************************************/
16
17
#include "
qgsprovidersourcewidgetproviderregistry.h
"
18
19
#include <memory>
20
21
#include "
qgsproviderguiregistry.h
"
22
#include "
qgsprovidersourcewidgetprovider.h
"
23
24
QgsProviderSourceWidgetProviderRegistry::QgsProviderSourceWidgetProviderRegistry
() =
default
;
25
26
QgsProviderSourceWidgetProviderRegistry::~QgsProviderSourceWidgetProviderRegistry
()
27
{
28
qDeleteAll( mProviders );
29
}
30
31
QList<QgsProviderSourceWidgetProvider *>
QgsProviderSourceWidgetProviderRegistry::providers
()
32
{
33
return
mProviders;
34
}
35
36
void
QgsProviderSourceWidgetProviderRegistry::addProvider
(
QgsProviderSourceWidgetProvider
*provider )
37
{
38
mProviders.append( provider );
39
}
40
41
bool
QgsProviderSourceWidgetProviderRegistry::removeProvider
(
QgsProviderSourceWidgetProvider
*provider )
42
{
43
const
int
index = mProviders.indexOf( provider );
44
if
( index >= 0 )
45
{
46
delete
mProviders.takeAt( index );
47
return
true
;
48
}
49
return
false
;
50
}
51
52
53
void
QgsProviderSourceWidgetProviderRegistry::initializeFromProviderGuiRegistry
(
QgsProviderGuiRegistry
*providerGuiRegistry )
54
{
55
if
( !providerGuiRegistry )
56
return
;
57
58
const
QStringList providersList = providerGuiRegistry->
providerList
();
59
for
(
const
QString &key : providersList )
60
{
61
const
QList<QgsProviderSourceWidgetProvider *> providerList = providerGuiRegistry->
sourceWidgetProviders
( key );
62
// the function is a factory - we keep ownership of the returned providers
63
for
(
QgsProviderSourceWidgetProvider
*provider : providerList )
64
{
65
addProvider
( provider );
66
}
67
}
68
}
69
70
QgsProviderSourceWidgetProvider
*
QgsProviderSourceWidgetProviderRegistry::providerByName
(
const
QString &name )
71
{
72
const
QList<QgsProviderSourceWidgetProvider *> providerList =
providers
();
73
for
(
QgsProviderSourceWidgetProvider
*provider : providerList )
74
{
75
if
( provider->name() == name )
76
{
77
return
provider;
78
}
79
}
80
return
nullptr
;
81
}
82
83
QList<QgsProviderSourceWidgetProvider *>
QgsProviderSourceWidgetProviderRegistry::providersByKey
(
const
QString &providerKey )
84
{
85
QList<QgsProviderSourceWidgetProvider *> result;
86
const
QList<QgsProviderSourceWidgetProvider *> providerList =
providers
();
87
for
(
QgsProviderSourceWidgetProvider
*provider : providerList )
88
{
89
if
( provider->providerKey() == providerKey )
90
{
91
result << provider;
92
}
93
}
94
return
result;
95
}
96
97
QgsProviderSourceWidget
*
QgsProviderSourceWidgetProviderRegistry::createWidget
(
QgsMapLayer
*layer, QWidget *parent )
98
{
99
const
QList<QgsProviderSourceWidgetProvider *> providerList =
providers
();
100
// Loop over providers to find one that can handle the layer.
101
for
(
QgsProviderSourceWidgetProvider
*provider : providerList )
102
{
103
if
( provider->canHandleLayer( layer ) )
104
{
105
return
provider->createWidget( layer, parent );
106
}
107
}
108
109
return
nullptr
;
110
}
QgsMapLayer
Base class for all map layer types.
Definition
qgsmaplayer.h:83
QgsProviderGuiRegistry
A registry / canonical manager of GUI parts of data providers.
Definition
qgsproviderguiregistry.h:54
QgsProviderGuiRegistry::sourceWidgetProviders
virtual QList< QgsProviderSourceWidgetProvider * > sourceWidgetProviders(const QString &providerKey)
Returns all source widget providers registered in provider with providerKey.
Definition
qgsproviderguiregistry.cpp:276
QgsProviderGuiRegistry::providerList
QStringList providerList() const
Returns list of available providers by their keys.
Definition
qgsproviderguiregistry.cpp:299
QgsProviderSourceWidgetProviderRegistry::~QgsProviderSourceWidgetProviderRegistry
~QgsProviderSourceWidgetProviderRegistry()
Definition
qgsprovidersourcewidgetproviderregistry.cpp:26
QgsProviderSourceWidgetProviderRegistry::providers
QList< QgsProviderSourceWidgetProvider * > providers()
Gets list of available providers.
Definition
qgsprovidersourcewidgetproviderregistry.cpp:31
QgsProviderSourceWidgetProviderRegistry::providerByName
QgsProviderSourceWidgetProvider * providerByName(const QString &name)
Returns a provider by name or nullptr if not found.
Definition
qgsprovidersourcewidgetproviderregistry.cpp:70
QgsProviderSourceWidgetProviderRegistry::createWidget
QgsProviderSourceWidget * createWidget(QgsMapLayer *layer, QWidget *parent=nullptr)
Creates a new widget to configure the source of the specified layer.
Definition
qgsprovidersourcewidgetproviderregistry.cpp:97
QgsProviderSourceWidgetProviderRegistry::initializeFromProviderGuiRegistry
void initializeFromProviderGuiRegistry(QgsProviderGuiRegistry *providerGuiRegistry)
Initializes the registry.
Definition
qgsprovidersourcewidgetproviderregistry.cpp:53
QgsProviderSourceWidgetProviderRegistry::providersByKey
QList< QgsProviderSourceWidgetProvider * > providersByKey(const QString &providerKey)
Returns a (possibly empty) list of providers by data providerkey.
Definition
qgsprovidersourcewidgetproviderregistry.cpp:83
QgsProviderSourceWidgetProviderRegistry::removeProvider
bool removeProvider(QgsProviderSourceWidgetProvider *provider)
Remove provider implementation from the list (provider object is deleted).
Definition
qgsprovidersourcewidgetproviderregistry.cpp:41
QgsProviderSourceWidgetProviderRegistry::addProvider
void addProvider(QgsProviderSourceWidgetProvider *provider)
Add a provider implementation. Takes ownership of the object.
Definition
qgsprovidersourcewidgetproviderregistry.cpp:36
QgsProviderSourceWidgetProviderRegistry::QgsProviderSourceWidgetProviderRegistry
QgsProviderSourceWidgetProviderRegistry()
QgsProviderSourceWidgetProvider
An interface for providers of widgets designed to configure a data provider's source.
Definition
qgsprovidersourcewidgetprovider.h:38
QgsProviderSourceWidget
Base class for widgets which allow customization of a provider's source URI.
Definition
qgsprovidersourcewidget.h:34
qgsproviderguiregistry.h
qgsprovidersourcewidgetprovider.h
qgsprovidersourcewidgetproviderregistry.h
Generated on
for QGIS API Documentation by
1.17.0