Address review

This commit is contained in:
Mathieu Pellerin 2025-06-27 14:02:05 +07:00 committed by Nyall Dawson
parent 231929e6e3
commit d31b74c0ae
29 changed files with 83 additions and 347 deletions

View File

@ -29,50 +29,14 @@ per-layer basis.
Constructor Constructor
%End %End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated="Since 4.0. Use the layer ID variant."/; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated/;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layerId: the layer ID to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureExpressionFilterProvider *clone() const /Factory/; virtual QgsFeatureExpressionFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ) /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring
Set a filter for the given layer.
:param layer: the layer to filter
:param expression: the filter expression
.. deprecated:: 4.0
Use the layer ID variant.
%End
void setFilter( const QString &layerId, const QgsExpression &expression ); void setFilter( const QString &layerId, const QgsExpression &expression );
%Docstring %Docstring

View File

@ -30,12 +30,14 @@ also available.
public: public:
virtual bool isFilterThreadSafe() const; virtual bool isFilterThreadSafe() const /Deprecated="Since 4.0. "/;
%Docstring %Docstring
Returns ``True`` if the filterFeature function is thread safe, which Returns ``True`` if the filterFeature function is thread safe, which
will lead to reliance on layer ID instead of the raw layer pointer. will lead to reliance on layer ID instead of the raw layer pointer.
.. versionadded:: 4.0 .. versionadded:: 4.0
.. deprecated:: 4.0
%End %End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &featureRequest ) const /Deprecated="Since 4.0. Use the layer ID variant."/; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &featureRequest ) const /Deprecated="Since 4.0. Use the layer ID variant."/;
@ -60,6 +62,8 @@ method.
:param layerId: the layer ID to filter :param layerId: the layer ID to filter
:param featureRequest: the feature request to update :param featureRequest: the feature request to update
.. versionadded:: 4.0
%End %End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const = 0; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const = 0;

View File

@ -27,41 +27,17 @@ A filter filter provider grouping several filter providers.
Constructor Constructor
%End %End
virtual bool isFilterThreadSafe() const; virtual bool isFilterThreadSafe() const /Deprecated/;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated="Since 4.0. Use the layer ID variant."/; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated/;
%Docstring
Filter the features of the layer.
:param layer: the layer to control
:param filterFeatures: the request to fill
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer.
:param layerId: the layer ID to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsGroupedFeatureFilterProvider *clone() const /Factory/; virtual QgsGroupedFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
QgsGroupedFeatureFilterProvider &addProvider( const QgsFeatureFilterProvider *provider ); QgsGroupedFeatureFilterProvider &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring %Docstring

View File

@ -1,5 +1,5 @@
# The following has been generated automatically from src/server/qgsaccesscontrol.h # The following has been generated automatically from src/server/qgsaccesscontrol.h
try: try:
QgsAccessControl.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'clone', 'layerAttributes'] QgsAccessControl.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -37,6 +37,13 @@ Constructor
virtual bool isFilterThreadSafe() const; virtual bool isFilterThreadSafe() const;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsAccessControl *clone() const /Factory/;
void resolveFilterFeatures( const QList<QgsMapLayer *> &layers ); void resolveFilterFeatures( const QList<QgsMapLayer *> &layers );
%Docstring %Docstring
Resolve features' filter of layers The method fetch filter's expressions Resolve features' filter of layers The method fetch filter's expressions
@ -51,23 +58,6 @@ for efficiency; between each requests, the cache must be cleared using
void unresolveFilterFeatures(); void unresolveFilterFeatures();
%Docstring %Docstring
Clear expression's cache computed from `resolveFilterFeatures` Clear expression's cache computed from `resolveFilterFeatures`
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End %End
QString extraSubsetString( const QgsVectorLayer *layer ) const; QString extraSubsetString( const QgsVectorLayer *layer ) const;
@ -113,17 +103,6 @@ Returns the layer delete right
:param layer: the layer to control :param layer: the layer to control
:return: ``True`` if we can do a delete :return: ``True`` if we can do a delete
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
%Docstring
Returns the authorized layer attributes
:param layer: the layer to control
:param attributes: the list of attribute
:return: the list of visible attributes
%End %End
bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const; bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const;

View File

@ -16,6 +16,10 @@ class QgsFeatureFilter : QgsFeatureFilterProvider
%Docstring(signature="appended") %Docstring(signature="appended")
A feature filter provider allowing to set filter expressions on a A feature filter provider allowing to set filter expressions on a
per-layer basis. per-layer basis.
.. deprecated:: 3.4
Use :py:class:`QgsFeatureExpressionFilterProvider`
%End %End
%TypeHeaderCode %TypeHeaderCode
@ -31,23 +35,10 @@ Constructor
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProvider *clone() const /Factory/; virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ); void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression );
%Docstring %Docstring

View File

@ -14,6 +14,10 @@ class QgsFeatureFilterProviderGroup : QgsFeatureFilterProvider
{ {
%Docstring(signature="appended") %Docstring(signature="appended")
A filter filter provider grouping several filter providers. A filter filter provider grouping several filter providers.
.. deprecated:: 3.4
Use :py:class:`QgsGroupedFeatureFilterProvider`
%End %End
%TypeHeaderCode %TypeHeaderCode
@ -29,23 +33,10 @@ Constructor
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer.
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProviderGroup *clone() const /Factory/;
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider ); QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring %Docstring

View File

@ -29,50 +29,14 @@ per-layer basis.
Constructor Constructor
%End %End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated="Since 4.0. Use the layer ID variant."/; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated/;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layerId: the layer ID to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureExpressionFilterProvider *clone() const /Factory/; virtual QgsFeatureExpressionFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ) /Deprecated="Since 4.0. Use the layer ID variant."/;
%Docstring
Set a filter for the given layer.
:param layer: the layer to filter
:param expression: the filter expression
.. deprecated:: 4.0
Use the layer ID variant.
%End
void setFilter( const QString &layerId, const QgsExpression &expression ); void setFilter( const QString &layerId, const QgsExpression &expression );
%Docstring %Docstring

View File

@ -30,12 +30,14 @@ also available.
public: public:
virtual bool isFilterThreadSafe() const; virtual bool isFilterThreadSafe() const /Deprecated="Since 4.0. "/;
%Docstring %Docstring
Returns ``True`` if the filterFeature function is thread safe, which Returns ``True`` if the filterFeature function is thread safe, which
will lead to reliance on layer ID instead of the raw layer pointer. will lead to reliance on layer ID instead of the raw layer pointer.
.. versionadded:: 4.0 .. versionadded:: 4.0
.. deprecated:: 4.0
%End %End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &featureRequest ) const /Deprecated="Since 4.0. Use the layer ID variant."/; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &featureRequest ) const /Deprecated="Since 4.0. Use the layer ID variant."/;
@ -60,6 +62,8 @@ method.
:param layerId: the layer ID to filter :param layerId: the layer ID to filter
:param featureRequest: the feature request to update :param featureRequest: the feature request to update
.. versionadded:: 4.0
%End %End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const = 0; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const = 0;

View File

@ -27,41 +27,17 @@ A filter filter provider grouping several filter providers.
Constructor Constructor
%End %End
virtual bool isFilterThreadSafe() const; virtual bool isFilterThreadSafe() const /Deprecated/;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated="Since 4.0. Use the layer ID variant."/; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const /Deprecated/;
%Docstring
Filter the features of the layer.
:param layer: the layer to control
:param filterFeatures: the request to fill
.. deprecated:: 4.0
Use the layer ID variant.
%End
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer.
:param layerId: the layer ID to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsGroupedFeatureFilterProvider *clone() const /Factory/; virtual QgsGroupedFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
QgsGroupedFeatureFilterProvider &addProvider( const QgsFeatureFilterProvider *provider ); QgsGroupedFeatureFilterProvider &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring %Docstring

View File

@ -1,5 +1,5 @@
# The following has been generated automatically from src/server/qgsaccesscontrol.h # The following has been generated automatically from src/server/qgsaccesscontrol.h
try: try:
QgsAccessControl.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'clone', 'layerAttributes'] QgsAccessControl.__overridden_methods__ = ['isFilterThreadSafe', 'filterFeatures', 'layerAttributes', 'clone']
except (NameError, AttributeError): except (NameError, AttributeError):
pass pass

View File

@ -37,6 +37,13 @@ Constructor
virtual bool isFilterThreadSafe() const; virtual bool isFilterThreadSafe() const;
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsAccessControl *clone() const /Factory/;
void resolveFilterFeatures( const QList<QgsMapLayer *> &layers ); void resolveFilterFeatures( const QList<QgsMapLayer *> &layers );
%Docstring %Docstring
Resolve features' filter of layers The method fetch filter's expressions Resolve features' filter of layers The method fetch filter's expressions
@ -51,23 +58,6 @@ for efficiency; between each requests, the cache must be cleared using
void unresolveFilterFeatures(); void unresolveFilterFeatures();
%Docstring %Docstring
Clear expression's cache computed from `resolveFilterFeatures` Clear expression's cache computed from `resolveFilterFeatures`
%End
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End %End
QString extraSubsetString( const QgsVectorLayer *layer ) const; QString extraSubsetString( const QgsVectorLayer *layer ) const;
@ -113,17 +103,6 @@ Returns the layer delete right
:param layer: the layer to control :param layer: the layer to control
:return: ``True`` if we can do a delete :return: ``True`` if we can do a delete
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
%Docstring
Returns the authorized layer attributes
:param layer: the layer to control
:param attributes: the list of attribute
:return: the list of visible attributes
%End %End
bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const; bool allowToEdit( const QgsVectorLayer *layer, const QgsFeature &feature ) const;

View File

@ -16,6 +16,10 @@ class QgsFeatureFilter : QgsFeatureFilterProvider
%Docstring(signature="appended") %Docstring(signature="appended")
A feature filter provider allowing to set filter expressions on a A feature filter provider allowing to set filter expressions on a
per-layer basis. per-layer basis.
.. deprecated:: 3.4
Use :py:class:`QgsFeatureExpressionFilterProvider`
%End %End
%TypeHeaderCode %TypeHeaderCode
@ -31,23 +35,10 @@ Constructor
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProvider *clone() const /Factory/; virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ); void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression );
%Docstring %Docstring

View File

@ -14,6 +14,10 @@ class QgsFeatureFilterProviderGroup : QgsFeatureFilterProvider
{ {
%Docstring(signature="appended") %Docstring(signature="appended")
A filter filter provider grouping several filter providers. A filter filter provider grouping several filter providers.
.. deprecated:: 3.4
Use :py:class:`QgsGroupedFeatureFilterProvider`
%End %End
%TypeHeaderCode %TypeHeaderCode
@ -29,23 +33,10 @@ Constructor
virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const; virtual void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const;
%Docstring
Filter the features of the layer.
:param layer: the layer to control
:param filterFeatures: the request to fill
%End
virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const; virtual QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const;
virtual QgsFeatureFilterProviderGroup *clone() const /Factory/;
virtual QgsFeatureFilterProvider *clone() const /Factory/;
%Docstring
Returns a clone of the object
:return: A clone
%End
QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider ); QgsFeatureFilterProviderGroup &addProvider( const QgsFeatureFilterProvider *provider );
%Docstring %Docstring

View File

@ -302,7 +302,16 @@ int QgsLayoutAtlas::updateFeatures()
#ifdef HAVE_SERVER_PYTHON_PLUGINS #ifdef HAVE_SERVER_PYTHON_PLUGINS
if ( mLayout->renderContext().featureFilterProvider() ) if ( mLayout->renderContext().featureFilterProvider() )
{ {
mLayout->renderContext().featureFilterProvider()->filterFeatures( mCoverageLayer.get()->id(), req ); Q_NOWARN_DEPRECATED_PUSH
if ( mLayout->renderContext().featureFilterProvider()->isFilterThreadSafe() )
{
mLayout->renderContext().featureFilterProvider()->filterFeatures( mCoverageLayer.get()->id(), req );
}
else
{
mLayout->renderContext().featureFilterProvider()->filterFeatures( mCoverageLayer.get(), req );
}
Q_NOWARN_DEPRECATED_POP
} }
#endif #endif

View File

@ -425,16 +425,16 @@ bool QgsLayoutItemAttributeTable::getTableContents( QgsLayoutTableContents &cont
#ifdef HAVE_SERVER_PYTHON_PLUGINS #ifdef HAVE_SERVER_PYTHON_PLUGINS
if ( mLayout->renderContext().featureFilterProvider() ) if ( mLayout->renderContext().featureFilterProvider() )
{ {
Q_NOWARN_DEPRECATED_PUSH
if ( mLayout->renderContext().featureFilterProvider()->isFilterThreadSafe() ) if ( mLayout->renderContext().featureFilterProvider()->isFilterThreadSafe() )
{ {
mLayout->renderContext().featureFilterProvider()->filterFeatures( layer->id(), req ); mLayout->renderContext().featureFilterProvider()->filterFeatures( layer->id(), req );
} }
else else
{ {
Q_NOWARN_DEPRECATED_PUSH
mLayout->renderContext().featureFilterProvider()->filterFeatures( layer, req ); mLayout->renderContext().featureFilterProvider()->filterFeatures( layer, req );
Q_NOWARN_DEPRECATED_POP
} }
Q_NOWARN_DEPRECATED_POP
} }
#endif #endif

View File

@ -47,11 +47,6 @@ QgsFeatureExpressionFilterProvider *QgsFeatureExpressionFilterProvider::clone()
return filter; return filter;
} }
void QgsFeatureExpressionFilterProvider::setFilter( const QgsVectorLayer *layer, const QgsExpression &filter )
{
setFilter( layer->id(), filter );
}
void QgsFeatureExpressionFilterProvider::setFilter( const QString &layerId, const QgsExpression &filter ) void QgsFeatureExpressionFilterProvider::setFilter( const QString &layerId, const QgsExpression &filter )
{ {
mFilters[layerId] = filter.dump(); mFilters[layerId] = filter.dump();

View File

@ -37,37 +37,11 @@ class CORE_EXPORT QgsFeatureExpressionFilterProvider : public QgsFeatureFilterPr
//! Constructor //! Constructor
QgsFeatureExpressionFilterProvider() = default; QgsFeatureExpressionFilterProvider() = default;
/**
* Filter the features of the layer
* \param layer the layer to control
* \param filterFeatures the request to fill
* \deprecated QGIS 4.0. Use the layer ID variant.
*/
Q_DECL_DEPRECATED void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override SIP_DEPRECATED; Q_DECL_DEPRECATED void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override SIP_DEPRECATED;
/**
* Filter the features of the layer
* \param layerId the layer ID to control
* \param filterFeatures the request to fill
*/
void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const override; void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const override;
QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override; QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override;
/**
* Returns a clone of the object
* \returns A clone
*/
QgsFeatureExpressionFilterProvider *clone() const override SIP_FACTORY; QgsFeatureExpressionFilterProvider *clone() const override SIP_FACTORY;
/**
* Set a filter for the given layer.
* \param layer the layer to filter
* \param expression the filter expression
* \deprecated QGIS 4.0. Use the layer ID variant.
*/
Q_DECL_DEPRECATED void setFilter( const QgsVectorLayer *layer, const QgsExpression &expression ) SIP_DEPRECATED;
/** /**
* Set a filter for the given layer. * Set a filter for the given layer.
* \param layerId the layer to filter * \param layerId the layer to filter

View File

@ -54,8 +54,9 @@ class CORE_EXPORT QgsFeatureFilterProvider
* Returns TRUE if the filterFeature function is thread safe, which will lead to reliance on layer ID instead * Returns TRUE if the filterFeature function is thread safe, which will lead to reliance on layer ID instead
* of the raw layer pointer. * of the raw layer pointer.
* \since QGIS 4.0 * \since QGIS 4.0
* \deprecated QGIS 4.0
*/ */
virtual bool isFilterThreadSafe() const { return true; } Q_DECL_DEPRECATED virtual bool isFilterThreadSafe() const SIP_DEPRECATED { return true; }
/** /**
* Add additional filters to the feature request to further restrict the features returned by the request. * Add additional filters to the feature request to further restrict the features returned by the request.
@ -75,6 +76,7 @@ class CORE_EXPORT QgsFeatureFilterProvider
* Derived classes must implement this method. * Derived classes must implement this method.
* \param layerId the layer ID to filter * \param layerId the layer ID to filter
* \param featureRequest the feature request to update * \param featureRequest the feature request to update
* \since QGIS 4.0
*/ */
virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &featureRequest ) const virtual void filterFeatures( const QString &layerId, QgsFeatureRequest &featureRequest ) const
{ {

View File

@ -23,10 +23,12 @@ bool QgsGroupedFeatureFilterProvider::isFilterThreadSafe() const
{ {
for ( const QgsFeatureFilterProvider *provider : mProviders ) for ( const QgsFeatureFilterProvider *provider : mProviders )
{ {
Q_NOWARN_DEPRECATED_PUSH
if ( !provider->isFilterThreadSafe() ) if ( !provider->isFilterThreadSafe() )
{ {
return false; return false;
} }
Q_NOWARN_DEPRECATED_POP
} }
return true; return true;
} }
@ -36,16 +38,16 @@ void QgsGroupedFeatureFilterProvider::filterFeatures( const QgsVectorLayer *laye
for ( const QgsFeatureFilterProvider *provider : mProviders ) for ( const QgsFeatureFilterProvider *provider : mProviders )
{ {
QgsFeatureRequest temp; QgsFeatureRequest temp;
Q_NOWARN_DEPRECATED_PUSH
if ( provider->isFilterThreadSafe() ) if ( provider->isFilterThreadSafe() )
{ {
provider->filterFeatures( layer->id(), temp ); provider->filterFeatures( layer->id(), temp );
} }
else else
{ {
Q_NOWARN_DEPRECATED_PUSH
provider->filterFeatures( layer, temp ); provider->filterFeatures( layer, temp );
Q_NOWARN_DEPRECATED_POP
} }
Q_NOWARN_DEPRECATED_POP
if ( auto *lFilterExpression = temp.filterExpression() ) if ( auto *lFilterExpression = temp.filterExpression() )
{ {
filterFeatures.combineFilterExpression( lFilterExpression->dump() ); filterFeatures.combineFilterExpression( lFilterExpression->dump() );

View File

@ -35,29 +35,11 @@ class CORE_EXPORT QgsGroupedFeatureFilterProvider : public QgsFeatureFilterProvi
//! Constructor //! Constructor
QgsGroupedFeatureFilterProvider() = default; QgsGroupedFeatureFilterProvider() = default;
bool isFilterThreadSafe() const override; Q_DECL_DEPRECATED bool isFilterThreadSafe() const override SIP_DEPRECATED;
/**
* Filter the features of the layer.
* \param layer the layer to control
* \param filterFeatures the request to fill
* \deprecated QGIS 4.0. Use the layer ID variant.
*/
Q_DECL_DEPRECATED void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override SIP_DEPRECATED; Q_DECL_DEPRECATED void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override SIP_DEPRECATED;
/**
* Filter the features of the layer.
* \param layerId the layer ID to control
* \param filterFeatures the request to fill
*/
void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const override; void filterFeatures( const QString &layerId, QgsFeatureRequest &filterFeatures ) const override;
QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override; QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override;
/**
* Returns a clone of the object
* \returns A clone
*/
QgsGroupedFeatureFilterProvider *clone() const override SIP_FACTORY; QgsGroupedFeatureFilterProvider *clone() const override SIP_FACTORY;
/** /**

View File

@ -91,16 +91,16 @@ QList<QgsLabelFeature *> QgsVectorLayerDiagramProvider::labelFeatures( QgsRender
const QgsFeatureFilterProvider *featureFilterProvider = context.featureFilterProvider(); const QgsFeatureFilterProvider *featureFilterProvider = context.featureFilterProvider();
if ( featureFilterProvider ) if ( featureFilterProvider )
{ {
Q_NOWARN_DEPRECATED_PUSH
if ( featureFilterProvider->isFilterThreadSafe() ) if ( featureFilterProvider->isFilterThreadSafe() )
{ {
featureFilterProvider->filterFeatures( layerId(), request ); featureFilterProvider->filterFeatures( layerId(), request );
} }
else else
{ {
Q_NOWARN_DEPRECATED_PUSH
featureFilterProvider->filterFeatures( qobject_cast<QgsVectorLayer *>( mLayer ), request ); featureFilterProvider->filterFeatures( qobject_cast<QgsVectorLayer *>( mLayer ), request );
Q_NOWARN_DEPRECATED_POP
} }
Q_NOWARN_DEPRECATED_POP
} }
QgsFeatureIterator fit = mSource->getFeatures( request ); QgsFeatureIterator fit = mSource->getFeatures( request );

View File

@ -369,16 +369,16 @@ bool QgsVectorLayerRenderer::renderInternal( QgsFeatureRenderer *renderer, int r
const QgsFeatureFilterProvider *featureFilterProvider = context.featureFilterProvider(); const QgsFeatureFilterProvider *featureFilterProvider = context.featureFilterProvider();
if ( featureFilterProvider ) if ( featureFilterProvider )
{ {
Q_NOWARN_DEPRECATED_PUSH
if ( featureFilterProvider->isFilterThreadSafe() ) if ( featureFilterProvider->isFilterThreadSafe() )
{ {
featureFilterProvider->filterFeatures( layerId(), featureRequest ); featureFilterProvider->filterFeatures( layerId(), featureRequest );
} }
else else
{ {
Q_NOWARN_DEPRECATED_PUSH
featureFilterProvider->filterFeatures( mLayer, featureRequest ); featureFilterProvider->filterFeatures( mLayer, featureRequest );
Q_NOWARN_DEPRECATED_POP
} }
Q_NOWARN_DEPRECATED_POP
} }
if ( !rendererFilter.isEmpty() && rendererFilter != QLatin1String( "TRUE" ) ) if ( !rendererFilter.isEmpty() && rendererFilter != QLatin1String( "TRUE" ) )
{ {

View File

@ -86,7 +86,7 @@ void QgsAccessControl::filterFeatures( const QgsVectorLayer *layer, QgsFeatureRe
} }
//! Clone the object //! Clone the object
QgsFeatureFilterProvider *QgsAccessControl::clone() const QgsAccessControl *QgsAccessControl::clone() const
{ {
return new QgsAccessControl( *this ); return new QgsAccessControl( *this );
} }

View File

@ -73,6 +73,10 @@ class SERVER_EXPORT QgsAccessControl : public QgsFeatureFilterProvider
bool isFilterThreadSafe() const override { return false; } bool isFilterThreadSafe() const override { return false; }
void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override;
QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override;
QgsAccessControl *clone() const override SIP_FACTORY;
/** /**
* Resolve features' filter of layers * Resolve features' filter of layers
* The method fetch filter's expressions returned from access control plugins and * The method fetch filter's expressions returned from access control plugins and
@ -89,19 +93,6 @@ class SERVER_EXPORT QgsAccessControl : public QgsFeatureFilterProvider
*/ */
void unresolveFilterFeatures(); void unresolveFilterFeatures();
/**
* Filter the features of the layer
* \param layer the layer to control
* \param filterFeatures the request to fill
*/
void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override;
/**
* Returns a clone of the object
* \returns A clone
*/
QgsFeatureFilterProvider *clone() const override SIP_FACTORY;
/** /**
* Returns an additional subset string (typically SQL) filter * Returns an additional subset string (typically SQL) filter
* \param layer the layer to control * \param layer the layer to control
@ -137,14 +128,6 @@ class SERVER_EXPORT QgsAccessControl : public QgsFeatureFilterProvider
*/ */
bool layerDeletePermission( const QgsVectorLayer *layer ) const; bool layerDeletePermission( const QgsVectorLayer *layer ) const;
/**
* Returns the authorized layer attributes
* \param layer the layer to control
* \param attributes the list of attribute
* \returns the list of visible attributes
*/
QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override;
/** /**
* Are we authorized to modify the following geometry * Are we authorized to modify the following geometry
* \param layer the layer to control * \param layer the layer to control

View File

@ -17,7 +17,6 @@
#include "qgsdimensionfilter.h" #include "qgsdimensionfilter.h"
#include "qgsfeaturerequest.h" #include "qgsfeaturerequest.h"
#include "qgsvectorlayer.h"
QgsDimensionFilter::QgsDimensionFilter( const QHash<const QgsVectorLayer *, QStringList> dimensionFilter ) QgsDimensionFilter::QgsDimensionFilter( const QHash<const QgsVectorLayer *, QStringList> dimensionFilter )
: mDimensionFilter( dimensionFilter ) : mDimensionFilter( dimensionFilter )

View File

@ -29,6 +29,7 @@ class QgsExpression;
* \ingroup server * \ingroup server
* \class QgsFeatureFilter * \class QgsFeatureFilter
* \brief A feature filter provider allowing to set filter expressions on a per-layer basis. * \brief A feature filter provider allowing to set filter expressions on a per-layer basis.
* \deprecated QGIS 3.4. Use QgsFeatureExpressionFilterProvider
*/ */
class SERVER_EXPORT QgsFeatureFilter : public QgsFeatureFilterProvider class SERVER_EXPORT QgsFeatureFilter : public QgsFeatureFilterProvider
{ {
@ -38,19 +39,8 @@ class SERVER_EXPORT QgsFeatureFilter : public QgsFeatureFilterProvider
bool isFilterThreadSafe() const override { return false; } bool isFilterThreadSafe() const override { return false; }
/**
* Filter the features of the layer
* \param layer the layer to control
* \param filterFeatures the request to fill
*/
void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override; void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override;
QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override; QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override;
/**
* Returns a clone of the object
* \returns A clone
*/
QgsFeatureFilterProvider *clone() const override SIP_FACTORY; QgsFeatureFilterProvider *clone() const override SIP_FACTORY;
/** /**

View File

@ -44,7 +44,7 @@ QStringList QgsFeatureFilterProviderGroup::layerAttributes( const QgsVectorLayer
return allowedAttributes; return allowedAttributes;
} }
QgsFeatureFilterProvider *QgsFeatureFilterProviderGroup::clone() const QgsFeatureFilterProviderGroup *QgsFeatureFilterProviderGroup::clone() const
{ {
auto result = new QgsFeatureFilterProviderGroup(); auto result = new QgsFeatureFilterProviderGroup();
result->mProviders = mProviders; result->mProviders = mProviders;

View File

@ -27,6 +27,7 @@
* \ingroup server * \ingroup server
* \class QgsFeatureFilterProviderGroup * \class QgsFeatureFilterProviderGroup
* \brief A filter filter provider grouping several filter providers. * \brief A filter filter provider grouping several filter providers.
* \deprecated QGIS 3.4. Use QgsGroupedFeatureFilterProvider
*/ */
class SERVER_EXPORT QgsFeatureFilterProviderGroup : public QgsFeatureFilterProvider class SERVER_EXPORT QgsFeatureFilterProviderGroup : public QgsFeatureFilterProvider
{ {
@ -36,20 +37,9 @@ class SERVER_EXPORT QgsFeatureFilterProviderGroup : public QgsFeatureFilterProvi
bool isFilterThreadSafe() const override { return false; } bool isFilterThreadSafe() const override { return false; }
/**
* Filter the features of the layer.
* \param layer the layer to control
* \param filterFeatures the request to fill
*/
void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override; void filterFeatures( const QgsVectorLayer *layer, QgsFeatureRequest &filterFeatures ) const override;
QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override; QStringList layerAttributes( const QgsVectorLayer *layer, const QStringList &attributes ) const override;
QgsFeatureFilterProviderGroup *clone() const override SIP_FACTORY;
/**
* Returns a clone of the object
* \returns A clone
*/
QgsFeatureFilterProvider *clone() const override SIP_FACTORY;
/** /**
* Add another filter provider to the group * Add another filter provider to the group