QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsdataitemproviderregistry.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsdataitemproviderregistry.cpp
3 --------------------------------------
4 Date : March 2015
5 Copyright : (C) 2015 by Martin Dobias
6 Email : wonder dot sk at gmail dot com
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
17
18#include "qgsdataitem.h"
19#include "qgsdataitemprovider.h"
20#include "qgsdataprovider.h"
22#include "qgslogger.h"
23#include "qgsproviderregistry.h"
24
25#include "moc_qgsdataitemproviderregistry.cpp"
26
28{
29 mProviders << new QgsFileBasedDataItemProvider();
30
31 QStringList providersList = QgsProviderRegistry::instance()->providerList();
32
33 const auto constProvidersList = providersList;
34 for ( const QString &key : constProvidersList )
35 {
36 QList<QgsDataItemProvider *> providerList = QgsProviderRegistry::instance()->dataItemProviders( key );
37 mProviders << providerList;
38 for ( const auto &p : std::as_const( providerList ) )
39 {
40 if ( ! p->dataProviderKey().isEmpty() )
41 {
42 mDataItemProviderOrigin[ p->name() ] = p->dataProviderKey();
43 }
44 }
45 }
46}
47
49{
50 qDeleteAll( mProviders );
51}
52
53QList<QgsDataItemProvider *> QgsDataItemProviderRegistry::providers() const { return mProviders; }
54
56{
57 for ( const auto &p : std::as_const( mProviders ) )
58 {
59 if ( p->name() == providerName )
60 {
61 return p;
62 }
63 }
64 return nullptr;
65}
66
68{
69 if ( ! provider->dataProviderKey().isEmpty() )
70 {
71 mDataItemProviderOrigin[ provider->name() ] = provider->dataProviderKey();
72 }
73 mProviders.append( provider );
74 emit providerAdded( provider );
75}
76
78{
79 int index = mProviders.indexOf( provider );
80 if ( index >= 0 )
81 {
83 delete mProviders.takeAt( index );
84 }
85}
86
87QString QgsDataItemProviderRegistry::dataProviderKey( const QString &dataItemProviderName )
88{
89 return mDataItemProviderOrigin.value( dataItemProviderName, QString() );
90}
QList< QgsDataItemProvider * > providers() const
Returns the list of available providers.
QString dataProviderKey(const QString &dataItemProviderName)
Returns the (possibly blank) data provider key for a given data item provider name.
void providerWillBeRemoved(QgsDataItemProvider *provider)
Emitted when a data item provider is about to be removed.
void removeProvider(QgsDataItemProvider *provider)
Removes a provider implementation from the registry.
void providerAdded(QgsDataItemProvider *provider)
Emitted when a new data item provider has been added.
void addProvider(QgsDataItemProvider *provider)
Adds a provider implementation to the registry.
QgsDataItemProvider * provider(const QString &providerName) const
Returns the (possibly nullptr) data item provider named providerName.
Interface for providers that add custom data items to the browser tree.
A data item provider for file based data sources.
static QgsProviderRegistry * instance(const QString &pluginPath=QString())
Means of accessing canonical single instance.
QList< QgsDataItemProvider * > dataItemProviders(const QString &providerKey) const
Returns list of data item providers of the provider.
QStringList providerList() const
Returns list of available providers by their keys.