diff --git a/python/core/auto_generated/qgsprovidermetadata.sip.in b/python/core/auto_generated/qgsprovidermetadata.sip.in index 9c9651b9599..6ac17f3aeef 100644 --- a/python/core/auto_generated/qgsprovidermetadata.sip.in +++ b/python/core/auto_generated/qgsprovidermetadata.sip.in @@ -138,17 +138,29 @@ Returns pyramid resampling methods available for provider virtual QVariantMap decodeUri( const QString &uri ); %Docstring -Decodes URI +Breaks a provider data source URI into its component paths (e.g. file path, layer name). + +:param uri: uri string + +:return: map containing components. Standard components include "path", "layerName", "url". + +.. note:: + + this function may not be supported by all providers, an empty map will be returned in such case .. versionadded:: 3.10 %End - virtual QList< QgsDataItemProvider * > dataItemProviders() const; + virtual QList< QgsDataItemProvider * > dataItemProviders() const /Factory/; %Docstring Returns data item providers. Caller is responsible for ownership of the item providers .. seealso:: :py:func:`QgsProviderGuiMetadata.dataItemGuiProviders` +.. note:: + + Ownership of created data item providers is passed to the caller. + .. versionadded:: 3.10 %End diff --git a/python/core/auto_generated/qgsproviderregistry.sip.in b/python/core/auto_generated/qgsproviderregistry.sip.in index 6fe93a02381..0b4dbd21f92 100644 --- a/python/core/auto_generated/qgsproviderregistry.sip.in +++ b/python/core/auto_generated/qgsproviderregistry.sip.in @@ -152,10 +152,14 @@ responsible for deleting the returned widget. .. deprecated:: QGIS 3.10 - use QgsGui.providerGuiRegistry()->createDataSourceWidget() instead %End - QList< QgsDataItemProvider * > dataItemProviders( const QString &providerKey ) const; + QList< QgsDataItemProvider * > dataItemProviders( const QString &providerKey ) const /Factory/; %Docstring Returns list of data item providers of the provider +.. note:: + + Ownership of created data item providers is passed to the caller. + .. versionadded:: 3.10 %End diff --git a/python/gui/auto_generated/qgsproviderguimetadata.sip.in b/python/gui/auto_generated/qgsproviderguimetadata.sip.in index 59b6bccf2fc..3a203f3b53c 100644 --- a/python/gui/auto_generated/qgsproviderguimetadata.sip.in +++ b/python/gui/auto_generated/qgsproviderguimetadata.sip.in @@ -31,24 +31,37 @@ Constructor for provider gui metadata virtual ~QgsProviderGuiMetadata(); - virtual QList dataItemGuiProviders(); -%Docstring -Returns data item gui providers -%End - virtual void registerGui( QMainWindow *widget ); %Docstring -Assigns parent to widget +Called during GUI initialization - allows provider to do its internal initialization +of GUI components, possibly making use of the passed pointer to the QGIS main window. %End - virtual QList projectStorageGuiProviders(); + virtual QList dataItemGuiProviders() /Factory/; +%Docstring +Returns data item gui providers + +.. note:: + + Ownership of created data item gui providers is passed to the caller. +%End + + virtual QList projectStorageGuiProviders() /Factory/; %Docstring Returns project storage gui providers + +.. note:: + + Ownership of created project storage gui providers is passed to the caller. %End - virtual QList sourceSelectProviders(); + virtual QList sourceSelectProviders() /Factory/; %Docstring Returns source select providers + +.. note:: + + Ownership of created source select providers is passed to the caller. %End QString key() const; diff --git a/python/gui/auto_generated/qgsproviderguiregistry.sip.in b/python/gui/auto_generated/qgsproviderguiregistry.sip.in index d59986aa935..676bbf90acc 100644 --- a/python/gui/auto_generated/qgsproviderguiregistry.sip.in +++ b/python/gui/auto_generated/qgsproviderguiregistry.sip.in @@ -21,7 +21,7 @@ QgsProviderGuiRegistry is not usually directly created, but rather accessed thro :py:func:`QgsGui.providerGuiRegistry()` setPluginPath() should be called (once) to load dynamic providers. Static providers are -loaded in constructopr +loaded in constructor. .. versionadded:: 3.10 %End @@ -50,25 +50,35 @@ Returns metadata of the provider or ``None`` if not found void registerGuis( QMainWindow *widget ); %Docstring -Calls registerGui function of all providers +Called during GUI initialization - allows providers to do its internal initialization +of GUI components, possibly making use of the passed pointer to the QGIS main window. %End - virtual const QList dataItemGuiProviders( const QString &providerKey ); + virtual const QList dataItemGuiProviders( const QString &providerKey ) /Factory/; %Docstring Returns all data item gui providers registered in provider with ``providerKey`` -Caller receiver ownership of created data item providers + +.. note:: + + Ownership of created data item providers is passed to the caller. %End - virtual QList sourceSelectProviders( const QString &providerKey ); + virtual QList sourceSelectProviders( const QString &providerKey ) /Factory/; %Docstring Returns all source select providers registered in provider with ``providerKey`` -Caller receiver ownership of created data item providers + +.. note:: + + Ownership of created source select providers is passed to the caller. %End - virtual QList projectStorageGuiProviders( const QString &providerKey ); + virtual QList projectStorageGuiProviders( const QString &providerKey ) /Factory/; %Docstring Returns all project storage gui providers registered in provider with ``providerKey`` -Caller receiver ownership of created data item providers + +.. note:: + + Ownership of created project storage gui providers is passed to the caller. %End diff --git a/src/core/providers/gdal/qgsgdalprovider.cpp b/src/core/providers/gdal/qgsgdalprovider.cpp index c8ddcd1190b..4b8f5d59253 100644 --- a/src/core/providers/gdal/qgsgdalprovider.cpp +++ b/src/core/providers/gdal/qgsgdalprovider.cpp @@ -3015,17 +3015,18 @@ bool QgsGdalProvider::remove() */ QString QgsGdalProviderMetadata::filters( FilterType type ) { - if ( type == QgsProviderMetadata::FilterType::FilterRaster ) + switch ( type ) { - QString fileFiltersString; - QStringList exts; - QStringList wildcards; - buildSupportedRasterFileFilterAndExtensions( fileFiltersString, exts, wildcards ); - return fileFiltersString; - } - else - { - return QString(); + case QgsProviderMetadata::FilterType::FilterRaster: + { + QString fileFiltersString; + QStringList exts; + QStringList wildcards; + buildSupportedRasterFileFilterAndExtensions( fileFiltersString, exts, wildcards ); + return fileFiltersString; + } + default: + return QString(); } } @@ -3190,7 +3191,7 @@ GDALRasterBandH QgsGdalProvider::getBand( int bandNo ) const // see ticket #284 QList > QgsGdalProviderMetadata::pyramidResamplingMethods() { - QList > methods; + static QList > methods; if ( methods.isEmpty() ) { diff --git a/src/core/providers/ogr/qgsogrprovider.cpp b/src/core/providers/ogr/qgsogrprovider.cpp index 7ca5fd9e806..2199bd5a803 100644 --- a/src/core/providers/ogr/qgsogrprovider.cpp +++ b/src/core/providers/ogr/qgsogrprovider.cpp @@ -6608,13 +6608,12 @@ QgsOgrProviderMetadata::QgsOgrProviderMetadata() QString QgsOgrProviderMetadata::filters( FilterType type ) { - if ( type == QgsProviderMetadata::FilterType::FilterVector ) + switch ( type ) { - return QgsOgrProviderUtils::fileVectorFilters(); - } - else - { - return QString(); + case QgsProviderMetadata::FilterType::FilterVector: + return QgsOgrProviderUtils::fileVectorFilters(); + default: + return QString(); } } diff --git a/src/core/qgsprovidermetadata.h b/src/core/qgsprovidermetadata.h index fb1fefc9f94..ab3437e3f58 100644 --- a/src/core/qgsprovidermetadata.h +++ b/src/core/qgsprovidermetadata.h @@ -187,7 +187,10 @@ class CORE_EXPORT QgsProviderMetadata virtual QList > pyramidResamplingMethods(); /** - * Decodes URI + * Breaks a provider data source URI into its component paths (e.g. file path, layer name). + * \param uri uri string + * \returns map containing components. Standard components include "path", "layerName", "url". + * \note this function may not be supported by all providers, an empty map will be returned in such case * \since QGIS 3.10 */ virtual QVariantMap decodeUri( const QString &uri ); @@ -195,9 +198,10 @@ class CORE_EXPORT QgsProviderMetadata /** * Returns data item providers. Caller is responsible for ownership of the item providers * \see QgsProviderGuiMetadata::dataItemGuiProviders() + * \note Ownership of created data item providers is passed to the caller. * \since QGIS 3.10 */ - virtual QList< QgsDataItemProvider * > dataItemProviders() const; + virtual QList< QgsDataItemProvider * > dataItemProviders() const SIP_FACTORY; /** * Lists stored layer styles in the provider defined by \a uri diff --git a/src/core/qgsproviderregistry.h b/src/core/qgsproviderregistry.h index d970321d876..68ccf4f66cd 100644 --- a/src/core/qgsproviderregistry.h +++ b/src/core/qgsproviderregistry.h @@ -181,10 +181,11 @@ class CORE_EXPORT QgsProviderRegistry Q_DECL_DEPRECATED QWidget *createSelectionWidget( const QString &providerKey, QWidget *parent = nullptr, Qt::WindowFlags fl = Qt::WindowFlags(), QgsProviderRegistry::WidgetMode widgetMode = QgsProviderRegistry::WidgetMode::None ) SIP_DEPRECATED; /** - * Returns list of data item providers of the provider - * \since QGIS 3.10 - */ - QList< QgsDataItemProvider * > dataItemProviders( const QString &providerKey ) const; + * Returns list of data item providers of the provider + * \note Ownership of created data item providers is passed to the caller. + * \since QGIS 3.10 + */ + QList< QgsDataItemProvider * > dataItemProviders( const QString &providerKey ) const SIP_FACTORY; /** * Lists stored layer styles in the provider defined by \a providerKey and \a uri diff --git a/src/gui/qgsproviderguimetadata.h b/src/gui/qgsproviderguimetadata.h index d8cbece781e..86b8e027662 100644 --- a/src/gui/qgsproviderguimetadata.h +++ b/src/gui/qgsproviderguimetadata.h @@ -45,17 +45,29 @@ class GUI_EXPORT QgsProviderGuiMetadata virtual ~QgsProviderGuiMetadata(); - //! Returns data item gui providers - virtual QList dataItemGuiProviders(); - - //! Assigns parent to widget + /** + * Called during GUI initialization - allows provider to do its internal initialization + * of GUI components, possibly making use of the passed pointer to the QGIS main window. + */ virtual void registerGui( QMainWindow *widget ); - //! Returns project storage gui providers - virtual QList projectStorageGuiProviders(); + /** + * Returns data item gui providers + * \note Ownership of created data item gui providers is passed to the caller. + */ + virtual QList dataItemGuiProviders() SIP_FACTORY; - //! Returns source select providers - virtual QList sourceSelectProviders(); + /** + * Returns project storage gui providers + * \note Ownership of created project storage gui providers is passed to the caller. + */ + virtual QList projectStorageGuiProviders() SIP_FACTORY; + + /** + * Returns source select providers + * \note Ownership of created source select providers is passed to the caller. + */ + virtual QList sourceSelectProviders() SIP_FACTORY; //! Returns unique provider key QString key() const; diff --git a/src/gui/qgsproviderguiregistry.h b/src/gui/qgsproviderguiregistry.h index da172c3cb42..16f9c4c4c0e 100644 --- a/src/gui/qgsproviderguiregistry.h +++ b/src/gui/qgsproviderguiregistry.h @@ -42,7 +42,7 @@ class QgsProjectStorageGuiProvider; * QgsGui::providerGuiRegistry(). * * setPluginPath() should be called (once) to load dynamic providers. Static providers are - * loaded in constructopr + * loaded in constructor. * * \since QGIS 3.10 */ @@ -62,26 +62,29 @@ class GUI_EXPORT QgsProviderGuiRegistry //! Returns metadata of the provider or NULLPTR if not found const QgsProviderGuiMetadata *providerMetadata( const QString &providerKey ) const; - //! Calls registerGui function of all providers + /** + * Called during GUI initialization - allows providers to do its internal initialization + * of GUI components, possibly making use of the passed pointer to the QGIS main window. + */ void registerGuis( QMainWindow *widget ); /** * Returns all data item gui providers registered in provider with \a providerKey - * Caller receiver ownership of created data item providers + * \note Ownership of created data item providers is passed to the caller. */ - virtual const QList dataItemGuiProviders( const QString &providerKey ); + virtual const QList dataItemGuiProviders( const QString &providerKey ) SIP_FACTORY; /** * Returns all source select providers registered in provider with \a providerKey - * Caller receiver ownership of created data item providers + * \note Ownership of created source select providers is passed to the caller. */ - virtual QList sourceSelectProviders( const QString &providerKey ); + virtual QList sourceSelectProviders( const QString &providerKey ) SIP_FACTORY; /** * Returns all project storage gui providers registered in provider with \a providerKey - * Caller receiver ownership of created data item providers + * \note Ownership of created project storage gui providers is passed to the caller. */ - virtual QList projectStorageGuiProviders( const QString &providerKey ); + virtual QList projectStorageGuiProviders( const QString &providerKey ) SIP_FACTORY; //! Type for data provider metadata associative container SIP_SKIP typedef std::map GuiProviders; diff --git a/src/providers/mdal/qgsmdalprovider.cpp b/src/providers/mdal/qgsmdalprovider.cpp index f9a32c1b28b..6d0be3284b5 100644 --- a/src/providers/mdal/qgsmdalprovider.cpp +++ b/src/providers/mdal/qgsmdalprovider.cpp @@ -587,22 +587,25 @@ QList QgsMdalProviderGuiMetadata::sourceSelectProvide QString QgsMdalProviderMetadata::filters( FilterType type ) { - if ( type == QgsProviderMetadata::FilterType::FilterMesh ) + switch ( type ) { - QString fileMeshFiltersString; - QString fileMeshDatasetFiltersString; - QgsMdalProvider::fileMeshFilters( fileMeshFiltersString, fileMeshDatasetFiltersString ); - return fileMeshFiltersString; + case QgsProviderMetadata::FilterType::FilterMesh: + { + QString fileMeshFiltersString; + QString fileMeshDatasetFiltersString; + QgsMdalProvider::fileMeshFilters( fileMeshFiltersString, fileMeshDatasetFiltersString ); + return fileMeshFiltersString; + } + case QgsProviderMetadata::FilterType::FilterMeshDataset: + { + QString fileMeshFiltersString; + QString fileMeshDatasetFiltersString; + QgsMdalProvider::fileMeshFilters( fileMeshFiltersString, fileMeshDatasetFiltersString ); + return fileMeshDatasetFiltersString; + } + default: + return QString(); } - else if ( type == QgsProviderMetadata::FilterType::FilterMeshDataset ) - { - QString fileMeshFiltersString; - QString fileMeshDatasetFiltersString; - QgsMdalProvider::fileMeshFilters( fileMeshFiltersString, fileMeshDatasetFiltersString ); - return fileMeshDatasetFiltersString; - } - else - return QString(); } #endif