QGIS API Documentation  master-28efcda
QgsAttributeTableModel Class Reference

A model backed by a QgsVectorLayerCache which is able to provide feature/attribute information to a QAbstractItemView. More...

#include <qgsattributetablemodel.h>

+ Collaboration diagram for QgsAttributeTableModel:

List of all members.

Public Types

enum  Role { SortRole = Qt::UserRole + 1, FeatureIdRole = Qt::UserRole + 2, FieldIndexRole = Qt::UserRole + 3 }

Signals

void finished ()
void modelChanged ()
 Model has been changed.
void progress (int i, bool &cancel)

Public Member Functions

 QgsAttributeTableModel (QgsVectorLayerCache *layerCache, QObject *parent=0)
 Constructor.
virtual ~QgsAttributeTableModel ()
int columnCount (const QModelIndex &parent=QModelIndex()) const
 Returns the number of columns.
virtual QVariant data (const QModelIndex &index, int role) const
 Returns data on the given index.
void executeAction (int action, const QModelIndex &idx) const
 Execute an action.
QgsFeature feature (const QModelIndex &idx) const
 Return the feature attributes at given model index.
int fieldCol (int idx) const
 get column from field index
int fieldIdx (int col) const
 get field index from column
Qt::ItemFlags flags (const QModelIndex &index) const
 Returns item flags for the index.
QVariant headerData (int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const
 Returns header data.
QModelIndex idToIndex (QgsFeatureId id) const
QModelIndexList idToIndexList (QgsFeatureId id) const
int idToRow (QgsFeatureId id) const
 Maps feature id to table row.
QgsVectorLayerlayer () const
 Returns the layer this model uses as backend.
QgsVectorLayerCachelayerCache () const
 Returns the layer cache this model uses as backend.
virtual void loadLayer ()
 Loads the layer into the model Preferably to be called, before basing any other models on this model.
void prefetchColumnData (int column)
 Caches the entire data for one column.
void reload (const QModelIndex &index1, const QModelIndex &index2)
 Reloads the model data between indices.
bool removeRows (int row, int count, const QModelIndex &parent=QModelIndex())
 Remove rows.
void resetModel ()
 Resets the model.
virtual int rowCount (const QModelIndex &parent=QModelIndex()) const
 Returns the number of rows.
QgsFeatureId rowToId (int row) const
 Maps row to feature id.
virtual bool setData (const QModelIndex &index, const QVariant &value, int role=Qt::EditRole)
 Updates data on given index.
void swapRows (QgsFeatureId a, QgsFeatureId b)
 Swaps two rows.

Protected Slots

virtual void attributeValueChanged (QgsFeatureId fid, int idx, const QVariant &value)
 Launched when attribute value has been changed.
virtual void featureAdded (QgsFeatureId fid, bool inOperation=true)
 Launched when a feature has been added.
virtual void featureDeleted (QgsFeatureId fid)
 Launched when a feature has been deleted.
virtual void layerDeleted ()
 Launched when layer has been deleted.

Protected Member Functions

virtual void loadAttributes ()
 Gets mFieldCount, mAttributes and mValueMaps.

Protected Attributes

QgsAttributeList mAttributes
QgsFeature mFeat
int mFieldCount
QHash< QgsFeatureId, int > mIdRowMap
QgsVectorLayerCachemLayerCache
QHash< int, QgsFeatureIdmRowIdMap
QMap< int, const QMap< QString,
QVariant > * > 
mValueMaps

Private Slots

virtual void updatedFields ()
 Launched whenever the number of fields has changed.

Private Member Functions

virtual bool loadFeatureAtId (QgsFeatureId fid) const
 Load feature fid into local cache (mFeat)

Private Attributes

int mCachedField
 The currently cached column.
QgsFeatureRequest mFeatureRequest
QHash< QgsFeatureId, QVariant > mFieldCache
 Allows to cache one specific column (used for sorting)

Detailed Description

A model backed by a QgsVectorLayerCache which is able to provide feature/attribute information to a QAbstractItemView.

Is able to generate editor widgets for its QModelIndexes as well. Is mostly referred to as "master model" within this doc and the source.

See also:
Qt Model View Programming

Definition at line 42 of file qgsattributetablemodel.h.


Member Enumeration Documentation

Enumerator:
SortRole 
FeatureIdRole 
FieldIndexRole 

Definition at line 47 of file qgsattributetablemodel.h.


Constructor & Destructor Documentation

Definition at line 60 of file qgsattributetablemodel.cpp.

References mValueMaps.


Member Function Documentation

void QgsAttributeTableModel::attributeValueChanged ( QgsFeatureId  fid,
int  idx,
const QVariant &  value 
) [protected, virtual, slot]

Launched when attribute value has been changed.

Parameters:
fidfeature id
idxattribute index
valuenew value

Definition at line 168 of file qgsattributetablemodel.cpp.

References fieldCol(), QgsFeature::id(), idToRow(), mCachedField, mFeat, mFieldCache, setData(), and QgsFeature::setValid().

Referenced by QgsAttributeTableModel().

int QgsAttributeTableModel::columnCount ( const QModelIndex &  parent = QModelIndex()) const

Returns the number of columns.

Parameters:
parentparent index

Definition at line 407 of file qgsattributetablemodel.cpp.

References mFieldCount.

Referenced by featureAdded(), and idToIndexList().

void QgsAttributeTableModel::executeAction ( int  action,
const QModelIndex &  idx 
) const
QgsFeature QgsAttributeTableModel::feature ( const QModelIndex &  idx) const

Return the feature attributes at given model index.

Returns:
feature attributes at given model index

Definition at line 597 of file qgsattributetablemodel.cpp.

References data(), QgsFeature::initAttributes(), mAttributes, rowToId(), QgsFeature::setAttribute(), and QgsFeature::setFeatureId().

Referenced by executeAction().

void QgsAttributeTableModel::featureAdded ( QgsFeatureId  fid,
bool  inOperation = true 
) [protected, virtual, slot]

Launched when a feature has been added.

Parameters:
fidfeature id
inOperationguard insertion with beginInsertRows() / endInsertRows()

Definition at line 128 of file qgsattributetablemodel.cpp.

References columnCount(), mIdRowMap, mRowIdMap, prefetchColumnData(), reload(), and rowCount().

Referenced by loadLayer(), and QgsAttributeTableModel().

void QgsAttributeTableModel::featureDeleted ( QgsFeatureId  fid) [protected, virtual, slot]

Launched when a feature has been deleted.

Parameters:
fidfeature id

Definition at line 77 of file qgsattributetablemodel.cpp.

References idToRow(), and prefetchColumnData().

Referenced by QgsAttributeTableModel().

int QgsAttributeTableModel::fieldCol ( int  idx) const

get column from field index

Definition at line 396 of file qgsattributetablemodel.cpp.

References mAttributes.

Referenced by attributeValueChanged().

int QgsAttributeTableModel::fieldIdx ( int  col) const

get field index from column

Definition at line 391 of file qgsattributetablemodel.cpp.

References mAttributes.

Referenced by executeAction().

Referenced by loadLayer().

Qt::ItemFlags QgsAttributeTableModel::flags ( const QModelIndex &  index) const

Returns item flags for the index.

Parameters:
indexmodel index

Definition at line 557 of file qgsattributetablemodel.cpp.

References QgsVectorLayer::Immutable, layer(), mAttributes, and mFieldCount.

Referenced by loadAttributes().

QVariant QgsAttributeTableModel::headerData ( int  section,
Qt::Orientation  orientation,
int  role = Qt::DisplayRole 
) const

Returns header data.

Parameters:
sectionrequired section
orientationhorizontal or vertical orientation
roledata role

Definition at line 413 of file qgsattributetablemodel.cpp.

References QgsVectorLayer::attributeAlias(), layer(), mAttributes, mFieldCount, QgsField::name(), QgsVectorLayer::pendingFields(), and tr.

Definition at line 361 of file qgsattributetablemodel.cpp.

References idToRow().

Referenced by QgsFeatureListModel::fidToIdx().

QModelIndexList QgsAttributeTableModel::idToIndexList ( QgsFeatureId  id) const

Definition at line 366 of file qgsattributetablemodel.cpp.

References columnCount(), and idToRow().

Maps feature id to table row.

Parameters:
idfeature id

Definition at line 350 of file qgsattributetablemodel.cpp.

References mIdRowMap, and QgsDebugMsg.

Referenced by attributeValueChanged(), featureDeleted(), idToIndex(), idToIndexList(), and swapRows().

Returns the layer this model uses as backend.

Retrieved from the layer cache.

Definition at line 164 of file qgsattributetablemodel.h.

Referenced by data(), executeAction(), flags(), headerData(), QgsAttributeTableDelegate::layer(), loadAttributes(), prefetchColumnData(), QgsAttributeTableModel(), and setData().

Returns the layer cache this model uses as backend.

Definition at line 169 of file qgsattributetablemodel.h.

Referenced by QgsAttributeTableFilterModel::generateListOfVisibleFeatures().

void QgsAttributeTableModel::layerDeleted ( ) [protected, virtual, slot]

Launched when layer has been deleted.

Definition at line 151 of file qgsattributetablemodel.cpp.

References mValueMaps, QgsDebugMsg, removeRows(), and rowCount().

Referenced by QgsAttributeTableModel().

bool QgsAttributeTableModel::loadFeatureAtId ( QgsFeatureId  fid) const [private, virtual]

Load feature fid into local cache (mFeat)

Parameters:
fidfeature id
Returns:
feature exists

Definition at line 65 of file qgsattributetablemodel.cpp.

References QgsVectorLayerCache::featureAtId(), mFeat, MathUtils::min(), mLayerCache, and QgsDebugMsgLevel.

Referenced by data().

Model has been changed.

Referenced by updatedFields().

Caches the entire data for one column.

This should be called prior to sorting, so the data does not have to be fetched for every single comparison. Specify -1 as column to invalidate the cache

Parameters:
columnThe column index of the field to catch

Definition at line 610 of file qgsattributetablemodel.cpp.

References QgsFeature::attribute(), QgsVectorLayerCache::getFeatures(), QgsFeature::id(), layer(), mAttributes, mCachedField, mFieldCache, mLayerCache, QgsFeatureIterator::nextFeature(), QgsFeatureRequest::NoGeometry, and QgsVectorLayer::pendingFields().

Referenced by featureAdded(), featureDeleted(), and QgsAttributeTableFilterModel::sort().

void QgsAttributeTableModel::progress ( int  i,
bool &  cancel 
) [signal]
Note:
not available in python bindings

Referenced by loadLayer().

void QgsAttributeTableModel::reload ( const QModelIndex &  index1,
const QModelIndex &  index2 
)

Reloads the model data between indices.

Parameters:
index1start index
index2end index

Definition at line 574 of file qgsattributetablemodel.cpp.

References mFeat, MathUtils::min(), mLayerCache, QgsVectorLayerCache::removeCachedFeature(), rowToId(), and QgsFeature::setFeatureId().

Referenced by featureAdded().

bool QgsAttributeTableModel::removeRows ( int  row,
int  count,
const QModelIndex &  parent = QModelIndex() 
)

Remove rows.

Definition at line 88 of file qgsattributetablemodel.cpp.

References FID_TO_STRING, mIdRowMap, mRowIdMap, and QgsDebugMsgLevel.

Referenced by layerDeleted(), and loadLayer().

Resets the model.

Definition at line 586 of file qgsattributetablemodel.cpp.

int QgsAttributeTableModel::rowCount ( const QModelIndex &  parent = QModelIndex()) const [virtual]

Returns the number of rows.

Parameters:
parentparent index

Definition at line 401 of file qgsattributetablemodel.cpp.

References mRowIdMap.

Referenced by featureAdded(), QgsDualView::featureCount(), layerDeleted(), and loadLayer().

bool QgsAttributeTableModel::setData ( const QModelIndex &  index,
const QVariant &  value,
int  role = Qt::EditRole 
) [virtual]

Updates data on given index.

Parameters:
indexmodel index
valuenew data value
roledata role

Definition at line 542 of file qgsattributetablemodel.cpp.

References QgsVectorLayer::isEditable(), QgsVectorLayer::isModified(), layer(), and mFieldCount.

Referenced by attributeValueChanged().

Swaps two rows.

Parameters:
afirst row
bsecond row

Definition at line 327 of file qgsattributetablemodel.cpp.

References idToRow(), mIdRowMap, and mRowIdMap.

void QgsAttributeTableModel::updatedFields ( ) [private, virtual, slot]

Launched whenever the number of fields has changed.

Definition at line 144 of file qgsattributetablemodel.cpp.

References loadAttributes(), modelChanged(), and QgsDebugMsg.

Referenced by QgsAttributeTableModel().


Member Data Documentation

The currently cached column.

Definition at line 262 of file qgsattributetablemodel.h.

Referenced by attributeValueChanged(), data(), and prefetchColumnData().

Allows to cache one specific column (used for sorting)

Definition at line 264 of file qgsattributetablemodel.h.

Referenced by attributeValueChanged(), data(), and prefetchColumnData().

Definition at line 241 of file qgsattributetablemodel.h.

Referenced by featureAdded(), idToRow(), removeRows(), and swapRows().

Definition at line 242 of file qgsattributetablemodel.h.

Referenced by featureAdded(), removeRows(), rowCount(), rowToId(), and swapRows().

QMap< int, const QMap<QString, QVariant> * > QgsAttributeTableModel::mValueMaps [protected]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines