QGIS API Documentation  2.2.0-Valmiera
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Signals | Public Member Functions | Protected Slots | Protected Member Functions | Protected Attributes | Friends | List of all members
QgsVectorLayerEditBuffer Class Reference

#include <qgsvectorlayereditbuffer.h>

Collaboration diagram for QgsVectorLayerEditBuffer:
Collaboration graph
[legend]

Signals

void layerModified ()
 This signal is emitted when modifications has been done on layer.
void featureAdded (QgsFeatureId fid)
void featureDeleted (QgsFeatureId fid)
void geometryChanged (QgsFeatureId fid, QgsGeometry &geom)
void attributeValueChanged (QgsFeatureId fid, int idx, const QVariant &)
void attributeAdded (int idx)
void attributeDeleted (int idx)
void committedAttributesDeleted (const QString &layerId, const QgsAttributeList &deletedAttributes)
 Signals emitted after committing changes.
void committedAttributesAdded (const QString &layerId, const QList< QgsField > &addedAttributes)
void committedFeaturesAdded (const QString &layerId, const QgsFeatureList &addedFeatures)
void committedFeaturesRemoved (const QString &layerId, const QgsFeatureIds &deletedFeatureIds)
void committedAttributeValuesChanges (const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues)
void committedGeometriesChanges (const QString &layerId, const QgsGeometryMap &changedGeometries)

Public Member Functions

 QgsVectorLayerEditBuffer (QgsVectorLayer *layer)
 ~QgsVectorLayerEditBuffer ()
bool isModified () const
 Returns true if the provider has been modified since the last commit.
bool addFeature (QgsFeature &f)
 Adds a feature.
bool addFeatures (QgsFeatureList &features)
 Insert a copy of the given features into the layer (but does not commit it)
bool deleteFeature (QgsFeatureId fid)
 delete a feature from the layer (but does not commit it)
bool changeGeometry (QgsFeatureId fid, QgsGeometry *geom)
 change feature's geometry
bool changeAttributeValue (QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue=QVariant())
 changed an attribute value (but does not commit it)
bool addAttribute (const QgsField &field)
 add an attribute field (but does not commit it) returns true if the field was added
bool deleteAttribute (int attr)
 delete an attribute field (but does not commit it)
bool commitChanges (QStringList &commitErrors)
 Attempts to commit any changes to disk.
void rollBack ()
 Stop editing and discard the edits.
const QgsFeatureMapaddedFeatures ()
 New features which are not commited.
const QgsChangedAttributesMapchangedAttributeValues ()
 Changed attributes values which are not commited.
const QgsAttributeListdeletedAttributeIds ()
 deleted attributes fields which are not commited.
const QList< QgsField > & addedAttributes ()
 added attributes fields which are not commited
const QgsGeometryMapchangedGeometries ()
 Changed geometries which are not commited.
const QgsFeatureIds deletedFeatureIds ()

Protected Slots

void undoIndexChanged (int index)

Protected Member Functions

void updateFields (QgsFields &fields)
void updateFeatureGeometry (QgsFeature &f)
 Update feature with uncommited geometry updates.
void updateChangedAttributes (QgsFeature &f)
 Update feature with uncommited attribute updates.
void handleAttributeAdded (int index)
 update added and changed features after addition of an attribute
void handleAttributeDeleted (int index)
 update added and changed features after removal of an attribute
void updateAttributeMapIndex (QgsAttributeMap &attrs, int index, int offset) const
 Updates an index in an attribute map to a new value (for updates of changed attributes)
void updateLayerFields ()

Protected Attributes

QgsVectorLayerL
QgsFeatureIds mDeletedFeatureIds
 Deleted feature IDs which are not commited.
QgsFeatureMap mAddedFeatures
 New features which are not commited.
QgsChangedAttributesMap mChangedAttributeValues
 Changed attributes values which are not commited.
QgsAttributeList mDeletedAttributeIds
 deleted attributes fields which are not commited.
QList< QgsFieldmAddedAttributes
 added attributes fields which are not commited
QgsGeometryMap mChangedGeometries
 Changed geometries which are not commited.

Friends

class QgsVectorLayer
class QgsVectorLayerUndoCommand
class QgsVectorLayerUndoCommandAddFeature
class QgsVectorLayerUndoCommandDeleteFeature
class QgsVectorLayerUndoCommandChangeGeometry
class QgsVectorLayerUndoCommandChangeAttribute
class QgsVectorLayerUndoCommandAddAttribute
class QgsVectorLayerUndoCommandDeleteAttribute

Detailed Description

Definition at line 33 of file qgsvectorlayereditbuffer.h.

Constructor & Destructor Documentation

QgsVectorLayerEditBuffer::QgsVectorLayerEditBuffer ( QgsVectorLayer layer)

Definition at line 24 of file qgsvectorlayereditbuffer.cpp.

References L, undoIndexChanged(), and QgsMapLayer::undoStack().

QgsVectorLayerEditBuffer::~QgsVectorLayerEditBuffer ( )

Definition at line 30 of file qgsvectorlayereditbuffer.cpp.

Member Function Documentation

bool QgsVectorLayerEditBuffer::addAttribute ( const QgsField field)
const QList<QgsField>& QgsVectorLayerEditBuffer::addedAttributes ( )
inline

added attributes fields which are not commited

Definition at line 104 of file qgsvectorlayereditbuffer.h.

Referenced by QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator().

const QgsFeatureMap& QgsVectorLayerEditBuffer::addedFeatures ( )
inline
bool QgsVectorLayerEditBuffer::addFeature ( QgsFeature f)
bool QgsVectorLayerEditBuffer::addFeatures ( QgsFeatureList features)
void QgsVectorLayerEditBuffer::attributeAdded ( int  idx)
signal
void QgsVectorLayerEditBuffer::attributeDeleted ( int  idx)
signal
void QgsVectorLayerEditBuffer::attributeValueChanged ( QgsFeatureId  fid,
int  idx,
const QVariant &   
)
signal
bool QgsVectorLayerEditBuffer::changeAttributeValue ( QgsFeatureId  fid,
int  field,
const QVariant &  newValue,
const QVariant &  oldValue = QVariant() 
)
const QgsChangedAttributesMap& QgsVectorLayerEditBuffer::changedAttributeValues ( )
inline
const QgsGeometryMap& QgsVectorLayerEditBuffer::changedGeometries ( )
inline

Changed geometries which are not commited.

Definition at line 107 of file qgsvectorlayereditbuffer.h.

Referenced by QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator().

bool QgsVectorLayerEditBuffer::changeGeometry ( QgsFeatureId  fid,
QgsGeometry geom 
)
bool QgsVectorLayerEditBuffer::commitChanges ( QStringList &  commitErrors)

Attempts to commit any changes to disk.

Returns the result of the attempt. If a commit fails, the in-memory changes are left alone.

This allows editing to continue if the commit failed on e.g. a disallowed value in a Postgres database - the user can re-edit and try again.

The commits occur in distinct stages, (add attributes, add features, change attribute values, change geometries, delete features, delete attributes) so if a stage fails, it's difficult to roll back cleanly. Therefore any error message also includes which stage failed so that the user has some chance of repairing the damage cleanly.

Definition at line 238 of file qgsvectorlayereditbuffer.cpp.

References QgsVectorDataProvider::AddAttributes, QgsVectorDataProvider::addAttributes(), QgsVectorDataProvider::AddFeatures, QgsVectorDataProvider::addFeatures(), QgsFeature::attributes(), QgsVectorDataProvider::capabilities(), QgsVectorDataProvider::ChangeAttributeValues, QgsVectorDataProvider::changeAttributeValues(), QgsVectorDataProvider::ChangeGeometries, QgsVectorDataProvider::changeGeometryValues(), QgsVectorDataProvider::clearErrors(), committedAttributesAdded(), committedAttributesDeleted(), committedAttributeValuesChanges(), committedFeaturesAdded(), committedFeaturesRemoved(), committedGeometriesChanges(), QgsFields::count(), QgsVectorDataProvider::createSpatialIndex(), QgsVectorLayer::dataProvider(), QgsVectorDataProvider::DeleteAttributes, QgsVectorDataProvider::deleteAttributes(), QgsVectorDataProvider::DeleteFeatures, QgsVectorDataProvider::deleteFeatures(), QgsVectorDataProvider::errors(), featureAdded(), featureDeleted(), FID_TO_STRING, QgsVectorDataProvider::hasErrors(), QgsMapLayer::id(), QgsFeature::id(), L, mAddedAttributes, mAddedFeatures, mChangedAttributeValues, mChangedGeometries, mDeletedAttributeIds, mDeletedFeatureIds, QgsVectorLayer::mSelectedFeatureIds, QgsField::name(), QgsVectorLayer::pendingFields(), QgsVectorLayer::providerType(), QgsFields::size(), QgsVectorLayer::storageType(), tr, and QgsVectorLayer::updateFields().

Referenced by QgsVectorLayer::commitChanges().

void QgsVectorLayerEditBuffer::committedAttributesAdded ( const QString &  layerId,
const QList< QgsField > &  addedAttributes 
)
signal

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedAttributesDeleted ( const QString &  layerId,
const QgsAttributeList deletedAttributes 
)
signal

Signals emitted after committing changes.

Note
added in v1.6

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedAttributeValuesChanges ( const QString &  layerId,
const QgsChangedAttributesMap changedAttributesValues 
)
signal

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedFeaturesAdded ( const QString &  layerId,
const QgsFeatureList addedFeatures 
)
signal

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedFeaturesRemoved ( const QString &  layerId,
const QgsFeatureIds deletedFeatureIds 
)
signal

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedGeometriesChanges ( const QString &  layerId,
const QgsGeometryMap changedGeometries 
)
signal

Referenced by commitChanges().

bool QgsVectorLayerEditBuffer::deleteAttribute ( int  attr)
const QgsAttributeList& QgsVectorLayerEditBuffer::deletedAttributeIds ( )
inline

deleted attributes fields which are not commited.

The list is kept sorted.

Definition at line 101 of file qgsvectorlayereditbuffer.h.

Referenced by QgsVectorLayerFeatureIterator::QgsVectorLayerFeatureIterator().

const QgsFeatureIds QgsVectorLayerEditBuffer::deletedFeatureIds ( )
inline
bool QgsVectorLayerEditBuffer::deleteFeature ( QgsFeatureId  fid)
void QgsVectorLayerEditBuffer::featureAdded ( QgsFeatureId  fid)
signal
void QgsVectorLayerEditBuffer::featureDeleted ( QgsFeatureId  fid)
signal
void QgsVectorLayerEditBuffer::geometryChanged ( QgsFeatureId  fid,
QgsGeometry geom 
)
signal
void QgsVectorLayerEditBuffer::handleAttributeAdded ( int  index)
protected

update added and changed features after addition of an attribute

Definition at line 544 of file qgsvectorlayereditbuffer.cpp.

References mAddedFeatures, mChangedAttributeValues, and updateAttributeMapIndex().

Referenced by QgsVectorLayerUndoCommandAddAttribute::redo(), and QgsVectorLayerUndoCommandDeleteAttribute::undo().

void QgsVectorLayerEditBuffer::handleAttributeDeleted ( int  index)
protected

update added and changed features after removal of an attribute

Definition at line 561 of file qgsvectorlayereditbuffer.cpp.

References mAddedFeatures, mChangedAttributeValues, and updateAttributeMapIndex().

Referenced by QgsVectorLayerUndoCommandDeleteAttribute::redo(), and QgsVectorLayerUndoCommandAddAttribute::undo().

bool QgsVectorLayerEditBuffer::isModified ( ) const

Returns true if the provider has been modified since the last commit.

Definition at line 35 of file qgsvectorlayereditbuffer.cpp.

References L, and QgsMapLayer::undoStack().

Referenced by QgsVectorLayer::isModified(), and rollBack().

void QgsVectorLayerEditBuffer::layerModified ( )
signal

This signal is emitted when modifications has been done on layer.

Referenced by undoIndexChanged().

void QgsVectorLayerEditBuffer::rollBack ( )
void QgsVectorLayerEditBuffer::undoIndexChanged ( int  index)
protectedslot

Definition at line 41 of file qgsvectorlayereditbuffer.cpp.

References layerModified(), and QgsDebugMsg.

Referenced by QgsVectorLayerEditBuffer().

void QgsVectorLayerEditBuffer::updateAttributeMapIndex ( QgsAttributeMap attrs,
int  index,
int  offset 
) const
protected

Updates an index in an attribute map to a new value (for updates of changed attributes)

Definition at line 586 of file qgsvectorlayereditbuffer.cpp.

Referenced by handleAttributeAdded(), and handleAttributeDeleted().

void QgsVectorLayerEditBuffer::updateChangedAttributes ( QgsFeature f)
protected

Update feature with uncommited attribute updates.

Definition at line 71 of file qgsvectorlayereditbuffer.cpp.

References QgsFeature::attributes(), QgsFeature::id(), mAddedAttributes, mChangedAttributeValues, and mDeletedAttributeIds.

void QgsVectorLayerEditBuffer::updateFeatureGeometry ( QgsFeature f)
protected

Update feature with uncommited geometry updates.

Definition at line 64 of file qgsvectorlayereditbuffer.cpp.

References QgsFeature::id(), mChangedGeometries, and QgsFeature::setGeometry().

void QgsVectorLayerEditBuffer::updateFields ( QgsFields fields)
protected
void QgsVectorLayerEditBuffer::updateLayerFields ( )
protected

Friends And Related Function Documentation

friend class QgsVectorLayer
friend

Definition at line 160 of file qgsvectorlayereditbuffer.h.

friend class QgsVectorLayerUndoCommand
friend

Definition at line 162 of file qgsvectorlayereditbuffer.h.

Definition at line 167 of file qgsvectorlayereditbuffer.h.

Referenced by addAttribute().

Definition at line 163 of file qgsvectorlayereditbuffer.h.

Referenced by addFeature().

Definition at line 166 of file qgsvectorlayereditbuffer.h.

Referenced by changeAttributeValue().

Definition at line 165 of file qgsvectorlayereditbuffer.h.

Referenced by changeGeometry().

Definition at line 168 of file qgsvectorlayereditbuffer.h.

Referenced by deleteAttribute().

Definition at line 164 of file qgsvectorlayereditbuffer.h.

Referenced by deleteFeature().

Member Data Documentation

QgsVectorLayer* QgsVectorLayerEditBuffer::L
protected
QList<QgsField> QgsVectorLayerEditBuffer::mAddedAttributes
protected
QgsFeatureMap QgsVectorLayerEditBuffer::mAddedFeatures
protected
QgsChangedAttributesMap QgsVectorLayerEditBuffer::mChangedAttributeValues
protected
QgsGeometryMap QgsVectorLayerEditBuffer::mChangedGeometries
protected
QgsAttributeList QgsVectorLayerEditBuffer::mDeletedAttributeIds
protected
QgsFeatureIds QgsVectorLayerEditBuffer::mDeletedFeatureIds
protected

Deleted feature IDs which are not commited.

Note a feature can be added and then deleted again before the change is committed - in that case the added feature would be removed from mAddedFeatures only and not entered here.

Definition at line 174 of file qgsvectorlayereditbuffer.h.

Referenced by commitChanges(), deleteFeature(), QgsVectorLayer::extent(), QgsVectorLayer::maximumValue(), QgsVectorLayer::minimumValue(), QgsVectorLayer::pendingFeatureCount(), QgsVectorLayerUndoCommandDeleteFeature::redo(), QgsVectorLayerUndoCommandDeleteFeature::undo(), and QgsVectorLayer::uniqueValues().


The documentation for this class was generated from the following files: