QGIS API Documentation 3.99.0-Master (21b3aa880ba)
Loading...
Searching...
No Matches
qgsvectorlayereditpassthrough.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectorlayereditpassthrough.cpp
3 ---------------------
4 begin : Jan 12 2015
5 copyright : (C) 2015 by Sandro Mani
6 email : manisandro at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17
18#include "qgstransaction.h"
20#include "qgsvectorlayer.h"
22
23#include "moc_qgsvectorlayereditpassthrough.cpp"
24
29
31{
32 return mModified;
33}
34
35bool QgsVectorLayerEditPassthrough::modify( QgsVectorLayerUndoPassthroughCommand *cmd )
36{
37 L->undoStack()->push( cmd ); // push takes ownership -> no need for cmd to be a smart ptr
38 if ( cmd->hasError() )
39 return false;
40
41 if ( !mModified )
42 {
43 mModified = true;
44 emit layerModified();
45 }
46
47 return true;
48}
49
51{
53 if ( !modify( cmd ) ) // modify takes owneship -> no need for cmd to be a smart ptr
54 return false;
55
56 const QgsFeatureList features = cmd->features();
57 f = features.at( features.count() - 1 );
58 return true;
59}
60
62{
64 if ( !modify( cmd ) ) // modify takes owneship -> no need for cmd to be a smart ptr
65 return false;
66
67 features = cmd->features();
68 return true;
69}
70
75
80
82{
83 return modify( new QgsVectorLayerUndoPassthroughCommandChangeGeometry( this, fid, geom ) );
84}
85
86bool QgsVectorLayerEditPassthrough::changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &/*oldValue*/ )
87{
88 return modify( new QgsVectorLayerUndoPassthroughCommandChangeAttribute( this, fid, field, newValue ) );
89}
90
92{
93 return modify( new QgsVectorLayerUndoPassthroughCommandChangeAttributes( this, fid, newValues, oldValues ) );
94}
95
97{
98 return modify( new QgsVectorLayerUndoPassthroughCommandAddAttribute( this, field ) );
99}
100
102{
103 return modify( new QgsVectorLayerUndoPassthroughCommandDeleteAttribute( this, attr ) );
104}
105
106bool QgsVectorLayerEditPassthrough::renameAttribute( int attr, const QString &newName )
107{
108 return modify( new QgsVectorLayerUndoPassthroughCommandRenameAttribute( this, attr, newName ) );
109}
110
111bool QgsVectorLayerEditPassthrough::commitChanges( QStringList & /*commitErrors*/ )
112{
113 mModified = false;
114 return true;
115}
116
118{
119 mModified = false;
120}
121
122bool QgsVectorLayerEditPassthrough::update( QgsTransaction *tr, const QString &sql, const QString &name )
123{
124 return modify( new QgsVectorLayerUndoPassthroughCommandUpdate( this, tr, sql, name ) );
125}
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:58
Encapsulate a field in an attribute table or data source.
Definition qgsfield.h:54
A geometry is the spatial representation of a feature.
QUndoStack * undoStack()
Returns pointer to layer's undo stack.
Allows creation of a multi-layer database-side transaction.
friend class QgsVectorLayerUndoPassthroughCommandChangeGeometry
friend class QgsVectorLayerUndoPassthroughCommandDeleteFeatures
friend class QgsVectorLayerUndoPassthroughCommandUpdate
friend class QgsVectorLayerUndoPassthroughCommandAddAttribute
friend class QgsVectorLayerUndoPassthroughCommandRenameAttribute
friend class QgsVectorLayerUndoPassthroughCommandChangeAttributes
friend class QgsVectorLayerUndoPassthroughCommandChangeAttribute
friend class QgsVectorLayerUndoPassthroughCommandDeleteAttribute
void layerModified()
Emitted when modifications has been done on layer.
friend class QgsVectorLayerUndoPassthroughCommandAddFeatures
bool addFeature(QgsFeature &f) override
Adds a feature.
bool renameAttribute(int attr, const QString &newName) override
Renames an attribute field (but does not commit it).
void rollBack() override
Stop editing and discard the edits.
bool changeAttributeValue(QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue=QVariant()) override
Changed an attribute value (but does not commit it).
bool addFeatures(QgsFeatureList &features) override
Insert a copy of the given features into the layer (but does not commit it).
bool commitChanges(QStringList &commitErrors) override
Attempts to commit any changes to disk.
bool deleteFeatures(const QgsFeatureIds &fids) override
Deletes a set of features from the layer (but does not commit it).
bool deleteAttribute(int attr) override
Deletes an attribute field (but does not commit it).
bool changeAttributeValues(QgsFeatureId fid, const QgsAttributeMap &newValues, const QgsAttributeMap &oldValues) override
Changes values of attributes (but does not commit it).
bool isModified() const override
Returns true if the provider has been modified since the last commit.
bool deleteFeature(QgsFeatureId fid) override
Delete a feature from the layer (but does not commit it).
bool changeGeometry(QgsFeatureId fid, const QgsGeometry &geom) override
Change feature's geometry.
bool update(QgsTransaction *transaction, const QString &sql, const QString &name)
Update underlying data with a SQL query embedded in a transaction.
bool addAttribute(const QgsField &field) override
Adds an attribute field (but does not commit it) returns true if the field was added.
QgsFeatureList features() const
List of features (added feaures can be modified by default values from database).
Undo command for vector layer in a transaction group mode.
Represents a vector layer which manages a vector based dataset.
QMap< int, QVariant > QgsAttributeMap
QList< QgsFeature > QgsFeatureList
QSet< QgsFeatureId > QgsFeatureIds
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features