15#ifndef QGSFEATUREFILTERMODELBASE_H 
   16#define QGSFEATUREFILTERMODELBASE_H 
   21#include <QAbstractItemModel> 
   36    Q_PROPERTY( 
QgsVectorLayer *sourceLayer READ sourceLayer WRITE setSourceLayer NOTIFY sourceLayerChanged )
 
   37    Q_PROPERTY( QString displayExpression READ displayExpression WRITE setDisplayExpression NOTIFY displayExpressionChanged )
 
   38    Q_PROPERTY( QString filterValue READ filterValue WRITE setFilterValue NOTIFY filterValueChanged )
 
   39    Q_PROPERTY( QString filterExpression READ filterExpression WRITE setFilterExpression NOTIFY filterExpressionChanged )
 
   40    Q_PROPERTY( 
bool allowNull READ allowNull WRITE setAllowNull NOTIFY allowNullChanged )
 
   41    Q_PROPERTY( 
bool fetchGeometry READ fetchGeometry WRITE setFetchGeometry NOTIFY fetchGeometryChanged )
 
   42    Q_PROPERTY( 
int fetchLimit READ fetchLimit WRITE setFetchLimit NOTIFY fetchLimitChanged )
 
   43    Q_PROPERTY( 
int extraIdentifierValueIndex READ extraIdentifierValueIndex NOTIFY extraIdentifierValueIndexChanged )
 
   88    QString displayExpression() 
const;
 
   96    void setDisplayExpression( 
const QString &displayExpression );
 
  103    QString filterValue() 
const;
 
  110    void setFilterValue( 
const QString &filterValue );
 
  112    QModelIndex index( 
int row, 
int column, 
const QModelIndex &parent ) 
const override;
 
  113    QModelIndex parent( 
const QModelIndex &child ) 
const override;
 
  114    int rowCount( 
const QModelIndex &parent ) 
const override;
 
  120    QVariant data( 
const QModelIndex &index, 
int role ) 
const override;
 
  126    QString filterExpression() 
const;
 
  132    void setFilterExpression( 
const QString &filterExpression );
 
  144    void setFormFeature( 
const QgsFeature &feature );
 
  156    void setParentFormFeature( 
const QgsFeature &feature );
 
  161    bool isLoading() 
const;
 
  172    int extraIdentifierValueIndex() 
const;
 
  177    bool extraValueDoesNotExist() 
const;
 
  182    bool allowNull() 
const;
 
  187    void setAllowNull( 
bool allowNull );
 
  192    bool fetchGeometry() 
const;
 
  197    void setFetchGeometry( 
bool fetchGeometry );
 
  202    int fetchLimit() 
const;
 
  208    void setFetchLimit( 
int fetchLimit );
 
  311    void updateCompleter();
 
  312    void scheduledReload();
 
  320    QVariant extraIdentifierValue() 
const;
 
  326    void setExtraIdentifierValue( 
const QVariant &extraIdentifierValue );
 
  332    void setExtraIdentifierValueUnguarded( 
const QVariant &identifierValue );
 
  346    virtual QgsFeatureExpressionValuesGatherer::Entry 
createEntry( 
const QVariant &identifier ) 
const = 0;
 
  349    virtual QVariant 
entryIdentifier( 
const QgsFeatureExpressionValuesGatherer::Entry &entry ) 
const = 0;
 
  352    virtual bool compareEntries( 
const QgsFeatureExpressionValuesGatherer::Entry &a, 
const QgsFeatureExpressionValuesGatherer::Entry &b ) 
const = 0;
 
  363    QVector<QgsFeatureExpressionValuesGatherer::Entry> 
mEntries;
 
  370    int mExtraValueIndex = -1;
 
  373    void setExtraIdentifierValueIndex( 
int index, 
bool force = 
false );
 
  374    void setExtraValueDoesNotExist( 
bool extraValueDoesNotExist );
 
  376    void reloadCurrentFeature();
 
  377    QSet<QString> requestedAttributesForStyle() 
const;
 
  383    QString mFilterValue;
 
  384    QString mFilterExpression;
 
  390    mutable QMap< QgsFeatureId, QgsConditionalStyle > mEntryStylesMap;
 
  392    QgsFeatureExpressionValuesGatherer *mGatherer = 
nullptr;
 
  393    bool mFetchGeometry = 
true;
 
  394    int mFetchLimit = 100;
 
  397    bool mShouldReloadCurrentFeature = 
false;
 
  398    bool mKeepCurrentEntry = 
false; 
 
  399    bool mExtraValueDoesNotExist = 
false;
 
  400    bool mAllowNull = 
false;
 
  401    bool mIsSettingExtraIdentifierValue = 
false;
 
  403    friend class TestQgsFeatureListComboBox;
 
 
Conditional styling for a rule.
 
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
 
Handles parsing and evaluation of expressions (formerly called "search strings").
 
Provides a list of features based on filter conditions.
 
void extraIdentifierValueIndexChanged(int index)
The index at which the extra identifier value is available within the model.
 
void beginUpdate()
Notification that the model is about to be changed because a job was completed.
 
virtual QVariant entryIdentifier(const QgsFeatureExpressionValuesGatherer::Entry &entry) const =0
Returns the identifier of the given entry.
 
void filterValueChanged()
This value will be used to filter the features available from this model.
 
virtual void setExtraIdentifierValueToNull()=0
Allows specifying one value that does not need to match the filter criteria but will still be availab...
 
virtual void requestToReloadCurrentFeature(QgsFeatureRequest &request)=0
Update the request to match the current feature to be reloaded.
 
void parentFormFeatureChanged()
A parent attribute form feature to be used alongside the filter expression.
 
void filterExpressionChanged()
An additional filter expression to apply, next to the filterValue.
 
int columnCount(const QModelIndex &parent) const override
 
void extraValueDoesNotExistChanged(bool found)
Notification whether the model has found a feature tied to the extraIdentifierValue or not.
 
virtual QgsFeatureExpressionValuesGatherer * createValuesGatherer(const QgsFeatureRequest &request) const =0
Creates the value gatherer.
 
void extraIdentifierValueChanged()
Allows specifying one value that does not need to match the filter criteria but will still be availab...
 
virtual QSet< QString > requestedAttributes() const
Returns the attributes to be fetched in the request.
 
CustomRole
Extra roles that can be used to fetch data from this model.
 
void filterJobCompleted()
Indicates that a filter job has been completed and new data may be available.
 
QVariant mExtraIdentifierValue
The current identifier value.
 
virtual QgsFeatureExpressionValuesGatherer::Entry createEntry(const QVariant &identifier) const =0
Creates an entry with just the identifier so the feature can be retrieved in a next iteration.
 
virtual bool identifierIsNull(const QVariant &identifier) const =0
Returns true if the entry is null The identifier can be either the feature ID or the list of identifi...
 
void fetchLimitChanged()
Emitted when the fetching limit for the feature request changes.
 
void sourceLayerChanged()
The source layer from which features will be fetched.
 
void allowNullChanged()
Add a NULL entry to the list.
 
virtual bool compareEntries(const QgsFeatureExpressionValuesGatherer::Entry &a, const QgsFeatureExpressionValuesGatherer::Entry &b) const =0
Returns true if the 2 entries refers to the same feature.
 
void currentFeatureChanged()
Emitted when the current feature in the model has changed This emitted both when the extra value chan...
 
void fetchGeometryChanged()
Emitted when the fetching of the geometry changes.
 
void isLoadingChanged()
Indicator if the model is currently performing any feature iteration in the background.
 
void formFeatureChanged()
An attribute form feature to be used alongside the filter expression.
 
QVector< QgsFeatureExpressionValuesGatherer::Entry > mEntries
 
virtual QVariant nullIdentifier() const =0
Returns a null identifier.
 
void endUpdate()
Notification that the model change is finished.
 
void displayExpressionChanged()
The display expression will be used for.
 
Wraps a request for features to a vector layer (or directly its vector data provider).
 
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
 
Represents a vector layer which manages a vector based dataset.
 
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS, FORMERNAME)
 
#define SIP_MONKEYPATCH_COMPAT_NAME(FORMERNAME)