Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsvectorlayerserverproperties.h 3 : : ------------------ 4 : : begin : August 23, 2019 5 : : copyright : (C) 2019 by René-Luc D'Hont 6 : : email : rldhont at 3liz dot com 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 QGSVECTORLAYERSERVERPROPERTIES_H 19 : : #define QGSVECTORLAYERSERVERPROPERTIES_H 20 : : 21 : : #include "qgis_sip.h" 22 : : #include "qgis_core.h" 23 : : #include <QMap> 24 : : #include <QString> 25 : : #include <QMetaType> 26 : : #include <QVariant> 27 : : 28 : : class QgsVectorLayer; 29 : : 30 : : class QDomNode; 31 : : class QDomDocument; 32 : : 33 : : /** 34 : : * \ingroup core 35 : : * \brief Manages QGIS Server properties for a vector layer 36 : : * \since QGIS 3.10 37 : : */ 38 : 62 : class CORE_EXPORT QgsVectorLayerServerProperties 39 : : { 40 : : Q_GADGET 41 : : 42 : : public: 43 : : 44 : : /** 45 : : * Predefined/Restricted WMS Dimension name 46 : : * \since QGIS 3.10 47 : : */ 48 : : enum PredefinedWmsDimensionName 49 : : { 50 : : TIME, 51 : : DATE, 52 : : ELEVATION 53 : : }; 54 : : Q_ENUM( PredefinedWmsDimensionName ) 55 : : 56 : : /** 57 : : * Setting to define QGIS Server WMS Dimension. 58 : : * \since QGIS 3.10 59 : : */ 60 : 0 : struct CORE_EXPORT WmsDimensionInfo 61 : : { 62 : : 63 : : /** 64 : : * Selection behavior for QGIS Server WMS Dimension default display 65 : : * \since QGIS 3.10 66 : : */ 67 : : enum DefaultDisplay 68 : : { 69 : : AllValues = 0, //!< Display all values of the dimension 70 : : MinValue = 1, //!< Add selection to current selection 71 : : MaxValue = 2, //!< Modify current selection to include only select features which match 72 : : ReferenceValue = 3, //!< Remove from current selection 73 : : }; 74 : : 75 : : /** 76 : : * Constructor for WmsDimensionInfo. 77 : : */ 78 : 0 : explicit WmsDimensionInfo( const QString &dimName, 79 : : const QString &dimFieldName, 80 : : const QString &dimEndFieldName = QString(), 81 : : const QString &dimUnits = QString(), 82 : : const QString &dimUnitSymbol = QString(), 83 : : const int &dimDefaultDisplayType = QgsVectorLayerServerProperties::WmsDimensionInfo::AllValues, 84 : : const QVariant &dimReferenceValue = QVariant() ) 85 : 0 : : name( dimName ) 86 : 0 : , fieldName( dimFieldName ) 87 : 0 : , endFieldName( dimEndFieldName ) 88 : 0 : , units( dimUnits ) 89 : 0 : , unitSymbol( dimUnitSymbol ) 90 : 0 : , defaultDisplayType( dimDefaultDisplayType ) 91 : 0 : , referenceValue( dimReferenceValue ) 92 : 0 : {} 93 : : QString name; 94 : : QString fieldName; 95 : : QString endFieldName; 96 : : QString units; 97 : : QString unitSymbol; 98 : : int defaultDisplayType; 99 : : QVariant referenceValue; 100 : : }; 101 : : 102 : : /** 103 : : * Constructor - Creates a Vector Layer QGIS Server Properties 104 : : * 105 : : * \param layer The vector layer 106 : : */ 107 : : QgsVectorLayerServerProperties( QgsVectorLayer *layer = nullptr ); 108 : : 109 : : /** 110 : : * Returns WMS Dimension default display labels 111 : : * \since QGIS 3.10 112 : : */ 113 : : static QMap<int, QString> wmsDimensionDefaultDisplayLabels(); 114 : : 115 : : /** 116 : : * Adds a QGIS Server WMS Dimension 117 : : * \param wmsDimInfo QGIS Server WMS Dimension object with, name, field, etc 118 : : * \returns TRUE if QGIS Server WMS Dimension has been successfully added 119 : : * \since QGIS 3.10 120 : : */ 121 : : bool addWmsDimension( const QgsVectorLayerServerProperties::WmsDimensionInfo &wmsDimInfo ); 122 : : 123 : : /** 124 : : * Removes a QGIS Server WMS Dimension 125 : : * \returns TRUE if QGIS Server WMS Dimension was found and successfully removed 126 : : * \since QGIS 3.10 127 : : */ 128 : : bool removeWmsDimension( const QString &wmsDimName ); 129 : : 130 : : /** 131 : : * Returns the QGIS Server WMS Dimension list. 132 : : * \since QGIS 3.10 133 : : */ 134 : : const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> wmsDimensions() const; 135 : : 136 : : 137 : : /** 138 : : * Saves server properties to xml under the layer node 139 : : * \since QGIS 3.10 140 : : */ 141 : : void writeXml( QDomNode &layer_node, QDomDocument &document ) const; 142 : : 143 : : /** 144 : : * Reads server properties from project file. 145 : : * \since QGIS 3.10 146 : : */ 147 : : void readXml( const QDomNode &layer_node ); 148 : : 149 : : private: // Private attributes 150 : : 151 : : QgsVectorLayer *mLayer = nullptr; 152 : : 153 : : //!stores QGIS Server WMS Dimension definitions 154 : : QList<QgsVectorLayerServerProperties::WmsDimensionInfo> mWmsDimensions; 155 : : }; 156 : : 157 : : #endif // QGSVECTORLAYERSERVERPROPERTIES_H