QGIS API Documentation  master-6227475
src/core/qgsfeaturerequest.h
Go to the documentation of this file.
00001 /***************************************************************************
00002     qgsfeaturerequest.h
00003     ---------------------
00004     begin                : Mai 2012
00005     copyright            : (C) 2012 by Martin Dobias
00006     email                : wonder dot sk at gmail dot com
00007  ***************************************************************************
00008  *                                                                         *
00009  *   This program is free software; you can redistribute it and/or modify  *
00010  *   it under the terms of the GNU General Public License as published by  *
00011  *   the Free Software Foundation; either version 2 of the License, or     *
00012  *   (at your option) any later version.                                   *
00013  *                                                                         *
00014  ***************************************************************************/
00015 #ifndef QGSFEATUREREQUEST_H
00016 #define QGSFEATUREREQUEST_H
00017 
00018 #include <QFlags>
00019 
00020 #include "qgsfeature.h"
00021 #include "qgsrectangle.h"
00022 
00023 #include <QList>
00024 typedef QList<int> QgsAttributeList;
00025 
00055 class CORE_EXPORT QgsFeatureRequest
00056 {
00057   public:
00058     enum Flag
00059     {
00060       NoFlags            = 0,
00061       NoGeometry         = 1,  
00062       SubsetOfAttributes = 2,  
00063       ExactIntersect     = 4   
00064     };
00065     Q_DECLARE_FLAGS( Flags, Flag )
00066 
00067     enum FilterType
00068     {
00069       FilterNone,   
00070       FilterRect,   
00071       FilterFid     
00072     };
00073 
00075     QgsFeatureRequest();
00077     explicit QgsFeatureRequest( QgsFeatureId fid );
00079     explicit QgsFeatureRequest( const QgsRectangle& rect );
00081     QgsFeatureRequest( const QgsFeatureRequest& rh );
00082 
00083     FilterType filterType() const { return mFilter; }
00084 
00087     QgsFeatureRequest& setFilterRect( const QgsRectangle& rect );
00088     const QgsRectangle& filterRect() const { return mFilterRect; }
00089 
00091     QgsFeatureRequest& setFilterFid( QgsFeatureId fid );
00092     const QgsFeatureId& filterFid() const { return mFilterFid; }
00093 
00095     QgsFeatureRequest& setFlags( Flags flags );
00096     const Flags& flags() const { return mFlags; }
00097 
00100     QgsFeatureRequest& setSubsetOfAttributes( const QgsAttributeList& attrs );
00101     const QgsAttributeList& subsetOfAttributes() const { return mAttrs; }
00102 
00104     QgsFeatureRequest& setSubsetOfAttributes( const QStringList& attrNames, const QgsFields& fields );
00105 
00106     // TODO: in future
00107     // void setFilterExpression(const QString& expression); // using QgsExpression
00108     // void setFilterNativeExpression(con QString& expr);   // using provider's SQL (if supported)
00109     // void setLimit(int limit);
00110 
00111   protected:
00112     FilterType mFilter;
00113     QgsRectangle mFilterRect;
00114     QgsFeatureId mFilterFid;
00115     Flags mFlags;
00116     QgsAttributeList mAttrs;
00117 };
00118 
00119 Q_DECLARE_OPERATORS_FOR_FLAGS( QgsFeatureRequest::Flags )
00120 
00121 
00122 #endif // QGSFEATUREREQUEST_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines