Refactorize server properties

This commit is contained in:
David Marteau 2021-08-11 19:40:26 +02:00 committed by Etienne Trimaille
parent 21c3f3fcbf
commit ee6acb0ca2
No known key found for this signature in database
GPG Key ID: 66ED504C2D0E74F9
25 changed files with 687 additions and 477 deletions

View File

@ -0,0 +1,2 @@
# The following has been generated automatically from src/core/qgsmaplayerserverproperties.h
QgsServerWmsDimensionProperties.PredefinedWmsDimensionName.baseClass = QgsServerWmsDimensionProperties

View File

@ -1,2 +0,0 @@
# The following has been generated automatically from src/core/vector/qgsvectorlayerserverproperties.h
QgsVectorLayerServerProperties.PredefinedWmsDimensionName.baseClass = QgsVectorLayerServerProperties

View File

@ -376,24 +376,18 @@ Attribution indicates the provider of a layer or collection of layers.
%End
virtual QgsMapLayerServerProperties *serverProperties();
QgsMapLayerServerProperties *serverProperties();
%Docstring
Returns QGIS Server Properties for the map layer
.. versionadded:: 3.22
%End
void setMetadataUrl( const QString &metaUrl );
%Docstring
Sets the metadata URL of the layer
used by QGIS Server in GetCapabilities request.
MetadataUrl is a a link to the detailed, standardized metadata about the data.
Since QGIS 3.22, it edits the first metadata URL link. You should use setServerProperties.
.. seealso:: :py:func:`setServerProperties`
Since QGIS 3.22, it edits the first metadata URL link.
.. deprecated:: QGIS 3.22
%End
@ -403,7 +397,7 @@ Since QGIS 3.22, it edits the first metadata URL link. You should use setServerP
Returns the metadata URL of the layer
used by QGIS Server in GetCapabilities request.
MetadataUrl is a a link to the detailed, standardized metadata about the data.
Since QGIS 3.22, it returns the first metadata URL link. You should use setServerProperties.
Since QGIS 3.22, it returns the first metadata URL link.
:return: the layer metadata URL
@ -417,7 +411,7 @@ Since QGIS 3.22, it returns the first metadata URL link. You should use setServe
Set the metadata type of the layer
used by QGIS Server in GetCapabilities request
MetadataUrlType indicates the standard to which the metadata complies.
Since QGIS 3.22, it edits the first metadata URL type. You should use setServerProperties.
Since QGIS 3.22, it edits the first metadata URL type.
:return: the layer metadata type
@ -431,7 +425,7 @@ Since QGIS 3.22, it edits the first metadata URL type. You should use setServerP
Returns the metadata type of the layer
used by QGIS Server in GetCapabilities request.
MetadataUrlType indicates the standard to which the metadata complies.
Since QGIS 3.22, it returns the first metadata URL type. You should use setServerProperties.
Since QGIS 3.22, it returns the first metadata URL type.
:return: the layer metadata type
@ -445,7 +439,7 @@ Since QGIS 3.22, it returns the first metadata URL type. You should use setServe
Sets the metadata format of the layer
used by QGIS Server in GetCapabilities request.
MetadataUrlType indicates how the metadata is structured.
Since QGIS 3.22, it edits the first metadata URL format. You should use setServerProperties.
Since QGIS 3.22, it edits the first metadata URL format.
.. seealso:: :py:func:`mapLayerServerProperties`
@ -457,7 +451,7 @@ Since QGIS 3.22, it edits the first metadata URL format. You should use setServe
Returns the metadata format of the layer
used by QGIS Server in GetCapabilities request.
MetadataUrlType indicates how the metadata is structured.
Since QGIS 3.22, it returns the first metadata URL format. You should use setServerProperties.
Since QGIS 3.22, it returns the first metadata URL format.
:return: the layer metadata format

View File

@ -11,7 +11,7 @@
class QgsMapLayerServerProperties
class QgsServerMetadataUrlProperties
{
%Docstring(signature="appended")
Manages QGIS Server properties for a map layer
@ -42,9 +42,172 @@ Constructor for MetadataUrl.
QString format;
bool operator==( const QgsMapLayerServerProperties::MetadataUrl &other ) const;
bool operator==( const QgsServerMetadataUrlProperties::MetadataUrl &other ) const;
};
virtual ~QgsServerMetadataUrlProperties();
QList<QgsServerMetadataUrlProperties::MetadataUrl> metadataUrls() const;
%Docstring
Returns a list of metadataUrl resources associated for the layer.
:return: the list of metadata URLs
.. seealso:: :py:func:`setMetadataUrls`
%End
void setMetadataUrls( const QList<QgsServerMetadataUrlProperties::MetadataUrl> &metaUrls );
%Docstring
Sets a the list of metadata URL for the layer
.. seealso:: :py:func:`metadataUrls`
.. seealso:: :py:func:`addMetadataUrl`
%End
void addMetadataUrl( const QgsServerMetadataUrlProperties::MetadataUrl &metaUrl );
%Docstring
Add a metadataUrl for the layer
.. seealso:: :py:func:`setMetadataUrls`
%End
virtual const QgsMapLayer *layer() const = 0;
%Docstring
Get parent layer
%End
protected:
};
class QgsServerWmsDimensionProperties
{
%Docstring(signature="appended")
Manages QGIS Server properties for Wms dimensions
.. versionadded:: 3.22
%End
%TypeHeaderCode
#include "qgsmaplayerserverproperties.h"
%End
public:
static const QMetaObject staticMetaObject;
public:
enum PredefinedWmsDimensionName
{
TIME,
DATE,
ELEVATION
};
struct WmsDimensionInfo
{
enum DefaultDisplay
{
AllValues,
MinValue,
MaxValue,
ReferenceValue,
};
explicit WmsDimensionInfo( const QString &dimName,
const QString &dimFieldName,
const QString &dimEndFieldName = QString(),
const QString &dimUnits = QString(),
const QString &dimUnitSymbol = QString(),
const int &dimDefaultDisplayType = QgsServerWmsDimensionProperties::WmsDimensionInfo::AllValues,
const QVariant &dimReferenceValue = QVariant() );
%Docstring
Constructor for WmsDimensionInfo.
%End
QString name;
QString fieldName;
QString endFieldName;
QString units;
QString unitSymbol;
int defaultDisplayType;
QVariant referenceValue;
};
virtual ~QgsServerWmsDimensionProperties();
static QMap<int, QString> wmsDimensionDefaultDisplayLabels();
%Docstring
Returns WMS Dimension default display labels
.. versionadded:: 3.10
%End
bool addWmsDimension( const QgsServerWmsDimensionProperties::WmsDimensionInfo &wmsDimInfo );
%Docstring
Adds a QGIS Server WMS Dimension
:param wmsDimInfo: QGIS Server WMS Dimension object with, name, field, etc
:return: ``True`` if QGIS Server WMS Dimension has been successfully added
.. versionadded:: 3.10
%End
bool removeWmsDimension( const QString &wmsDimName );
%Docstring
Removes a QGIS Server WMS Dimension
:return: ``True`` if QGIS Server WMS Dimension was found and successfully removed
.. versionadded:: 3.10
%End
void setWmsDimensions( const QList<QgsServerWmsDimensionProperties::WmsDimensionInfo> &dimensions );
%Docstring
Set WMS Dimensions
:param the: new dimensions that replace the current ones.
%End
const QList<QgsServerWmsDimensionProperties::WmsDimensionInfo> wmsDimensions() const;
%Docstring
Returns the QGIS Server WMS Dimension list.
.. versionadded:: 3.10
%End
virtual const QgsMapLayer *layer() const = 0;
%Docstring
Get parent layer
%End
protected:
};
class QgsMapLayerServerProperties: QgsServerMetadataUrlProperties, QgsServerWmsDimensionProperties
{
%Docstring(signature="appended")
Manages QGIS Server properties for a map layer
.. versionadded:: 3.10
%End
%TypeHeaderCode
#include "qgsmaplayerserverproperties.h"
%End
public:
static const QMetaObject staticMetaObject;
public:
QgsMapLayerServerProperties( QgsMapLayer *layer = 0 );
%Docstring
Constructor - Creates a Map Layer QGIS Server Properties
@ -52,41 +215,52 @@ Constructor - Creates a Map Layer QGIS Server Properties
:param layer: The map layer
%End
QList <QgsMapLayerServerProperties::MetadataUrl> metadataUrls() const;
void clone( QgsMapLayerServerProperties *properties ) const;
%Docstring
Returns a list of metadataUrl resources associated for the layer.
Copy properties to another instance
:return: the list of metadata URLs
.. seealso:: :py:func:`setMetadataUrls`
:param properties: The properties to copy to
%End
void setMetadataUrls( const QList<QgsMapLayerServerProperties::MetadataUrl> &metaUrls );
%Docstring
Sets a the list of metadata URL for the layer
.. seealso:: :py:func:`metadataUrls`
.. seealso:: :py:func:`addMetadataUrl`
%End
void addMetadataUrl( const MetadataUrl &metaUrl );
%Docstring
Add a metadataUrl for the layer
.. seealso:: :py:func:`setMetadataUrls`
%End
void writeXml( QDomNode &layer_node, QDomDocument &document ) const;
%Docstring
Saves server properties to xml under the layer node
.. versionadded:: 3.10
%End
void readXml( const QDomNode &layer_node );
%Docstring
Reads server properties from project file.
.. versionadded:: 3.10
%End
void reset();
%Docstring
Reset properties to default
.. versionadded:: 3.22
%End
virtual const QgsMapLayer *layer() const;
%Docstring
Get Parent layer
%End
};
class QgsVectorLayerServerProperties: QgsMapLayerServerProperties
{
%TypeHeaderCode
#include "qgsmaplayerserverproperties.h"
%End
public:
static const QMetaObject staticMetaObject;
};
/************************************************************************
* This file has been generated automatically from *
* *

View File

@ -616,13 +616,6 @@ which is used by the layer, so any changes are immediately applied.
%End
QgsMapLayerServerProperties *serverProperties() const;
%Docstring
Returns QGIS Server Properties of the vector layer
.. versionadded:: 3.10
%End
int selectedFeatureCount() const;
%Docstring
Returns the number of features that are selected in this layer.

View File

@ -1,131 +0,0 @@
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/vector/qgsvectorlayerserverproperties.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/
class QgsVectorLayerServerProperties : QgsMapLayerServerProperties
{
%Docstring(signature="appended")
Manages QGIS Server properties for a vector layer
.. versionadded:: 3.10
%End
%TypeHeaderCode
#include "qgsvectorlayerserverproperties.h"
%End
public:
static const QMetaObject staticMetaObject;
public:
enum PredefinedWmsDimensionName
{
TIME,
DATE,
ELEVATION
};
struct WmsDimensionInfo
{
enum DefaultDisplay
{
AllValues,
MinValue,
MaxValue,
ReferenceValue,
};
explicit WmsDimensionInfo( const QString &dimName,
const QString &dimFieldName,
const QString &dimEndFieldName = QString(),
const QString &dimUnits = QString(),
const QString &dimUnitSymbol = QString(),
const int &dimDefaultDisplayType = QgsVectorLayerServerProperties::WmsDimensionInfo::AllValues,
const QVariant &dimReferenceValue = QVariant() );
%Docstring
Constructor for WmsDimensionInfo.
%End
QString name;
QString fieldName;
QString endFieldName;
QString units;
QString unitSymbol;
int defaultDisplayType;
QVariant referenceValue;
};
QgsVectorLayerServerProperties( QgsVectorLayer *layer = 0 );
%Docstring
Constructor - Creates a Vector Layer QGIS Server Properties
:param layer: The vector layer
%End
static QMap<int, QString> wmsDimensionDefaultDisplayLabels();
%Docstring
Returns WMS Dimension default display labels
.. versionadded:: 3.10
%End
bool addWmsDimension( const QgsVectorLayerServerProperties::WmsDimensionInfo &wmsDimInfo );
%Docstring
Adds a QGIS Server WMS Dimension
:param wmsDimInfo: QGIS Server WMS Dimension object with, name, field, etc
:return: ``True`` if QGIS Server WMS Dimension has been successfully added
.. versionadded:: 3.10
%End
bool removeWmsDimension( const QString &wmsDimName );
%Docstring
Removes a QGIS Server WMS Dimension
:return: ``True`` if QGIS Server WMS Dimension was found and successfully removed
.. versionadded:: 3.10
%End
const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> wmsDimensions() const;
%Docstring
Returns the QGIS Server WMS Dimension list.
.. versionadded:: 3.10
%End
void writeXml( QDomNode &layer_node, QDomDocument &document ) const;
%Docstring
Saves server properties to xml under the layer node
.. versionadded:: 3.10
%End
void readXml( const QDomNode &layer_node );
%Docstring
Reads server properties from project file.
.. versionadded:: 3.10
%End
};
/************************************************************************
* This file has been generated automatically from *
* *
* src/core/vector/qgsvectorlayerserverproperties.h *
* *
* Do not edit manually ! Edit header and run scripts/sipify.pl again *
************************************************************************/

View File

@ -666,7 +666,6 @@
%Include auto_generated/vector/qgsvectorlayerfeatureiterator.sip
%Include auto_generated/vector/qgsvectorlayerjoinbuffer.sip
%Include auto_generated/vector/qgsvectorlayerjoininfo.sip
%Include auto_generated/vector/qgsvectorlayerserverproperties.sip
%Include auto_generated/vector/qgsvectorlayertemporalproperties.sip
%Include auto_generated/vector/qgsvectorlayertools.sip
%Include auto_generated/vector/qgsvectorlayerundocommand.sip

View File

@ -35,7 +35,7 @@ Parses a comma separated ``bbox`` into a (possibly empty) :py:class:`QgsRectangl
Z values (i.e. a 6 elements bbox) are silently discarded
%End
static QList< QgsVectorLayerServerProperties::WmsDimensionInfo > temporalDimensions( const QgsVectorLayer *layer );
static QList< QgsServerWmsDimensionProperties::WmsDimensionInfo > temporalDimensions( const QgsVectorLayer *layer );
%Docstring
Returns a list of temporal dimensions information for the given ``layer`` (either configured in wmsDimensions or the first date/datetime field)

View File

@ -809,7 +809,6 @@ set(QGIS_CORE_SRCS
vector/qgsvectorlayerjoinbuffer.cpp
vector/qgsvectorlayerjoininfo.cpp
vector/qgsvectorlayerrenderer.cpp
vector/qgsvectorlayerserverproperties.cpp
vector/qgsvectorlayertemporalproperties.cpp
vector/qgsvectorlayertools.cpp
vector/qgsvectorlayerundocommand.cpp
@ -1733,7 +1732,6 @@ set(QGIS_CORE_HDRS
vector/qgsvectorlayerjoinbuffer.h
vector/qgsvectorlayerjoininfo.h
vector/qgsvectorlayerrenderer.h
vector/qgsvectorlayerserverproperties.h
vector/qgsvectorlayertemporalproperties.h
vector/qgsvectorlayertools.h
vector/qgsvectorlayerundocommand.h

View File

@ -101,6 +101,7 @@ QgsMapLayer::~QgsMapLayer()
delete m3DRenderer;
delete mLegend;
delete mStyleManager;
delete mServerProperties;
}
void QgsMapLayer::clone( QgsMapLayer *layer ) const
@ -126,9 +127,6 @@ void QgsMapLayer::clone( QgsMapLayer *layer ) const
layer->setDataUrlFormat( dataUrlFormat() );
layer->setAttribution( attribution() );
layer->setAttributionUrl( attributionUrl() );
// layer->setMetadataUrl( metadataUrl() );
// layer->setMetadataUrlType( metadataUrlType() );
// layer->setMetadataUrlFormat( metadataUrlFormat() );
layer->setLegendUrl( legendUrl() );
layer->setLegendUrlFormat( legendUrlFormat() );
layer->setDependencies( dependencies() );
@ -137,8 +135,7 @@ void QgsMapLayer::clone( QgsMapLayer *layer ) const
layer->setCustomProperties( mCustomProperties );
layer->setOpacity( mLayerOpacity );
layer->setMetadata( mMetadata );
// if ( auto *lServerProperties = serverProperties() )
// layer->setServerProperties( lServerProperties->clone( layer ) );
layer->serverProperties()->clone( mServerProperties );
}
QgsMapLayerType QgsMapLayer::type() const
@ -201,35 +198,22 @@ QString QgsMapLayer::shortName() const
return mShortName;
}
//void QgsMapLayer::setServerProperties( QgsMapLayerServerProperties *properties )
//{
// mMapLayerServerProperties.reset( properties );
//// if ( mMapLayerServerProperties )
// // mMapLayerServerProperties->setParent( this );
//}
void QgsMapLayer::setMetadataUrl( const QString &metaUrl )
{
QgsMessageLog::logMessage( QObject::tr( "INSERTION" ), QObject::tr( "DEBUG" ), Qgis::MessageLevel::Warning );
QList<QgsMapLayerServerProperties::MetadataUrl> urls = mServerProperties->metadataUrls();
QList<QgsMapLayerServerProperties::MetadataUrl> urls = serverProperties()->metadataUrls();
if ( urls.isEmpty() )
{
QgsMessageLog::logMessage( QObject::tr( "INSERTION VIDE" ), QObject::tr( "DEBUG" ), Qgis::MessageLevel::Warning );
QgsMapLayerServerProperties::MetadataUrl newItem( metaUrl, QLatin1String(), QLatin1String() );
urls.insert( 0, newItem );
}
else
{
QgsMessageLog::logMessage( QObject::tr( "REMPLACEMENT" ), QObject::tr( "DEBUG" ), Qgis::MessageLevel::Warning );
QgsMapLayerServerProperties::MetadataUrl old = urls.takeAt( 0 );
QgsMapLayerServerProperties::MetadataUrl newItem( metaUrl, old.type, old.format );
urls.insert( 0, newItem );
}
this->serverProperties()->setMetadataUrls( urls );
// mServerProperties->setMetadataUrls( urls );
serverProperties()->setMetadataUrls( urls );
}
QString QgsMapLayer::metadataUrl() const
@ -291,7 +275,7 @@ QString QgsMapLayer::metadataUrlFormat() const
{
if ( mServerProperties->metadataUrls().isEmpty() )
{
return QStringLiteral();
return QString();
}
else
{
@ -496,7 +480,7 @@ bool QgsMapLayer::readLayerXml( const QDomElement &layerElement, QgsReadWriteCon
QString type = metaUrlElem.attribute( QStringLiteral( "type" ), QString() );
QString format = metaUrlElem.attribute( QStringLiteral( "format" ), QString() );
QgsMapLayerServerProperties::MetadataUrl newItem( url, type, format );
mServerProperties->metadataUrls().insert( 0, newItem );
serverProperties()->metadataUrls().insert( 0, newItem );
}
// mMapLayerServerProperties->readXml()

View File

@ -415,32 +415,23 @@ class CORE_EXPORT QgsMapLayer : public QObject
/* Layer metadataUrl information */
/**
* Returns QGIS Server Properties for the map layer
* \since QGIS 3.22
*/
virtual QgsMapLayerServerProperties *serverProperties() { return mServerProperties; }
QgsMapLayerServerProperties *serverProperties() { return mServerProperties; };
/**
* Returns QGIS Server Properties const for the map layer
* \since QGIS 3.22
*/
// const QgsMapLayerServerProperties *serverProperties() { return mMapLayerServerProperties.get(); } const SIP_SKIP;
/**
* Set QGIS Server Properties for the map layer
* \since QGIS 3.22
*/
// void *setServerProperties(QgsMapLayerServerProperties &mProperties) { mMapLayerServerProperties = mProperties }
//void setServerProperties( QgsMapLayerServerProperties *properties SIP_TRANSFER = nullptr );
const QgsMapLayerServerProperties *serverProperties() const { return mServerProperties; } SIP_SKIP;
/**
* Sets the metadata URL of the layer
* used by QGIS Server in GetCapabilities request.
* MetadataUrl is a a link to the detailed, standardized metadata about the data.
* Since QGIS 3.22, it edits the first metadata URL link. You should use setServerProperties.
* \see setServerProperties()
* Since QGIS 3.22, it edits the first metadata URL link.
* \deprecated since QGIS 3.22
*/
void setMetadataUrl( const QString &metaUrl );
@ -449,7 +440,7 @@ class CORE_EXPORT QgsMapLayer : public QObject
* Returns the metadata URL of the layer
* used by QGIS Server in GetCapabilities request.
* MetadataUrl is a a link to the detailed, standardized metadata about the data.
* Since QGIS 3.22, it returns the first metadata URL link. You should use setServerProperties.
* Since QGIS 3.22, it returns the first metadata URL link.
* \returns the layer metadata URL
* \see mapLayerServerProperties()
* \deprecated since QGIS 3.22
@ -460,7 +451,7 @@ class CORE_EXPORT QgsMapLayer : public QObject
* Set the metadata type of the layer
* used by QGIS Server in GetCapabilities request
* MetadataUrlType indicates the standard to which the metadata complies.
* Since QGIS 3.22, it edits the first metadata URL type. You should use setServerProperties.
* Since QGIS 3.22, it edits the first metadata URL type.
* \returns the layer metadata type
* \see mapLayerServerProperties()
* \deprecated since QGIS 3.22
@ -471,7 +462,7 @@ class CORE_EXPORT QgsMapLayer : public QObject
* Returns the metadata type of the layer
* used by QGIS Server in GetCapabilities request.
* MetadataUrlType indicates the standard to which the metadata complies.
* Since QGIS 3.22, it returns the first metadata URL type. You should use setServerProperties.
* Since QGIS 3.22, it returns the first metadata URL type.
* \returns the layer metadata type
* \see mapLayerServerProperties()
* \deprecated since QGIS 3.22
@ -482,7 +473,7 @@ class CORE_EXPORT QgsMapLayer : public QObject
* Sets the metadata format of the layer
* used by QGIS Server in GetCapabilities request.
* MetadataUrlType indicates how the metadata is structured.
* Since QGIS 3.22, it edits the first metadata URL format. You should use setServerProperties.
* Since QGIS 3.22, it edits the first metadata URL format.
* \see mapLayerServerProperties()
* \deprecated since QGIS 3.22
*/
@ -492,7 +483,7 @@ class CORE_EXPORT QgsMapLayer : public QObject
* Returns the metadata format of the layer
* used by QGIS Server in GetCapabilities request.
* MetadataUrlType indicates how the metadata is structured.
* Since QGIS 3.22, it returns the first metadata URL format. You should use setServerProperties.
* Since QGIS 3.22, it returns the first metadata URL format.
* \returns the layer metadata format
* \see mapLayerServerProperties()
* \deprecated since QGIS 3.22
@ -2076,10 +2067,10 @@ class CORE_EXPORT QgsMapLayer : public QObject
//! A flag that tells us whether to use the above vars to restrict layer visibility
bool mScaleBasedVisibility = false;
//! Stores information about server properties
/**
* Stores information about server properties
*/
QgsMapLayerServerProperties *mServerProperties = nullptr;
//QgsMapLayerServerProperties *mMapLayerServerProperties = nullptr;
//QgsMapLayerServerProperties *mMapLayerServerProperties = nullptr;
//! Collection of undoable operations for this layer.
QUndoStack *mUndoStack = nullptr;

View File

@ -17,28 +17,203 @@
#include "qgsmaplayerserverproperties.h"
#include "qgsmaplayer.h"
#include "vector/qgsvectorlayer.h"
#include <QDomNode>
QgsMapLayerServerProperties::QgsMapLayerServerProperties( QgsMapLayer *layer )
: mLayer( layer )
{
}
// QgsServerMetadataUrlProperties
bool QgsMapLayerServerProperties::MetadataUrl::operator==( const QgsMapLayerServerProperties::MetadataUrl &other ) const
bool QgsServerMetadataUrlProperties::MetadataUrl::operator==( const QgsServerMetadataUrlProperties::MetadataUrl &other ) const
{
return url == other.url &&
type == other.type &&
format == other.format;
}
void QgsMapLayerServerProperties::readXml( const QDomNode &layer_node )
void QgsServerMetadataUrlProperties::clone( QgsServerMetadataUrlProperties *properties ) const
{
properties->setMetadataUrls( metadataUrls() );
}
void QgsServerMetadataUrlProperties::reset()
{
mMetadataUrls.clear();
}
void QgsServerMetadataUrlProperties::readXml( const QDomNode &layer_node )
{
Q_UNUSED( layer_node );
}
void QgsMapLayerServerProperties::writeXml( QDomNode &layer_node, QDomDocument &document ) const
void QgsServerMetadataUrlProperties::writeXml( QDomNode &layer_node, QDomDocument &document ) const
{
Q_UNUSED( layer_node );
Q_UNUSED( document );
}
// QgsServerWmsDimensionProperties
void QgsServerWmsDimensionProperties::clone( QgsServerWmsDimensionProperties *properties ) const
{
properties->setWmsDimensions( wmsDimensions() );
}
void QgsServerWmsDimensionProperties::reset()
{
mWmsDimensions.clear();
}
void QgsServerWmsDimensionProperties::setWmsDimensions( const QList<QgsServerWmsDimensionProperties::WmsDimensionInfo> &dimensions )
{
mWmsDimensions = dimensions;
}
QMap<int, QString> QgsServerWmsDimensionProperties::wmsDimensionDefaultDisplayLabels()
{
QMap<int, QString> labels;
labels[QgsServerWmsDimensionProperties::WmsDimensionInfo::AllValues] = QObject::tr( "All values" );
labels[QgsServerWmsDimensionProperties::WmsDimensionInfo::MinValue] = QObject::tr( "Min value" );
labels[QgsServerWmsDimensionProperties::WmsDimensionInfo::MaxValue] = QObject::tr( "Max value" );
labels[QgsServerWmsDimensionProperties::WmsDimensionInfo::ReferenceValue] = QObject::tr( "Reference value" );
return labels;
}
bool QgsServerWmsDimensionProperties::addWmsDimension( const QgsServerWmsDimensionProperties::WmsDimensionInfo &wmsDimInfo )
{
for ( const QgsServerWmsDimensionProperties::WmsDimensionInfo &dim : mWmsDimensions )
{
if ( dim.name == wmsDimInfo.name )
{
return false;
}
}
mWmsDimensions.append( wmsDimInfo );
return true;
}
bool QgsServerWmsDimensionProperties::removeWmsDimension( const QString &wmsDimName )
{
for ( int i = 0; i < mWmsDimensions.size(); ++i )
{
if ( mWmsDimensions[ i ].name == wmsDimName )
{
mWmsDimensions.removeAt( i );
return true;
}
}
return false;
}
const QList< QgsServerWmsDimensionProperties::WmsDimensionInfo > QgsServerWmsDimensionProperties::wmsDimensions() const
{
return mWmsDimensions;
}
void QgsServerWmsDimensionProperties::readXml( const QDomNode &layer_node )
{
QgsServerWmsDimensionProperties::reset();
// Apply only for vector layers
if ( layer()->type() != QgsMapLayerType::VectorLayer )
return;
const QgsFields fields = static_cast<const QgsVectorLayer *>( layer() )->fields();
// QGIS Server WMS Dimensions
const QDomNode wmsDimsNode = layer_node.namedItem( QStringLiteral( "wmsDimensions" ) );
if ( !wmsDimsNode.isNull() )
{
const QDomElement wmsDimsElem = wmsDimsNode.toElement();
QDomNodeList wmsDimsList = wmsDimsElem.elementsByTagName( QStringLiteral( "dimension" ) );
for ( int i = 0; i < wmsDimsList.size(); ++i )
{
QDomElement dimElem = wmsDimsList.at( i ).toElement();
QString dimName = dimElem.attribute( QStringLiteral( "name" ) );
QString dimFieldName = dimElem.attribute( QStringLiteral( "fieldName" ) );
// check field name
int dimFieldNameIndex = fields.indexOf( dimFieldName );
if ( dimFieldNameIndex == -1 )
{
continue;
}
QVariant dimRefValue;
int dimDefaultDisplayType = dimElem.attribute( QStringLiteral( "defaultDisplayType" ) ).toInt();
if ( dimDefaultDisplayType == QgsServerWmsDimensionProperties::WmsDimensionInfo::AllValues )
{
QString dimRefValueStr = dimElem.attribute( QStringLiteral( "referenceValue" ) );
if ( !dimRefValueStr.isEmpty() )
{
QgsField dimField = fields.at( dimFieldNameIndex );
dimRefValue = QVariant( dimRefValueStr );
if ( !dimField.convertCompatible( dimRefValue ) )
{
continue;
}
}
}
QgsServerWmsDimensionProperties::WmsDimensionInfo dim( dimName, dimFieldName,
dimElem.attribute( QStringLiteral( "endFieldName" ) ),
dimElem.attribute( QStringLiteral( "units" ) ),
dimElem.attribute( QStringLiteral( "unitSymbol" ) ),
dimDefaultDisplayType, dimRefValue );
//XXX This add O(n^2) complexity !!!!
// addWmsDimension( dim );
// Better to trust the XML:
mWmsDimensions.append( dim );
}
}
}
void QgsServerWmsDimensionProperties::writeXml( QDomNode &layer_node, QDomDocument &document ) const
{
// save QGIS Server WMS Dimension definitions
if ( mWmsDimensions.size() > 0 )
{
QDomElement wmsDimsElem = document.createElement( QStringLiteral( "wmsDimensions" ) );
for ( const QgsServerWmsDimensionProperties::WmsDimensionInfo &dim : mWmsDimensions )
{
QDomElement dimElem = document.createElement( QStringLiteral( "dimension" ) );
dimElem.setAttribute( QStringLiteral( "name" ), dim.name );
dimElem.setAttribute( QStringLiteral( "fieldName" ), dim.fieldName );
dimElem.setAttribute( QStringLiteral( "endFieldName" ), dim.endFieldName );
dimElem.setAttribute( QStringLiteral( "units" ), dim.units );
dimElem.setAttribute( QStringLiteral( "unitSymbol" ), dim.unitSymbol );
dimElem.setAttribute( QStringLiteral( "defaultDisplayType" ), dim.defaultDisplayType );
dimElem.setAttribute( QStringLiteral( "referenceValue" ), dim.referenceValue.toString() );
wmsDimsElem.appendChild( dimElem );
}
layer_node.appendChild( wmsDimsElem );
}
}
// QgsMapLayerServerProperties
QgsMapLayerServerProperties::QgsMapLayerServerProperties( QgsMapLayer *layer )
: mLayer( layer )
{
}
void QgsMapLayerServerProperties::clone( QgsMapLayerServerProperties *properties ) const
{
QgsServerMetadataUrlProperties::clone( properties );
QgsServerWmsDimensionProperties::clone( properties );
}
void QgsMapLayerServerProperties::reset()
{
QgsServerMetadataUrlProperties::reset();
QgsServerWmsDimensionProperties::reset();
}
void QgsMapLayerServerProperties::readXml( const QDomNode &layer_node )
{
QgsServerMetadataUrlProperties::readXml( layer_node );
QgsServerWmsDimensionProperties::readXml( layer_node );
}
void QgsMapLayerServerProperties::writeXml( QDomNode &layer_node, QDomDocument &document ) const
{
QgsServerMetadataUrlProperties::writeXml( layer_node, document );
QgsServerWmsDimensionProperties::writeXml( layer_node, document );
}

View File

@ -1,6 +1,6 @@
/***************************************************************************
qgsmaplayerserverproperties.h
------------------
------------------
begin : June 21, 2021
copyright : (C) 2021 by Etienne Trimaille
email : etrimaille at 3liz dot com
@ -35,7 +35,7 @@ class QDomDocument;
* \brief Manages QGIS Server properties for a map layer
* \since QGIS 3.22
*/
class CORE_EXPORT QgsMapLayerServerProperties
class CORE_EXPORT QgsServerMetadataUrlProperties
{
Q_GADGET
@ -75,12 +75,206 @@ class CORE_EXPORT QgsMapLayerServerProperties
// TODO c++20 - replace with = default
/**
* Compare two MetadataUrl structure.
*/
bool operator==( const QgsMapLayerServerProperties::MetadataUrl &other ) const;
//! Compare two MetadataUrl structure.
bool operator==( const QgsServerMetadataUrlProperties::MetadataUrl &other ) const;
};
virtual ~QgsServerMetadataUrlProperties() = default;
/**
* Returns a list of metadataUrl resources associated for the layer.
* \returns the list of metadata URLs
* \see setMetadataUrls()
*/
QList<QgsServerMetadataUrlProperties::MetadataUrl> metadataUrls() const { return mMetadataUrls; };
/**
* Sets a the list of metadata URL for the layer
* \see metadataUrls()
* \see addMetadataUrl()
*/
void setMetadataUrls( const QList<QgsServerMetadataUrlProperties::MetadataUrl> &metaUrls ) { mMetadataUrls = metaUrls; };
/**
* Add a metadataUrl for the layer
* \see setMetadataUrls()
*/
void addMetadataUrl( const QgsServerMetadataUrlProperties::MetadataUrl &metaUrl ) { mMetadataUrls << metaUrl; };
//! Get parent layer
virtual const QgsMapLayer *layer() const = 0;
protected:
//! Saves server properties to xml under the layer node
void writeXml( QDomNode &layer_node, QDomDocument &document ) const SIP_SKIP;
//! Reads server properties from project file.
void readXml( const QDomNode &layer_node ) SIP_SKIP;
/**
* Copy properties to another instance
*
* \param properties The properties to copy to
*/
void clone( QgsServerMetadataUrlProperties *properties ) const SIP_SKIP;
//! Reset properties to default
void reset() SIP_SKIP;
private:
QList<MetadataUrl> mMetadataUrls;
};
/**
* \ingroup core
* \brief Manages QGIS Server properties for Wms dimensions
* \since QGIS 3.22
*/
class CORE_EXPORT QgsServerWmsDimensionProperties
{
Q_GADGET
public:
/**
* Predefined/Restricted WMS Dimension name
*/
enum PredefinedWmsDimensionName
{
TIME,
DATE,
ELEVATION
};
Q_ENUM( PredefinedWmsDimensionName )
/**
* Setting to define QGIS Server WMS Dimension.
* \since QGIS 3.10
*/
struct CORE_EXPORT WmsDimensionInfo
{
/**
* Selection behavior for QGIS Server WMS Dimension default display
* \since QGIS 3.10
*/
enum DefaultDisplay
{
AllValues = 0, //!< Display all values of the dimension
MinValue = 1, //!< Add selection to current selection
MaxValue = 2, //!< Modify current selection to include only select features which match
ReferenceValue = 3, //!< Remove from current selection
};
/**
* Constructor for WmsDimensionInfo.
*/
explicit WmsDimensionInfo( const QString &dimName,
const QString &dimFieldName,
const QString &dimEndFieldName = QString(),
const QString &dimUnits = QString(),
const QString &dimUnitSymbol = QString(),
const int &dimDefaultDisplayType = QgsServerWmsDimensionProperties::WmsDimensionInfo::AllValues,
const QVariant &dimReferenceValue = QVariant() )
: name( dimName )
, fieldName( dimFieldName )
, endFieldName( dimEndFieldName )
, units( dimUnits )
, unitSymbol( dimUnitSymbol )
, defaultDisplayType( dimDefaultDisplayType )
, referenceValue( dimReferenceValue )
{}
QString name;
QString fieldName;
QString endFieldName;
QString units;
QString unitSymbol;
int defaultDisplayType;
QVariant referenceValue;
};
virtual ~QgsServerWmsDimensionProperties() = default;
/**
* Returns WMS Dimension default display labels
* \since QGIS 3.10
*/
static QMap<int, QString> wmsDimensionDefaultDisplayLabels();
/**
* Adds a QGIS Server WMS Dimension
* \param wmsDimInfo QGIS Server WMS Dimension object with, name, field, etc
* \returns TRUE if QGIS Server WMS Dimension has been successfully added
* \since QGIS 3.10
*/
bool addWmsDimension( const QgsServerWmsDimensionProperties::WmsDimensionInfo &wmsDimInfo );
/**
* Removes a QGIS Server WMS Dimension
* \returns TRUE if QGIS Server WMS Dimension was found and successfully removed
* \since QGIS 3.10
*/
bool removeWmsDimension( const QString &wmsDimName );
/**
* Set WMS Dimensions
*
* \param the new dimensions that replace the current ones.
*/
void setWmsDimensions( const QList<QgsServerWmsDimensionProperties::WmsDimensionInfo> &dimensions );
/**
* Returns the QGIS Server WMS Dimension list.
* \since QGIS 3.10
*/
const QList<QgsServerWmsDimensionProperties::WmsDimensionInfo> wmsDimensions() const;
//! Get parent layer
virtual const QgsMapLayer *layer() const = 0;
protected:
/**
* Saves server properties to xml under the layer node
*/
void writeXml( QDomNode &layer_node, QDomDocument &document ) const SIP_SKIP;
/**
* Reads server properties from project file.
*/
void readXml( const QDomNode &layer_node ) SIP_SKIP;
/**
* Copy properties to another instance
*
* \param properties The properties to copy to
*/
void clone( QgsServerWmsDimensionProperties *properties ) const SIP_SKIP;
/**
* Reset properties to default
*/
void reset() SIP_SKIP;
private: // Private attributes
//!stores QGIS Server WMS Dimension definitions
QList<WmsDimensionInfo> mWmsDimensions;
};
/**
* \ingroup core
* \brief Manages QGIS Server properties for a map layer
* \since QGIS 3.10
*/
class CORE_EXPORT QgsMapLayerServerProperties: public QgsServerMetadataUrlProperties, public QgsServerWmsDimensionProperties
{
Q_GADGET
public:
/**
* Constructor - Creates a Map Layer QGIS Server Properties
*
@ -89,40 +283,49 @@ class CORE_EXPORT QgsMapLayerServerProperties
QgsMapLayerServerProperties( QgsMapLayer *layer = nullptr );
/**
* Returns a list of metadataUrl resources associated for the layer.
* \returns the list of metadata URLs
* \see setMetadataUrls()
* Copy properties to another instance
*
* \param properties The properties to copy to
*/
QList <QgsMapLayerServerProperties::MetadataUrl> metadataUrls() const { return mMetadataUrls; };
/**
* Sets a the list of metadata URL for the layer
* \see metadataUrls()
* \see addMetadataUrl()
*/
void setMetadataUrls( const QList<QgsMapLayerServerProperties::MetadataUrl> &metaUrls ) { mMetadataUrls = metaUrls; };
/**
* Add a metadataUrl for the layer
* \see setMetadataUrls()
*/
void addMetadataUrl( const MetadataUrl &metaUrl ) { mMetadataUrls << metaUrl; };
void clone( QgsMapLayerServerProperties *properties ) const;
/**
* Saves server properties to xml under the layer node
* \since QGIS 3.10
*/
void writeXml( QDomNode &layer_node, QDomDocument &document ) const;
/**
* Reads server properties from project file.
* \since QGIS 3.10
*/
void readXml( const QDomNode &layer_node );
/**
* Reset properties to default
* \since QGIS 3.22
*/
void reset();
//! Get Parent layer
const QgsMapLayer *layer() const override { return mLayer; };
private:
QgsMapLayer *mLayer = nullptr;
QList< QgsMapLayerServerProperties::MetadataUrl > mMetadataUrls;
};
/**
* \ingroup core
* \brief Convenient class for API compatibility
* \deprecated since QGIS 3.22
* \since QGIS 3.10
*/
// XXX How to make a proper SIP type alias ?
//using QgsVectorLayerServerProperties = QgsMapLayerServerProperties;
class CORE_EXPORT QgsVectorLayerServerProperties: public QgsMapLayerServerProperties
{
Q_GADGET
};
#endif // QGSMAPLAYERSERVERPROPERTIES_H

View File

@ -157,7 +157,6 @@ QgsVectorLayer::QgsVectorLayer( const QString &vectorLayerPath,
const QgsVectorLayer::LayerOptions &options )
: QgsMapLayer( QgsMapLayerType::VectorLayer, baseName, vectorLayerPath )
, mTemporalProperties( new QgsVectorLayerTemporalProperties( this ) )
, mServerProperties( new QgsVectorLayerServerProperties( this ) )
, mAuxiliaryLayer( nullptr )
, mAuxiliaryLayerKey( QString() )
, mReadExtentFromXml( options.readExtentFromXml )

View File

@ -35,7 +35,6 @@
#include "qgsfields.h"
#include "qgsvectordataprovider.h"
#include "qgsvectorsimplifymethod.h"
#include "qgsvectorlayerserverproperties.h"
#include "qgseditformconfig.h"
#include "qgsattributetableconfig.h"
#include "qgsaggregatecalculator.h"
@ -729,12 +728,6 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
*/
const QgsActionManager *actions() const SIP_SKIP { return mActions; }
/**
* Returns QGIS Server Properties of the vector layer
* \since QGIS 3.10
*/
QgsMapLayerServerProperties *serverProperties() const { return mServerProperties; }
/**
* Returns the number of features that are selected in this layer.
*
@ -2930,9 +2923,6 @@ class CORE_EXPORT QgsVectorLayer : public QgsMapLayer, public QgsExpressionConte
//stores information about joined layers
QgsVectorLayerJoinBuffer *mJoinBuffer = nullptr;
//!stores information about server properties
QgsVectorLayerServerProperties *mServerProperties = nullptr;
//! stores information about expression fields on this layer
QgsExpressionFieldBuffer *mExpressionFieldBuffer = nullptr;

View File

@ -1,158 +0,0 @@
/***************************************************************************
qgsvectorlayerserverproperties.h
------------------
begin : August 23, 2019
copyright : (C) 2019 by René-Luc D'Hont
email : rldhont at 3liz dot com
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSVECTORLAYERSERVERPROPERTIES_H
#define QGSVECTORLAYERSERVERPROPERTIES_H
#include "qgis_sip.h"
#include "qgis_core.h"
#include "qgsmaplayerserverproperties.h"
#include <QMap>
#include <QString>
#include <QMetaType>
#include <QVariant>
class QgsVectorLayer;
class QDomNode;
class QDomDocument;
/**
* \ingroup core
* \brief Manages QGIS Server properties for a vector layer
* \since QGIS 3.10
*/
class CORE_EXPORT QgsVectorLayerServerProperties : public QgsMapLayerServerProperties
{
Q_GADGET
public:
/**
* Predefined/Restricted WMS Dimension name
* \since QGIS 3.10
*/
enum PredefinedWmsDimensionName
{
TIME,
DATE,
ELEVATION
};
Q_ENUM( PredefinedWmsDimensionName )
/**
* Setting to define QGIS Server WMS Dimension.
* \since QGIS 3.10
*/
struct CORE_EXPORT WmsDimensionInfo
{
/**
* Selection behavior for QGIS Server WMS Dimension default display
* \since QGIS 3.10
*/
enum DefaultDisplay
{
AllValues = 0, //!< Display all values of the dimension
MinValue = 1, //!< Add selection to current selection
MaxValue = 2, //!< Modify current selection to include only select features which match
ReferenceValue = 3, //!< Remove from current selection
};
/**
* Constructor for WmsDimensionInfo.
*/
explicit WmsDimensionInfo( const QString &dimName,
const QString &dimFieldName,
const QString &dimEndFieldName = QString(),
const QString &dimUnits = QString(),
const QString &dimUnitSymbol = QString(),
const int &dimDefaultDisplayType = QgsVectorLayerServerProperties::WmsDimensionInfo::AllValues,
const QVariant &dimReferenceValue = QVariant() )
: name( dimName )
, fieldName( dimFieldName )
, endFieldName( dimEndFieldName )
, units( dimUnits )
, unitSymbol( dimUnitSymbol )
, defaultDisplayType( dimDefaultDisplayType )
, referenceValue( dimReferenceValue )
{}
QString name;
QString fieldName;
QString endFieldName;
QString units;
QString unitSymbol;
int defaultDisplayType;
QVariant referenceValue;
};
/**
* Constructor - Creates a Vector Layer QGIS Server Properties
*
* \param layer The vector layer
*/
QgsVectorLayerServerProperties( QgsVectorLayer *layer = nullptr );
/**
* Returns WMS Dimension default display labels
* \since QGIS 3.10
*/
static QMap<int, QString> wmsDimensionDefaultDisplayLabels();
/**
* Adds a QGIS Server WMS Dimension
* \param wmsDimInfo QGIS Server WMS Dimension object with, name, field, etc
* \returns TRUE if QGIS Server WMS Dimension has been successfully added
* \since QGIS 3.10
*/
bool addWmsDimension( const QgsVectorLayerServerProperties::WmsDimensionInfo &wmsDimInfo );
/**
* Removes a QGIS Server WMS Dimension
* \returns TRUE if QGIS Server WMS Dimension was found and successfully removed
* \since QGIS 3.10
*/
bool removeWmsDimension( const QString &wmsDimName );
/**
* Returns the QGIS Server WMS Dimension list.
* \since QGIS 3.10
*/
const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> wmsDimensions() const;
/**
* Saves server properties to xml under the layer node
* \since QGIS 3.10
*/
void writeXml( QDomNode &layer_node, QDomDocument &document ) const;
/**
* Reads server properties from project file.
* \since QGIS 3.10
*/
void readXml( const QDomNode &layer_node );
private: // Private attributes
QgsVectorLayer *mLayer = nullptr;
//!stores QGIS Server WMS Dimension definitions
QList<QgsVectorLayerServerProperties::WmsDimensionInfo> mWmsDimensions;
};
#endif // QGSVECTORLAYERSERVERPROPERTIES_H

View File

@ -57,7 +57,6 @@
#include "qgsstyle.h"
#include "qgsauxiliarystorage.h"
#include "qgsmaplayerserverproperties.h"
#include "qgsvectorlayerserverproperties.h"
#include "qgsnewauxiliarylayerdialog.h"
#include "qgsnewauxiliaryfielddialog.h"
#include "qgslabelinggui.h"
@ -360,9 +359,9 @@ QgsVectorLayerProperties::QgsVectorLayerProperties(
);
//insert existing dimension info
QgsVectorLayerServerProperties *serverProperties = static_cast<QgsVectorLayerServerProperties *>( mLayer->serverProperties() );
const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> &wmsDims = serverProperties->wmsDimensions();
for ( const QgsVectorLayerServerProperties::WmsDimensionInfo &dim : wmsDims )
QgsMapLayerServerProperties *serverProperties = static_cast<QgsMapLayerServerProperties *>( mLayer->serverProperties() );
const QList<QgsMapLayerServerProperties::WmsDimensionInfo> &wmsDims = serverProperties->wmsDimensions();
for ( const QgsMapLayerServerProperties::WmsDimensionInfo &dim : wmsDims )
{
addWmsDimensionInfoToTreeWidget( dim );
}
@ -1657,9 +1656,9 @@ void QgsVectorLayerProperties::mButtonAddWmsDimension_clicked()
// get wms dimensions name
QStringList alreadyDefinedDimensions;
QgsVectorLayerServerProperties *serverProperties = static_cast<QgsVectorLayerServerProperties *>( mLayer->serverProperties() );
const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> &dims = serverProperties->wmsDimensions();
for ( const QgsVectorLayerServerProperties::WmsDimensionInfo &dim : dims )
QgsMapLayerServerProperties *serverProperties = static_cast<QgsMapLayerServerProperties *>( mLayer->serverProperties() );
const QList<QgsMapLayerServerProperties::WmsDimensionInfo> &dims = serverProperties->wmsDimensions();
for ( const QgsMapLayerServerProperties::WmsDimensionInfo &dim : dims )
{
alreadyDefinedDimensions << dim.name;
}
@ -1667,7 +1666,7 @@ void QgsVectorLayerProperties::mButtonAddWmsDimension_clicked()
QgsWmsDimensionDialog d( mLayer, alreadyDefinedDimensions );
if ( d.exec() == QDialog::Accepted )
{
QgsVectorLayerServerProperties::WmsDimensionInfo info = d.info();
QgsMapLayerServerProperties::WmsDimensionInfo info = d.info();
// save dimension
serverProperties->addWmsDimension( info );
addWmsDimensionInfoToTreeWidget( info );
@ -1688,8 +1687,8 @@ void QgsVectorLayerProperties::mWmsDimensionsTreeWidget_itemDoubleClicked( QTree
}
QString wmsDimName = item->data( 0, Qt::UserRole ).toString();
QgsVectorLayerServerProperties *serverProperties = static_cast<QgsVectorLayerServerProperties *>( mLayer->serverProperties() );
const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> &dims = serverProperties->wmsDimensions();
QgsMapLayerServerProperties *serverProperties = static_cast<QgsMapLayerServerProperties *>( mLayer->serverProperties() );
const QList<QgsMapLayerServerProperties::WmsDimensionInfo> &dims = serverProperties->wmsDimensions();
QStringList alreadyDefinedDimensions;
int j = -1;
for ( int i = 0; i < dims.size(); ++i )
@ -1715,10 +1714,10 @@ void QgsVectorLayerProperties::mWmsDimensionsTreeWidget_itemDoubleClicked( QTree
if ( d.exec() == QDialog::Accepted )
{
QgsVectorLayerServerProperties::WmsDimensionInfo info = d.info();
QgsMapLayerServerProperties::WmsDimensionInfo info = d.info();
// remove old
QgsVectorLayerServerProperties *serverProperties = static_cast<QgsVectorLayerServerProperties *>( mLayer->serverProperties() );
QgsMapLayerServerProperties *serverProperties = static_cast<QgsMapLayerServerProperties *>( mLayer->serverProperties() );
serverProperties->removeWmsDimension( wmsDimName );
int idx = mWmsDimensionsTreeWidget->indexOfTopLevelItem( item );
mWmsDimensionsTreeWidget->takeTopLevelItem( idx );
@ -1729,7 +1728,7 @@ void QgsVectorLayerProperties::mWmsDimensionsTreeWidget_itemDoubleClicked( QTree
}
}
void QgsVectorLayerProperties::addWmsDimensionInfoToTreeWidget( const QgsVectorLayerServerProperties::WmsDimensionInfo &wmsDim, const int insertIndex )
void QgsVectorLayerProperties::addWmsDimensionInfoToTreeWidget( const QgsMapLayerServerProperties::WmsDimensionInfo &wmsDim, const int insertIndex )
{
QTreeWidgetItem *wmsDimensionItem = new QTreeWidgetItem();
wmsDimensionItem->setFlags( Qt::ItemIsEnabled );
@ -1770,7 +1769,7 @@ void QgsVectorLayerProperties::addWmsDimensionInfoToTreeWidget( const QgsVectorL
QTreeWidgetItem *childWmsDimensionDefaultValue = new QTreeWidgetItem();
childWmsDimensionDefaultValue->setText( 0, tr( "Default display" ) );
childWmsDimensionDefaultValue->setText( 1, QgsVectorLayerServerProperties::wmsDimensionDefaultDisplayLabels()[wmsDim.defaultDisplayType] );
childWmsDimensionDefaultValue->setText( 1, QgsMapLayerServerProperties::wmsDimensionDefaultDisplayLabels()[wmsDim.defaultDisplayType] );
childWmsDimensionDefaultValue->setFlags( Qt::ItemIsEnabled );
wmsDimensionItem->addChild( childWmsDimensionDefaultValue );
@ -1797,7 +1796,7 @@ void QgsVectorLayerProperties::mButtonRemoveWmsDimension_clicked()
return;
}
QgsVectorLayerServerProperties *serverProperties = static_cast<QgsVectorLayerServerProperties *>( mLayer->serverProperties() );
QgsMapLayerServerProperties *serverProperties = static_cast<QgsMapLayerServerProperties *>( mLayer->serverProperties() );
serverProperties->removeWmsDimension( currentWmsDimensionItem->data( 0, Qt::UserRole ).toString() );
mWmsDimensionsTreeWidget->takeTopLevelItem( mWmsDimensionsTreeWidget->indexOfTopLevelItem( currentWmsDimensionItem ) );
}

View File

@ -24,8 +24,8 @@
#include "qgsguiutils.h"
#include "qgshelp.h"
#include "qgsmaplayerstylemanager.h"
#include "qgsmaplayerserverproperties.h"
#include "qgsvectorlayerjoininfo.h"
#include "qgsvectorlayerserverproperties.h"
#include "qgslayertree.h"
#include "qgslayertreemodel.h"
#include "qgslayertreefilterproxymodel.h"
@ -218,7 +218,7 @@ class GUI_EXPORT QgsVectorLayerProperties : public QgsOptionsDialogBase, private
void addJoinToTreeWidget( const QgsVectorLayerJoinInfo &join, int insertIndex = -1 );
//! Adds a QGIS Server WMS dimension to mWmsDimensionTreeWidget
void addWmsDimensionInfoToTreeWidget( const QgsVectorLayerServerProperties::WmsDimensionInfo &wmsDim, int insertIndex = -1 );
void addWmsDimensionInfoToTreeWidget( const QgsMapLayerServerProperties::WmsDimensionInfo &wmsDim, int insertIndex = -1 );
void updateAuxiliaryStoragePage();
void deleteAuxiliaryField( int index );

View File

@ -46,7 +46,7 @@ QgsWmsDimensionDialog::QgsWmsDimensionDialog( QgsVectorLayer *layer, QStringList
connect( mDefaultDisplayComboBox, qOverload<int>( &QComboBox::currentIndexChanged ), this, &QgsWmsDimensionDialog::defaultDisplayChanged );
// Set available names
const QMetaEnum pnMetaEnum( QMetaEnum::fromType<QgsVectorLayerServerProperties::PredefinedWmsDimensionName>() );
const QMetaEnum pnMetaEnum( QMetaEnum::fromType<QgsMapLayerServerProperties::PredefinedWmsDimensionName>() );
for ( int i = 0; i < pnMetaEnum.keyCount(); i++ )
{
const QString name( pnMetaEnum.key( i ) );
@ -58,21 +58,21 @@ QgsWmsDimensionDialog::QgsWmsDimensionDialog( QgsVectorLayer *layer, QStringList
// Set default display combobox
mDefaultDisplayComboBox->clear();
QMap<int, QString> defaultDisplayLabels = QgsVectorLayerServerProperties::wmsDimensionDefaultDisplayLabels();
QMap<int, QString> defaultDisplayLabels = QgsMapLayerServerProperties::wmsDimensionDefaultDisplayLabels();
for ( const int &k : defaultDisplayLabels.keys() )
{
mDefaultDisplayComboBox->addItem( defaultDisplayLabels[k], QVariant( k ) );
}
// Set default display to All values
mDefaultDisplayComboBox->setCurrentIndex( mDefaultDisplayComboBox->findData( QVariant( QgsVectorLayerServerProperties::WmsDimensionInfo::AllValues ) ) );
mDefaultDisplayComboBox->setCurrentIndex( mDefaultDisplayComboBox->findData( QVariant( QgsMapLayerServerProperties::WmsDimensionInfo::AllValues ) ) );
mReferenceValueLabel->setEnabled( false );
mReferenceValueComboBox->setEnabled( false );
}
void QgsWmsDimensionDialog::setInfo( const QgsVectorLayerServerProperties::WmsDimensionInfo &info )
void QgsWmsDimensionDialog::setInfo( const QgsMapLayerServerProperties::WmsDimensionInfo &info )
{
const QMetaEnum pnMetaEnum( QMetaEnum::fromType<QgsVectorLayerServerProperties::PredefinedWmsDimensionName>() );
const QMetaEnum pnMetaEnum( QMetaEnum::fromType<QgsMapLayerServerProperties::PredefinedWmsDimensionName>() );
const int predefinedNameValue = pnMetaEnum.keyToValue( info.name.toUpper().toStdString().c_str() );
if ( predefinedNameValue == -1 )
{
@ -91,7 +91,7 @@ void QgsWmsDimensionDialog::setInfo( const QgsVectorLayerServerProperties::WmsDi
mUnitSymbolLineEdit->setText( info.unitSymbol );
mDefaultDisplayComboBox->setCurrentIndex( mDefaultDisplayComboBox->findData( QVariant( info.defaultDisplayType ) ) );
if ( info.defaultDisplayType == QgsVectorLayerServerProperties::WmsDimensionInfo::ReferenceValue )
if ( info.defaultDisplayType == QgsMapLayerServerProperties::WmsDimensionInfo::ReferenceValue )
{
const int referenceValueIndex = mReferenceValueComboBox->findData( info.referenceValue );
if ( referenceValueIndex == -1 )
@ -109,7 +109,7 @@ void QgsWmsDimensionDialog::setInfo( const QgsVectorLayerServerProperties::WmsDi
}
}
QgsVectorLayerServerProperties::WmsDimensionInfo QgsWmsDimensionDialog::info() const
QgsMapLayerServerProperties::WmsDimensionInfo QgsWmsDimensionDialog::info() const
{
// Is the name a predefined value?
QString name = mNameComboBox->currentText();
@ -125,7 +125,7 @@ QgsVectorLayerServerProperties::WmsDimensionInfo QgsWmsDimensionDialog::info() c
{
refValue = mReferenceValueComboBox->currentData();
}
return QgsVectorLayerServerProperties::WmsDimensionInfo( name, mFieldComboBox->currentField(),
return QgsMapLayerServerProperties::WmsDimensionInfo( name, mFieldComboBox->currentField(),
mEndFieldComboBox->currentField(),
mUnitsLineEdit->text(), mUnitSymbolLineEdit->text(),
mDefaultDisplayComboBox->currentData().toInt(), refValue );
@ -145,7 +145,7 @@ void QgsWmsDimensionDialog::nameChanged( const QString &name )
if ( mNameComboBox->findText( name ) != -1 )
{
const int data = mNameComboBox->currentData().toInt();
if ( data == QgsVectorLayerServerProperties::TIME )
if ( data == QgsMapLayerServerProperties::TIME )
{
const QgsFieldProxyModel::Filters filters = QgsFieldProxyModel::String |
QgsFieldProxyModel::Int |
@ -160,7 +160,7 @@ void QgsWmsDimensionDialog::nameChanged( const QString &name )
mUnitSymbolLabel->setEnabled( false );
mUnitSymbolLineEdit->setEnabled( false );
}
if ( data == QgsVectorLayerServerProperties::DATE )
if ( data == QgsMapLayerServerProperties::DATE )
{
mFieldComboBox->setFilters( QgsFieldProxyModel::String | QgsFieldProxyModel::Date );
mEndFieldComboBox->setFilters( QgsFieldProxyModel::String | QgsFieldProxyModel::Date );
@ -170,7 +170,7 @@ void QgsWmsDimensionDialog::nameChanged( const QString &name )
mUnitSymbolLabel->setEnabled( false );
mUnitSymbolLineEdit->setEnabled( false );
}
else if ( data == QgsVectorLayerServerProperties::ELEVATION )
else if ( data == QgsMapLayerServerProperties::ELEVATION )
{
mFieldComboBox->setFilters( QgsFieldProxyModel::Numeric );
mEndFieldComboBox->setFilters( QgsFieldProxyModel::Numeric );

View File

@ -22,7 +22,7 @@
#define SIP_NO_FILE
#include "ui_qgswmsdimensiondialogbase.h"
#include "qgsvectorlayerserverproperties.h"
#include "qgsmaplayerserverproperties.h"
#include "qgis_gui.h"
class QgsVectorLayer;
@ -44,9 +44,9 @@ class GUI_EXPORT QgsWmsDimensionDialog: public QDialog, private Ui::QgsWmsDimens
public:
QgsWmsDimensionDialog( QgsVectorLayer *layer, QStringList alreadyDefinedDimensions, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags() );
QgsVectorLayerServerProperties::WmsDimensionInfo info() const;
QgsMapLayerServerProperties::WmsDimensionInfo info() const;
void setInfo( const QgsVectorLayerServerProperties::WmsDimensionInfo &info );
void setInfo( const QgsMapLayerServerProperties::WmsDimensionInfo &info );
private slots:
void nameChanged( const QString &name );

View File

@ -67,15 +67,15 @@ QgsRectangle QgsServerApiUtils::parseBbox( const QString &bbox )
return QgsRectangle();
}
QList< QgsVectorLayerServerProperties::WmsDimensionInfo > QgsServerApiUtils::temporalDimensions( const QgsVectorLayer *layer )
QList< QgsMapLayerServerProperties::WmsDimensionInfo > QgsServerApiUtils::temporalDimensions( const QgsVectorLayer *layer )
{
QgsVectorLayerServerProperties *serverProperties = static_cast<QgsVectorLayerServerProperties *>( layer->serverProperties() );
QList< QgsVectorLayerServerProperties::WmsDimensionInfo > dimensions { serverProperties->wmsDimensions() };
const QgsMapLayerServerProperties *serverProperties = layer->serverProperties();
QList< QgsMapLayerServerProperties::WmsDimensionInfo > dimensions { serverProperties->wmsDimensions() };
// Filter only date and time
dimensions.erase( std::remove_if( dimensions.begin(),
dimensions.end(),
[ ]( QgsVectorLayerServerProperties::WmsDimensionInfo & dim )
[ ]( QgsMapLayerServerProperties::WmsDimensionInfo & dim )
{
return dim.name.toLower() != QStringLiteral( "time" )
&& dim.name.toLower() != QStringLiteral( "date" ) ;
@ -89,7 +89,7 @@ QList< QgsVectorLayerServerProperties::WmsDimensionInfo > QgsServerApiUtils::tem
{
if ( f.isDateOrTime() )
{
dimensions.append( QgsVectorLayerServerProperties::WmsDimensionInfo( f.type() == QVariant::DateTime ?
dimensions.append( QgsMapLayerServerProperties::WmsDimensionInfo( f.type() == QVariant::DateTime ?
QStringLiteral( "time" ) :
QStringLiteral( "date" ), f.name() ) );
break;
@ -457,7 +457,7 @@ json QgsServerApiUtils::layerExtent( const QgsVectorLayer *layer )
json QgsServerApiUtils::temporalExtent( const QgsVectorLayer *layer )
{
// Helper to get min/max from a dimension
auto range = [ & ]( const QgsVectorLayerServerProperties::WmsDimensionInfo & dimInfo ) -> QgsDateTimeRange
auto range = [ & ]( const QgsMapLayerServerProperties::WmsDimensionInfo & dimInfo ) -> QgsDateTimeRange
{
QgsDateTimeRange result;
// min
@ -497,7 +497,7 @@ json QgsServerApiUtils::temporalExtent( const QgsVectorLayer *layer )
return { min, max };
};
const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> dimensions { QgsServerApiUtils::temporalDimensions( layer ) };
const QList<QgsMapLayerServerProperties::WmsDimensionInfo> dimensions { QgsServerApiUtils::temporalDimensions( layer ) };
if ( dimensions.isEmpty() )
{
return nullptr;

View File

@ -27,7 +27,7 @@
#include "qgsserverprojectutils.h"
#include "qgsserverapicontext.h"
#include "qgsserverexception.h"
#include "qgsvectorlayerserverproperties.h"
#include "qgsmaplayerserverproperties.h"
#include "qgsrange.h"
#include "qgsjsonutils.h"
@ -66,7 +66,7 @@ class SERVER_EXPORT QgsServerApiUtils
* Returns a list of temporal dimensions information for the given \a layer (either configured in wmsDimensions or the first date/datetime field)
* \since QGIS 3.12
*/
static QList< QgsVectorLayerServerProperties::WmsDimensionInfo > temporalDimensions( const QgsVectorLayer *layer );
static QList< QgsServerWmsDimensionProperties::WmsDimensionInfo > temporalDimensions( const QgsVectorLayer *layer );
/**
* Parses a date \a interval and returns a QgsDateRange

View File

@ -39,7 +39,7 @@
#include "qgsrasterdataprovider.h"
#include "qgsrasterlayer.h"
#include "qgsrasterrenderer.h"
#include "qgsvectorlayerserverproperties.h"
#include "qgsmaplayerserverproperties.h"
namespace QgsWms
@ -1213,9 +1213,9 @@ namespace QgsWms
if ( l->type() == QgsMapLayerType::VectorLayer )
{
QgsVectorLayer *vl = qobject_cast<QgsVectorLayer *>( l );
QgsVectorLayerServerProperties *serverProperties = static_cast<QgsVectorLayerServerProperties *>( vl->serverProperties() );
const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> wmsDims = serverProperties->wmsDimensions();
for ( const QgsVectorLayerServerProperties::WmsDimensionInfo &dim : wmsDims )
QgsMapLayerServerProperties *serverProperties = static_cast<QgsMapLayerServerProperties *>( vl->serverProperties() );
const QList<QgsMapLayerServerProperties::WmsDimensionInfo> wmsDims = serverProperties->wmsDimensions();
for ( const QgsMapLayerServerProperties::WmsDimensionInfo &dim : wmsDims )
{
int fieldIndex = vl->fields().indexOf( dim.fieldName );
// Check field index
@ -1251,15 +1251,15 @@ namespace QgsWms
{
dimElem.setAttribute( QStringLiteral( "unitSymbol" ), dim.unitSymbol );
}
if ( dim.defaultDisplayType == QgsVectorLayerServerProperties::WmsDimensionInfo::MinValue )
if ( dim.defaultDisplayType == QgsMapLayerServerProperties::WmsDimensionInfo::MinValue )
{
dimElem.setAttribute( QStringLiteral( "default" ), values.first().toString() );
}
else if ( dim.defaultDisplayType == QgsVectorLayerServerProperties::WmsDimensionInfo::MaxValue )
else if ( dim.defaultDisplayType == QgsMapLayerServerProperties::WmsDimensionInfo::MaxValue )
{
dimElem.setAttribute( QStringLiteral( "default" ), values.last().toString() );
}
else if ( dim.defaultDisplayType == QgsVectorLayerServerProperties::WmsDimensionInfo::ReferenceValue )
else if ( dim.defaultDisplayType == QgsMapLayerServerProperties::WmsDimensionInfo::ReferenceValue )
{
dimElem.setAttribute( QStringLiteral( "default" ), dim.referenceValue.toString() );
}

View File

@ -17,7 +17,7 @@
#include "qgswmsparameters.h"
#include "qgsdatasourceuri.h"
#include "qgsvectorlayerserverproperties.h"
#include "qgsmaplayerserverproperties.h"
#include "qgsmessagelog.h"
#include "qgswmsserviceexception.h"
@ -2103,7 +2103,7 @@ namespace QgsWms
QMap<QString, QString> QgsWmsParameters::dimensionValues() const
{
QMap<QString, QString> dimValues;
const QMetaEnum pnMetaEnum( QMetaEnum::fromType<QgsVectorLayerServerProperties::PredefinedWmsDimensionName>() );
const QMetaEnum pnMetaEnum( QMetaEnum::fromType<QgsMapLayerServerProperties::PredefinedWmsDimensionName>() );
const QStringList unmanagedNames = mUnmanagedParameters.keys();
for ( const QString &key : unmanagedNames )
{

View File

@ -3113,15 +3113,15 @@ namespace QgsWms
{
QStringList expList;
// WMS Dimension filters
QgsVectorLayerServerProperties *serverProperties = static_cast<QgsVectorLayerServerProperties *>( layer->serverProperties() );
const QList<QgsVectorLayerServerProperties::WmsDimensionInfo> wmsDims = serverProperties->wmsDimensions();
QgsMapLayerServerProperties *serverProperties = static_cast<QgsMapLayerServerProperties *>( layer->serverProperties() );
const QList<QgsMapLayerServerProperties::WmsDimensionInfo> wmsDims = serverProperties->wmsDimensions();
if ( wmsDims.isEmpty() )
{
return expList;
}
QMap<QString, QString> dimParamValues = mContext.parameters().dimensionValues();
for ( const QgsVectorLayerServerProperties::WmsDimensionInfo &dim : wmsDims )
for ( const QgsMapLayerServerProperties::WmsDimensionInfo &dim : wmsDims )
{
// Check field index
int fieldIndex = layer->fields().indexOf( dim.fieldName );
@ -3144,11 +3144,11 @@ namespace QgsWms
{
// Default value based on type configured by user
QVariant defValue;
if ( dim.defaultDisplayType == QgsVectorLayerServerProperties::WmsDimensionInfo::AllValues )
if ( dim.defaultDisplayType == QgsMapLayerServerProperties::WmsDimensionInfo::AllValues )
{
continue; // no filter by default for this dimension
}
else if ( dim.defaultDisplayType == QgsVectorLayerServerProperties::WmsDimensionInfo::ReferenceValue )
else if ( dim.defaultDisplayType == QgsMapLayerServerProperties::WmsDimensionInfo::ReferenceValue )
{
defValue = dim.referenceValue;
}
@ -3163,11 +3163,11 @@ namespace QgsWms
// sort unique values
QList<QVariant> values = qgis::setToList( uniqueValues );
std::sort( values.begin(), values.end() );
if ( dim.defaultDisplayType == QgsVectorLayerServerProperties::WmsDimensionInfo::MinValue )
if ( dim.defaultDisplayType == QgsMapLayerServerProperties::WmsDimensionInfo::MinValue )
{
defValue = values.first();
}
else if ( dim.defaultDisplayType == QgsVectorLayerServerProperties::WmsDimensionInfo::MaxValue )
else if ( dim.defaultDisplayType == QgsMapLayerServerProperties::WmsDimensionInfo::MaxValue )
{
defValue = values.last();
}