diff --git a/python/core/qgsdataitemproviderregistry.sip b/python/core/qgsdataitemproviderregistry.sip index d14a311b9c7..c2f685527c5 100644 --- a/python/core/qgsdataitemproviderregistry.sip +++ b/python/core/qgsdataitemproviderregistry.sip @@ -13,6 +13,12 @@ class QgsDataItemProviderRegistry //! Get list of available providers QList providers() const; + //! Add a provider implementation. Takes ownership of the object. + void addProvider( QgsDataItemProvider* provider /Transfer/ ); + + //! Remove provider implementation from the list (provider object is deleted) + void removeProvider( QgsDataItemProvider* provider ); + private: QgsDataItemProviderRegistry(); diff --git a/src/core/qgsdataitemproviderregistry.cpp b/src/core/qgsdataitemproviderregistry.cpp index 35c07f3c936..50849ef2441 100644 --- a/src/core/qgsdataitemproviderregistry.cpp +++ b/src/core/qgsdataitemproviderregistry.cpp @@ -84,3 +84,14 @@ QgsDataItemProviderRegistry::~QgsDataItemProviderRegistry() qDeleteAll( mProviders ); } +void QgsDataItemProviderRegistry::addProvider( QgsDataItemProvider* provider ) +{ + mProviders.append( provider ); +} + +void QgsDataItemProviderRegistry::removeProvider( QgsDataItemProvider* provider ) +{ + int index = mProviders.indexOf( provider ); + if ( index >= 0 ) + delete mProviders.takeAt( index ); +} diff --git a/src/core/qgsdataitemproviderregistry.h b/src/core/qgsdataitemproviderregistry.h index edcd6546c71..9ac92fff435 100644 --- a/src/core/qgsdataitemproviderregistry.h +++ b/src/core/qgsdataitemproviderregistry.h @@ -36,6 +36,12 @@ class CORE_EXPORT QgsDataItemProviderRegistry : public QgsSingleton providers() const { return mProviders; } + //! Add a provider implementation. Takes ownership of the object. + void addProvider( QgsDataItemProvider* provider ); + + //! Remove provider implementation from the list (provider object is deleted) + void removeProvider( QgsDataItemProvider* provider ); + private: QgsDataItemProviderRegistry();