LCOV - code coverage report
Current view: top level - core/vector - qgsvectorlayerundocommand.h (source / functions) Hit Total Coverage
Test: coverage.info.cleaned Lines: 7 15 46.7 %
Date: 2021-03-26 12:19:53 Functions: 0 0 -
Branches: 0 0 -

           Branch data     Line data    Source code
       1                 :            : /***************************************************************************
       2                 :            :     qgsvectorlayerundocommand.h
       3                 :            :     ---------------------
       4                 :            :     begin                : June 2009
       5                 :            :     copyright            : (C) 2009 by Martin Dobias
       6                 :            :     email                : wonder dot sk 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                 :            : 
      16                 :            : #ifndef QGSVECTORLAYERUNDOCOMMAND_H
      17                 :            : #define QGSVECTORLAYERUNDOCOMMAND_H
      18                 :            : 
      19                 :            : #include "qgis_core.h"
      20                 :            : #include "qgis_sip.h"
      21                 :            : #include <QUndoCommand>
      22                 :            : 
      23                 :            : #include <QVariant>
      24                 :            : #include <QSet>
      25                 :            : #include <QList>
      26                 :            : 
      27                 :            : #include "qgsfields.h"
      28                 :            : #include "qgsfeature.h"
      29                 :            : 
      30                 :            : class QgsGeometry;
      31                 :            : 
      32                 :            : #include "qgsvectorlayereditbuffer.h"
      33                 :            : 
      34                 :            : /**
      35                 :            :  * \ingroup core
      36                 :            :  * \class QgsVectorLayerUndoCommand
      37                 :            :  * \brief Base class for undo commands within a QgsVectorLayerEditBuffer.
      38                 :            :  */
      39                 :            : 
      40                 :          2 : class CORE_EXPORT QgsVectorLayerUndoCommand : public QUndoCommand
      41                 :            : {
      42                 :            :   public:
      43                 :            : 
      44                 :            :     /**
      45                 :            :      * Constructor for QgsVectorLayerUndoCommand
      46                 :            :      * \param buffer associated edit buffer
      47                 :            :      */
      48                 :          2 :     QgsVectorLayerUndoCommand( QgsVectorLayerEditBuffer *buffer SIP_TRANSFER )
      49                 :          2 :       : mBuffer( buffer )
      50                 :          6 :     {}
      51                 :            : 
      52                 :            :     //! Returns the layer associated with the undo command
      53                 :          0 :     inline QgsVectorLayer *layer() { return mBuffer->L; }
      54                 :            : 
      55                 :          1 :     int id() const override { return -1; }
      56                 :          0 :     bool mergeWith( const QUndoCommand * ) override { return false; }
      57                 :            : 
      58                 :            :   protected:
      59                 :            :     //! Associated edit buffer
      60                 :            :     QgsVectorLayerEditBuffer *mBuffer = nullptr;
      61                 :            : };
      62                 :            : 
      63                 :            : 
      64                 :            : /**
      65                 :            :  * \ingroup core
      66                 :            :  * \class QgsVectorLayerUndoCommandAddFeature
      67                 :            :  * \brief Undo command for adding a feature to a vector layer.
      68                 :            :  */
      69                 :            : 
      70                 :          2 : class CORE_EXPORT QgsVectorLayerUndoCommandAddFeature : public QgsVectorLayerUndoCommand
      71                 :            : {
      72                 :            :   public:
      73                 :            : 
      74                 :            :     /**
      75                 :            :      * Constructor for QgsVectorLayerUndoCommandAddFeature
      76                 :            :      * \param buffer associated edit buffer
      77                 :            :      * \param f feature to add to layer
      78                 :            :      */
      79                 :            :     QgsVectorLayerUndoCommandAddFeature( QgsVectorLayerEditBuffer *buffer SIP_TRANSFER, QgsFeature &f );
      80                 :            : 
      81                 :            :     void undo() override;
      82                 :            :     void redo() override;
      83                 :            : 
      84                 :            :   private:
      85                 :            :     QgsFeature mFeature;
      86                 :            : };
      87                 :            : 
      88                 :            : 
      89                 :            : /**
      90                 :            :  * \ingroup core
      91                 :            :  * \class QgsVectorLayerUndoCommandDeleteFeature
      92                 :            :  * \brief Undo command for deleting a feature from a vector layer.
      93                 :            :  */
      94                 :            : 
      95                 :          0 : class CORE_EXPORT QgsVectorLayerUndoCommandDeleteFeature : public QgsVectorLayerUndoCommand
      96                 :            : {
      97                 :            :   public:
      98                 :            : 
      99                 :            :     /**
     100                 :            :      * Constructor for QgsVectorLayerUndoCommandDeleteFeature
     101                 :            :      * \param buffer associated edit buffer
     102                 :            :      * \param fid feature ID of feature to delete from layer
     103                 :            :      */
     104                 :            :     QgsVectorLayerUndoCommandDeleteFeature( QgsVectorLayerEditBuffer *buffer SIP_TRANSFER, QgsFeatureId fid );
     105                 :            : 
     106                 :            :     void undo() override;
     107                 :            :     void redo() override;
     108                 :            : 
     109                 :            :   private:
     110                 :            :     QgsFeatureId mFid;
     111                 :            :     QgsFeature mOldAddedFeature;
     112                 :            : };
     113                 :            : 
     114                 :            : /**
     115                 :            :  * \ingroup core
     116                 :            :  * \class QgsVectorLayerUndoCommandChangeGeometry
     117                 :            :  * \brief Undo command for modifying the geometry of a feature from a vector layer.
     118                 :            :  */
     119                 :            : 
     120                 :          2 : class CORE_EXPORT QgsVectorLayerUndoCommandChangeGeometry : public QgsVectorLayerUndoCommand
     121                 :            : {
     122                 :            :   public:
     123                 :            : 
     124                 :            :     /**
     125                 :            :      * Constructor for QgsVectorLayerUndoCommandChangeGeometry
     126                 :            :      * \param buffer associated edit buffer
     127                 :            :      * \param fid feature ID of feature to modify geometry of
     128                 :            :      * \param newGeom new geometry for feature
     129                 :            :      */
     130                 :            :     QgsVectorLayerUndoCommandChangeGeometry( QgsVectorLayerEditBuffer *buffer SIP_TRANSFER, QgsFeatureId fid, const QgsGeometry &newGeom );
     131                 :            : 
     132                 :            :     void undo() override;
     133                 :            :     void redo() override;
     134                 :          0 :     int id() const override { return 1; }
     135                 :            :     bool mergeWith( const QUndoCommand *other ) override;
     136                 :            : 
     137                 :            :   private:
     138                 :            :     QgsFeatureId mFid;
     139                 :            :     QgsGeometry mOldGeom;
     140                 :            :     mutable QgsGeometry mNewGeom;
     141                 :            : };
     142                 :            : 
     143                 :            : 
     144                 :            : /**
     145                 :            :  * \ingroup core
     146                 :            :  * \class QgsVectorLayerUndoCommandChangeAttribute
     147                 :            :  * \brief Undo command for modifying an attribute of a feature from a vector layer.
     148                 :            :  */
     149                 :            : 
     150                 :          0 : class CORE_EXPORT QgsVectorLayerUndoCommandChangeAttribute : public QgsVectorLayerUndoCommand
     151                 :            : {
     152                 :            :   public:
     153                 :            : 
     154                 :            :     /**
     155                 :            :      * Constructor for QgsVectorLayerUndoCommandChangeAttribute
     156                 :            :      * \param buffer associated edit buffer
     157                 :            :      * \param fid feature ID of feature to modify
     158                 :            :      * \param fieldIndex index of field to modify
     159                 :            :      * \param newValue new value of attribute
     160                 :            :      * \param oldValue previous value of attribute
     161                 :            :      */
     162                 :            :     QgsVectorLayerUndoCommandChangeAttribute( QgsVectorLayerEditBuffer *buffer SIP_TRANSFER, QgsFeatureId fid, int fieldIndex, const QVariant &newValue, const QVariant &oldValue );
     163                 :            :     void undo() override;
     164                 :            :     void redo() override;
     165                 :            : 
     166                 :            :   private:
     167                 :            :     QgsFeatureId mFid;
     168                 :            :     int mFieldIndex;
     169                 :            :     QVariant mOldValue;
     170                 :            :     QVariant mNewValue;
     171                 :            :     bool mFirstChange;
     172                 :            : };
     173                 :            : 
     174                 :            : /**
     175                 :            :  * \ingroup core
     176                 :            :  * \class QgsVectorLayerUndoCommandAddAttribute
     177                 :            :  * \brief Undo command for adding a new attribute to a vector layer.
     178                 :            :  */
     179                 :            : 
     180                 :          0 : class CORE_EXPORT QgsVectorLayerUndoCommandAddAttribute : public QgsVectorLayerUndoCommand
     181                 :            : {
     182                 :            :   public:
     183                 :            : 
     184                 :            :     /**
     185                 :            :      * Constructor for QgsVectorLayerUndoCommandAddAttribute
     186                 :            :      * \param buffer associated edit buffer
     187                 :            :      * \param field definition of new field to add
     188                 :            :      */
     189                 :            :     QgsVectorLayerUndoCommandAddAttribute( QgsVectorLayerEditBuffer *buffer SIP_TRANSFER, const QgsField &field );
     190                 :            : 
     191                 :            :     void undo() override;
     192                 :            :     void redo() override;
     193                 :            : 
     194                 :            :   private:
     195                 :            :     QgsField mField;
     196                 :            :     int mFieldIndex;
     197                 :            : };
     198                 :            : 
     199                 :            : /**
     200                 :            :  * \ingroup core
     201                 :            :  * \class QgsVectorLayerUndoCommandDeleteAttribute
     202                 :            :  * \brief Undo command for removing an existing attribute from a vector layer.
     203                 :            :  */
     204                 :            : 
     205                 :          0 : class CORE_EXPORT QgsVectorLayerUndoCommandDeleteAttribute : public QgsVectorLayerUndoCommand
     206                 :            : {
     207                 :            :   public:
     208                 :            : 
     209                 :            :     /**
     210                 :            :      * Constructor for QgsVectorLayerUndoCommandDeleteAttribute
     211                 :            :      * \param buffer associated edit buffer
     212                 :            :      * \param fieldIndex index of field to delete
     213                 :            :      */
     214                 :            :     QgsVectorLayerUndoCommandDeleteAttribute( QgsVectorLayerEditBuffer *buffer SIP_TRANSFER, int fieldIndex );
     215                 :            : 
     216                 :            :     void undo() override;
     217                 :            :     void redo() override;
     218                 :            : 
     219                 :            :   private:
     220                 :            :     int mFieldIndex;
     221                 :            :     QString mFieldName;
     222                 :            :     bool mProviderField;
     223                 :            :     int mOriginIndex;
     224                 :            :     QgsField mOldField;
     225                 :            :     QVariantMap mOldEditorWidgetConfig;
     226                 :            : 
     227                 :            :     QMap<QgsFeatureId, QVariant> mDeletedValues;
     228                 :            :     QString mOldName;
     229                 :            : };
     230                 :            : 
     231                 :            : 
     232                 :            : /**
     233                 :            :  * \ingroup core
     234                 :            :  * \class QgsVectorLayerUndoCommandRenameAttribute
     235                 :            :  * \brief Undo command for renaming an existing attribute of a vector layer.
     236                 :            :  * \since QGIS 2.16
     237                 :            :  */
     238                 :            : 
     239                 :          0 : class CORE_EXPORT QgsVectorLayerUndoCommandRenameAttribute : public QgsVectorLayerUndoCommand
     240                 :            : {
     241                 :            :   public:
     242                 :            : 
     243                 :            :     /**
     244                 :            :      * Constructor for QgsVectorLayerUndoCommandRenameAttribute
     245                 :            :      * \param buffer associated edit buffer
     246                 :            :      * \param fieldIndex index of field to rename
     247                 :            :      * \param newName new name for field
     248                 :            :      */
     249                 :            :     QgsVectorLayerUndoCommandRenameAttribute( QgsVectorLayerEditBuffer *buffer SIP_TRANSFER, int fieldIndex, const QString &newName );
     250                 :            : 
     251                 :            :     void undo() override;
     252                 :            :     void redo() override;
     253                 :            : 
     254                 :            :   private:
     255                 :            :     int mFieldIndex;
     256                 :            :     bool mProviderField;
     257                 :            :     int mOriginIndex;
     258                 :            :     QString mOldName;
     259                 :            :     QString mNewName;
     260                 :            : };
     261                 :            : 
     262                 :            : #endif

Generated by: LCOV version 1.14