Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsexpressionfieldbuffer.h 3 : : --------------------------- 4 : : begin : May 27, 2014 5 : : copyright : (C) 2014 by Matthias Kuhn 6 : : email : matthias at opengis dot ch 7 : : ***************************************************************************/ 8 : : 9 : : /*************************************************************************** 10 : : * * 11 : : * This program is free software; you can redistribute it and/or modify * 12 : : * it under the terms of the GNU General Public License as published by * 13 : : * the Free Software Foundation; either version 2 of the License, or * 14 : : * (at your option) any later version. * 15 : : * * 16 : : ***************************************************************************/ 17 : : 18 : : #ifndef QGSEXPRESSIONFIELDBUFFER_H 19 : : #define QGSEXPRESSIONFIELDBUFFER_H 20 : : 21 : : #include "qgis_core.h" 22 : : #include <QString> 23 : : #include <QList> 24 : : #include <QDomNode> 25 : : 26 : : #include "qgsfields.h" 27 : : #include "qgsexpression.h" 28 : : 29 : : /** 30 : : * \ingroup core 31 : : * \brief Buffers information about expression fields for a vector layer. 32 : : * 33 : : * \since QGIS 2.6 34 : : */ 35 : 457 : class CORE_EXPORT QgsExpressionFieldBuffer 36 : : { 37 : : public: 38 : 0 : struct ExpressionField 39 : : { 40 : 0 : ExpressionField( const QString &exp, const QgsField &fld ) 41 : 0 : : cachedExpression( exp ) 42 : 0 : , field( fld ) 43 : 0 : {} 44 : : 45 : : QgsExpression cachedExpression; 46 : : QgsField field; 47 : : }; 48 : : 49 : : /** 50 : : * Constructor for QgsExpressionFieldBuffer. 51 : : */ 52 : 78 : QgsExpressionFieldBuffer() = default; 53 : : 54 : : /** 55 : : * Add an expression to the buffer 56 : : * 57 : : * \param exp expression to add 58 : : * \param fld field to add 59 : : */ 60 : : void addExpression( const QString &exp, const QgsField &fld ); 61 : : 62 : : /** 63 : : * Remove an expression from the buffer 64 : : * 65 : : * \param index index of expression to remove 66 : : */ 67 : : void removeExpression( int index ); 68 : : 69 : : /** 70 : : * Renames an expression field at a given index 71 : : * 72 : : * \param index The index of the expression to change 73 : : * \param name New name for field 74 : : * 75 : : * \since QGIS 3.0 76 : : */ 77 : : void renameExpression( int index, const QString &name ); 78 : : 79 : : /** 80 : : * Changes the expression at a given index 81 : : * 82 : : * \param index The index of the expression to change 83 : : * \param exp The new expression to set 84 : : * 85 : : * \since QGIS 2.9 86 : : */ 87 : : void updateExpression( int index, const QString &exp ); 88 : : 89 : : /** 90 : : * Saves expressions to xml under the layer node 91 : : */ 92 : : void writeXml( QDomNode &layer_node, QDomDocument &document ) const; 93 : : 94 : : /** 95 : : * Reads expressions from project file 96 : : */ 97 : : void readXml( const QDomNode &layer_node ); 98 : : 99 : : /** 100 : : * Adds fields with the expressions buffered in this object to a QgsFields object 101 : : * 102 : : * \param flds The fields to be updated 103 : : */ 104 : : void updateFields( QgsFields &flds ); 105 : : 106 : 0 : QList<QgsExpressionFieldBuffer::ExpressionField> expressions() const { return mExpressions; } 107 : : 108 : : private: 109 : : QList<ExpressionField> mExpressions; 110 : : }; 111 : : 112 : : #endif // QGSEXPRESSIONFIELDBUFFER_H