From ff0a434852ee9a1ea11c4d714b80639404a8b988 Mon Sep 17 00:00:00 2001 From: Martin Dobias Date: Tue, 19 Mar 2013 22:32:36 +0100 Subject: [PATCH] Added convenience constructors for QgsFeatureRequest --- python/core/qgsfeaturerequest.sip | 4 +++ src/core/qgsfeaturerequest.cpp | 42 +++++++++++++++++++++++++++++++ src/core/qgsfeaturerequest.h | 12 ++++++--- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/python/core/qgsfeaturerequest.sip b/python/core/qgsfeaturerequest.sip index 9837491101ee..65cab6a76811 100644 --- a/python/core/qgsfeaturerequest.sip +++ b/python/core/qgsfeaturerequest.sip @@ -23,6 +23,10 @@ class QgsFeatureRequest //! construct a default request: for all features get attributes and geometries QgsFeatureRequest(); + //! construct a request with feature ID filter + explicit QgsFeatureRequest( QgsFeatureId fid ); + //! construct a request with rectangle filter + explicit QgsFeatureRequest( const QgsRectangle& rect ); FilterType filterType() const; diff --git a/src/core/qgsfeaturerequest.cpp b/src/core/qgsfeaturerequest.cpp index 9d8bb3fe0f14..c2104ff9a17e 100644 --- a/src/core/qgsfeaturerequest.cpp +++ b/src/core/qgsfeaturerequest.cpp @@ -24,6 +24,48 @@ QgsFeatureRequest::QgsFeatureRequest() { } +QgsFeatureRequest::QgsFeatureRequest( QgsFeatureId fid ) + : mFilter( FilterFid ) + , mFilterFid( fid ) + , mFlags( 0 ) +{ +} + +QgsFeatureRequest::QgsFeatureRequest( const QgsRectangle& rect ) + : mFilter( FilterRect ) + , mFilterRect( rect ) + , mFlags( 0 ) +{ +} + + +QgsFeatureRequest& QgsFeatureRequest::setFilterRect( const QgsRectangle& rect ) +{ + mFilter = FilterRect; + mFilterRect = rect; + return *this; +} + +QgsFeatureRequest& QgsFeatureRequest::setFilterFid( QgsFeatureId fid ) +{ + mFilter = FilterFid; + mFilterFid = fid; + return *this; +} + +QgsFeatureRequest& QgsFeatureRequest::setFlags( QgsFeatureRequest::Flags flags ) +{ + mFlags = flags; + return *this; +} + +QgsFeatureRequest& QgsFeatureRequest::setSubsetOfAttributes( const QgsAttributeList& attrs ) +{ + mFlags |= SubsetOfAttributes; + mAttrs = attrs; + return *this; +} + QgsFeatureRequest& QgsFeatureRequest::setSubsetOfAttributes( const QStringList& attrNames, const QgsFields& fields ) { diff --git a/src/core/qgsfeaturerequest.h b/src/core/qgsfeaturerequest.h index 0516b8ddde2a..a791495b1607 100644 --- a/src/core/qgsfeaturerequest.h +++ b/src/core/qgsfeaturerequest.h @@ -73,25 +73,29 @@ class CORE_EXPORT QgsFeatureRequest //! construct a default request: for all features get attributes and geometries QgsFeatureRequest(); + //! construct a request with feature ID filter + explicit QgsFeatureRequest( QgsFeatureId fid ); + //! construct a request with rectangle filter + explicit QgsFeatureRequest( const QgsRectangle& rect ); FilterType filterType() const { return mFilter; } //! Set rectangle from which features will be taken. Empty rectangle removes the filter. //! - QgsFeatureRequest& setFilterRect( const QgsRectangle& rect ) { mFilter = FilterRect; mFilterRect = rect; return *this; } + QgsFeatureRequest& setFilterRect( const QgsRectangle& rect ); const QgsRectangle& filterRect() const { return mFilterRect; } //! Set feature ID that should be fetched. - QgsFeatureRequest& setFilterFid( QgsFeatureId fid ) { mFilter = FilterFid; mFilterFid = fid; return *this; } + QgsFeatureRequest& setFilterFid( QgsFeatureId fid ); const QgsFeatureId& filterFid() const { return mFilterFid; } //! Set flags that affect how features will be fetched - QgsFeatureRequest& setFlags( Flags flags ) { mFlags = flags; return *this; } + QgsFeatureRequest& setFlags( Flags flags ); const Flags& flags() const { return mFlags; } //! Set a subset of attributes that will be fetched. Empty list means that all attributes are used. //! To disable fetching attributes, reset the FetchAttributes flag (which is set by default) - QgsFeatureRequest& setSubsetOfAttributes( const QgsAttributeList& attrs ) { mFlags |= SubsetOfAttributes; mAttrs = attrs; return *this; } + QgsFeatureRequest& setSubsetOfAttributes( const QgsAttributeList& attrs ); const QgsAttributeList& subsetOfAttributes() const { return mAttrs; } //! Set a subset of attributes by names that will be fetched