Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsstoredexpressionmanager.h 3 : : ------------------- 4 : : begin : August 2019 5 : : copyright : (C) 2019 David Signer 6 : : email : david 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 QGSSTOREDEXPRESSIONMANAGER_H 19 : : #define QGSSTOREDEXPRESSIONMANAGER_H 20 : : 21 : : #include "qgis_core.h" 22 : : #include <QString> 23 : : #include <QObject> 24 : : #include <QUuid> 25 : : 26 : : 27 : : #ifdef SIP_RUN 28 : : % ModuleHeaderCode 29 : : #include <qgsstoredexpressionmanager.h> 30 : : % End 31 : : #endif 32 : : 33 : : class QDomNode; 34 : : class QDomDocument; 35 : : 36 : : /** 37 : : * \ingroup core 38 : : * \brief Stored expression containing name, content (expression text) and a category tag. 39 : : * \since QGIS 3.10 40 : : */ 41 : 0 : struct CORE_EXPORT QgsStoredExpression 42 : : { 43 : : 44 : : /** 45 : : * Categories of use cases 46 : : * FilterExpression for stored expressions to filter attribute table 47 : : * DefaultValueExpression for stored expressions to use for default values (not yet used) 48 : : */ 49 : : enum Category 50 : : { 51 : : FilterExpression = 1 << 0, //!< Expressions to filter features 52 : : DefaultValueExpression = 1 << 1, //!< Expressions to determine default values (not yet used) 53 : : All = FilterExpression | DefaultValueExpression 54 : : }; 55 : : 56 : : #ifndef SIP_RUN 57 : : 58 : : /** 59 : : * Constructor for QgsStoredExpression 60 : : */ 61 : 0 : QgsStoredExpression() = default; 62 : : 63 : : /** 64 : : * Create a new QgsStoredExpression with a generated uuid as id 65 : : * 66 : : * \param name descriptive name of the expression 67 : : * \param expression expression text 68 : : * \param tag category of the expression use case - default FilterExpression 69 : : */ 70 : 0 : QgsStoredExpression( QString name, QString expression, Category tag = Category::FilterExpression ) 71 : 0 : : id( QUuid::createUuid().toString() ), 72 : 0 : name( name ), 73 : 0 : expression( expression ), 74 : 0 : tag( tag ) 75 : 0 : {} 76 : : #endif 77 : : 78 : : //! generated uuid used for identification 79 : : QString id; 80 : : //! descriptive name of the expression 81 : : QString name; 82 : : //! expression text 83 : : QString expression; 84 : : //! category of the expression use case 85 : : Category tag; 86 : : }; 87 : : 88 : : /** 89 : : * \ingroup core 90 : : * \brief Manages stored expressions regarding creation, modification and storing in the project 91 : : * \since QGIS 3.10 92 : : */ 93 : : class CORE_EXPORT QgsStoredExpressionManager : public QObject 94 : : { 95 : : Q_OBJECT 96 : : 97 : : public: 98 : : 99 : : /** 100 : : * Constructor for QgsStoredExpressionManager 101 : : */ 102 : 78 : QgsStoredExpressionManager() = default; 103 : : 104 : : /** 105 : : * Adds an expression to the list 106 : : * 107 : : * \param name optional name of the expression 108 : : * \param expression expression text 109 : : * \param tag category of the expression use case - default FilterExpression 110 : : * \returns generated id 111 : : */ 112 : : QString addStoredExpression( const QString &name, const QString &expression, const QgsStoredExpression::Category &tag = QgsStoredExpression::Category::FilterExpression ); 113 : : 114 : : /** 115 : : * Removes an expression to the list 116 : : * 117 : : * \param id id of the expression as identification 118 : : */ 119 : : void removeStoredExpression( const QString &id ); 120 : : 121 : : /** 122 : : * Updates an expression by \a id. 123 : : * 124 : : * \param id id of the expression as identification 125 : : * \param name new name of the expression 126 : : * \param expression new expression text 127 : : * \param tag new category of the expression use case 128 : : */ 129 : : void updateStoredExpression( const QString &id, const QString &name, const QString &expression, const QgsStoredExpression::Category &tag ); 130 : : 131 : : /** 132 : : * Appends a list of expressions to the existing list 133 : : * 134 : : * \param storedExpressions list of expressions and the optional name 135 : : */ 136 : : void addStoredExpressions( const QList< QgsStoredExpression > &storedExpressions ); 137 : : 138 : : /** 139 : : * Returns the list of named expressions 140 : : * 141 : : * \param tag category of the expression use case - default all 142 : : */ 143 : : QList< QgsStoredExpression > storedExpressions( const QgsStoredExpression::Category &tag = QgsStoredExpression::Category::All ); 144 : : 145 : : 146 : : /** 147 : : * Returns an expression according to the \a id 148 : : * 149 : : * \param id id of the expression as identification 150 : : */ 151 : : QgsStoredExpression storedExpression( const QString &id ) const; 152 : : 153 : : /** 154 : : * Returns an expression according to the \a expression text 155 : : * 156 : : * \param expression id of the expression as identification 157 : : * \param tag category of the expression use case - default all 158 : : */ 159 : : QgsStoredExpression findStoredExpressionByExpression( const QString &expression, const QgsStoredExpression::Category &tag = QgsStoredExpression::Category::All ) const; 160 : : 161 : : //! Clears list of stored expressions 162 : : void clearStoredExpressions(); 163 : : 164 : : //! Writes the stored expressions out in XML format 165 : : bool writeXml( QDomNode &layerNode ) const; 166 : : 167 : : //! Reads the stored expressions in in XML format 168 : : bool readXml( const QDomNode &layerNode ); 169 : : 170 : : signals: 171 : : 172 : : public slots: 173 : : 174 : : private: 175 : : QList< QgsStoredExpression > mStoredExpressions; 176 : : }; 177 : : 178 : : #endif // QGSSTOREDEXPRESSIONMANAGER_H