16 #include <QItemSelectionModel> 31 : QSortFilterProxyModel( parent )
33 , mFilterMode( ShowAll )
34 , mSelectedOnTop( false )
37 setDynamicSortFilter(
true );
39 connect(
layer(), SIGNAL( selectionChanged() ), SLOT( selectionChanged() ) );
49 if ( leftSelected && !rightSelected )
51 return sortOrder() == Qt::AscendingOrder;
53 else if ( rightSelected && !leftSelected )
55 return sortOrder() == Qt::DescendingOrder;
63 if ( leftData.isNull() )
66 if ( rightData.isNull() )
69 switch ( leftData.type() )
73 case QVariant::LongLong:
74 case QVariant::ULongLong:
75 return leftData.toLongLong() < rightData.toLongLong();
77 case QVariant::Double:
78 return leftData.toDouble() < rightData.toDouble();
81 return leftData.toDate() < rightData.toDate();
83 case QVariant::DateTime:
84 return leftData.toDateTime() < rightData.toDateTime();
87 return leftData.toString().localeAwareCompare( rightData.toString() ) < 0;
102 if ( mSelectedOnTop != selectedOnTop )
106 if ( sortColumn() == -1 )
116 mTableModel = sourceModel;
118 QSortFilterProxyModel::setSourceModel( sourceModel );
123 return mSelectedOnTop;
128 mFilteredFeatures = ids;
136 for (
int i = 0; i < rowCount(); ++i )
138 QModelIndex row =
index( i, 0 );
146 if ( filterMode != mFilterMode )
170 Q_UNUSED( sourceParent );
171 switch ( mFilterMode )
190 const QList<QgsFeatureId> addedFeatures = editBuffer->
addedFeatures().keys();
192 const QList<QgsFeatureId> changedGeometries = editBuffer->
changedGeometries().keys();
194 return addedFeatures.contains( fid ) || changedFeatures.contains( fid ) || changedGeometries.contains( fid );
212 void QgsAttributeTableFilterModel::selectionChanged()
219 else if ( mSelectedOnTop )
221 sort( sortColumn(), sortOrder() );
236 mFilteredFeatures.clear();
245 if (
layer()->hasScaleBasedVisibility() &&
286 mFilteredFeatures << f.
id();
289 if ( t.elapsed() > 5000 )
292 emit progress( i, cancel );
321 QModelIndexList indexes;
322 foreach ( QModelIndex idx,
masterModel()->idToIndexList( fid ) )
333 return mapToSource( proxyIndex );
339 return mapFromSource( sourceIndex );
QgsFeatureId id() const
Get the feature id for this feature.
void generateListOfVisibleFeatures()
Updates the list of currently visible features on the map canvas.
const QgsGeometryMap & changedGeometries()
Changed geometries which are not commited.
QgsFeatureId rowToId(const QModelIndex &row)
Returns the feature id for a given model index.
Wrapper for iterator of features from vector data provider or vector layer.
QgsFeatureRendererV2 * rendererV2()
Return renderer V2.
virtual bool willRenderFeature(QgsFeature &feat)
return whether the renderer will render a feature or not.
A rectangle specified with double values.
bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override
Returns true if the source row will be accepted.
bool selectedOnTop()
Returns if selected features are currently shown on top.
double scale() const
Return the calculated scale of the map.
void setSelectedOnTop(bool selectedOnTop)
Changes the sort order of the features.
void setFilterMode(FilterMode filterMode)
Set the filter mode the filter will use.
const QgsRectangle & filterRect() const
QSet< QgsFeatureId > QgsFeatureIds
void setRendererScale(double scale)
bool lessThan(const QModelIndex &left, const QModelIndex &right) const override
Used by the sorting algorithm.
const QgsChangedAttributesMap & changedAttributeValues()
Changed attributes values which are not commited.
QgsRectangle visibleExtent() const
Return the actual extent derived from requested extent that takes takes output image size into accoun...
const QgsMapSettings & mapSettings() const
Get access to properties used for map rendering.
const QgsMapToPixel & mapToPixel() const
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
A model backed by a QgsVectorLayerCache which is able to provide feature/attribute information to a Q...
QgsPoint mapToLayerCoordinates(QgsMapLayer *theLayer, QgsPoint point) const
transform point coordinates from output CRS to layer's CRS
void setExtent(const QgsRectangle &extent)
Map canvas is a class for displaying all GIS data types on a canvas.
virtual void startRender(QgsRenderContext &context, const QgsFields &fields)=0
The QgsMapSettings class contains configuration for rendering of the map.
virtual void stopRender(QgsRenderContext &context)=0
QgsVectorLayer * layer() const
Returns the layer this filter acts on.
QgsVectorLayerEditBuffer * editBuffer()
Buffer with uncommitted editing operations. Only valid after editing has been turned on...
QgsAttributeTableFilterModel(QgsMapCanvas *canvas, QgsAttributeTableModel *sourceModel, QObject *parent=0)
Make sure, the master model is already loaded, so the selection will get synchronized.
const QgsFeatureIds & selectedFeaturesIds() const
Return reference to identifiers of selected features.
virtual QModelIndex mapToMaster(const QModelIndex &proxyIndex) const
float maximumScale() const
Returns the maximum scale denominator at which the layer is visible.
This class wraps a request for features to a vector layer (or directly its vector data provider)...
Filter using a rectangle, no need to set NoGeometry.
FilterType filterType() const
QgsVectorLayerCache * layerCache() const
Returns the layer cache this model uses as backend.
void setSourceModel(QgsAttributeTableModel *sourceModel)
void extentsChanged()
Is called upon every change of the visible extents on the map canvas.
void sort(double *heap, int *x, int *y, int N)
const QgsFeatureMap & addedFeatures()
New features which are not commited.
Contains information about the context of a rendering operation.
QgsAttributeTableModel * masterModel() const
Returns the table model this filter is using.
virtual QModelIndex mapFromMaster(const QModelIndex &sourceIndex) const
virtual void sort(int column, Qt::SortOrder order=Qt::AscendingOrder) override
Sort by the given column using the given order.
QgsRectangle intersect(const QgsRectangle *rect) const
return the intersection with the given rectangle
void setMapToPixel(const QgsMapToPixel &mtp)
QgsFeatureIds filteredFeatures()
QgsRectangle extent() const
Returns the current zoom exent of the map canvas.
QgsFeatureId rowToId(int row) const
Maps row to feature id.
virtual int capabilities()
returns bitwise OR-ed capabilities of the renderer
bool nextFeature(QgsFeature &f)
QgsFeatureIterator getFeatures(const QgsFeatureRequest &featureRequest=QgsFeatureRequest())
Query this VectorLayerCache for features.
QModelIndexList fidToIndexList(QgsFeatureId fid)
virtual void setFilteredFeatures(QgsFeatureIds ids)
Specify a list of features, which the filter will accept.
void prefetchColumnData(int column)
Caches the entire data for one column.
QgsFeatureRequest & setFilterRect(const QgsRectangle &rect)
Set rectangle from which features will be taken.
QModelIndex fidToIndex(QgsFeatureId fid) override