Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgstrackedvectorlayertools.cpp - QgsTrackedVectorLayerTools 3 : : 4 : : --------------------- 5 : : begin : 16.5.2016 6 : : copyright : (C) 2016 by Matthias Kuhn, OPENGIS.ch 7 : : email : matthias@opengis.ch 8 : : *************************************************************************** 9 : : * * 10 : : * This program is free software; you can redistribute it and/or modify * 11 : : * it under the terms of the GNU General Public License as published by * 12 : : * the Free Software Foundation; either version 2 of the License, or * 13 : : * (at your option) any later version. * 14 : : * * 15 : : ***************************************************************************/ 16 : : #include "qgstrackedvectorlayertools.h" 17 : : #include "qgsvectorlayer.h" 18 : : 19 : : 20 : 0 : bool QgsTrackedVectorLayerTools::addFeature( QgsVectorLayer *layer, const QgsAttributeMap &defaultValues, const QgsGeometry &defaultGeometry, QgsFeature *feature ) const 21 : : { 22 : 0 : QgsFeature *f = feature; 23 : 0 : if ( !feature ) 24 : 0 : f = new QgsFeature(); 25 : : 26 : 0 : const_cast<QgsVectorLayerTools *>( mBackend )->setForceSuppressFormPopup( forceSuppressFormPopup() ); 27 : : 28 : 0 : if ( mBackend->addFeature( layer, defaultValues, defaultGeometry, f ) ) 29 : : { 30 : 0 : mAddedFeatures[layer].insert( f->id() ); 31 : 0 : if ( !feature ) 32 : 0 : delete f; 33 : 0 : return true; 34 : : } 35 : : else 36 : : { 37 : 0 : if ( !feature ) 38 : 0 : delete f; 39 : 0 : return false; 40 : : } 41 : 0 : } 42 : : 43 : 0 : bool QgsTrackedVectorLayerTools::startEditing( QgsVectorLayer *layer ) const 44 : : { 45 : 0 : return mBackend->startEditing( layer ); 46 : : } 47 : : 48 : 0 : bool QgsTrackedVectorLayerTools::stopEditing( QgsVectorLayer *layer, bool allowCancel ) const 49 : : { 50 : 0 : return mBackend->stopEditing( layer, allowCancel ); 51 : : } 52 : : 53 : 0 : bool QgsTrackedVectorLayerTools::saveEdits( QgsVectorLayer *layer ) const 54 : : { 55 : 0 : return mBackend->saveEdits( layer ); 56 : : } 57 : : 58 : 0 : bool QgsTrackedVectorLayerTools::copyMoveFeatures( QgsVectorLayer *layer, QgsFeatureRequest &request, double dx, double dy, QString *errorMsg, const bool topologicalEditing, QgsVectorLayer *topologicalLayer ) const 59 : : { 60 : 0 : return mBackend->copyMoveFeatures( layer, request, dx, dy, errorMsg, topologicalEditing, topologicalLayer ); 61 : : } 62 : : 63 : 0 : void QgsTrackedVectorLayerTools::setVectorLayerTools( const QgsVectorLayerTools *tools ) 64 : : { 65 : 0 : mBackend = tools; 66 : 0 : } 67 : : 68 : 0 : void QgsTrackedVectorLayerTools::rollback() 69 : : { 70 : 0 : QMapIterator<QgsVectorLayer *, QgsFeatureIds> it( mAddedFeatures ); 71 : 0 : while ( it.hasNext() ) 72 : : { 73 : 0 : it.next(); 74 : 0 : it.key()->deleteFeatures( it.value() ); 75 : : } 76 : : 77 : 0 : mAddedFeatures.clear(); 78 : 0 : }