QGIS API Documentation 4.3.0-Master (0cfde48c85b)
Loading...
Searching...
No Matches
qgsgroupwmsdatadialog.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsscalevisibilitydialog.cpp
3 --------------------------------------
4 Date : 20.05.2014
5 Copyright : (C) 2014 Denis Rouzaud
6 Email : denis.rouzaud@gmail.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
17
18#include "qgsgui.h"
20
21#include <QComboBox>
22#include <QRegularExpressionValidator>
23#include <QString>
24
25#include "moc_qgsgroupwmsdatadialog.cpp"
26
27using namespace Qt::StringLiterals;
28
29QgsGroupWmsDataDialog::QgsGroupWmsDataDialog( QWidget *parent, Qt::WindowFlags fl )
31{}
32
34 : QDialog( parent, fl )
35 , mServerProperties( std::make_unique<QgsMapLayerServerProperties>() )
36{
37 setupUi( this );
39
40 //init widgets
41 mGroupRequestModeCombo->addItem( tr( "Normal" ), QVariant::fromValue( Qgis::WmsGroupRequestMode::Normal ) );
42 mGroupRequestModeCombo->addItem( tr( "Opaque" ), QVariant::fromValue( Qgis::WmsGroupRequestMode::Opaque ) );
43
44 QMap<Qgis::WmsDimensionDefaultDisplay, QString> defaultDisplayDescriptions = QgsMapLayerServerProperties::wmsDimensionDefaultDisplayDescriptions();
45 mDefaultDisplayComboBox->clear();
46 for ( auto it = defaultDisplayDescriptions.constBegin(); it != defaultDisplayDescriptions.constEnd(); it++ )
47 {
48 mDefaultDisplayComboBox->addItem( it.value(), QVariant( static_cast<int>( it.key() ) ) );
49 }
50
51 connect( mDefaultDisplayComboBox, &QComboBox::currentIndexChanged, this, [this]( int index ) {
52 mReferenceValueDateTimeEdit->setEnabled( index == static_cast<int>( Qgis::WmsDimensionDefaultDisplay::ReferenceValue ) );
53 } );
54
55 serverProperties.copyTo( mServerProperties.get() );
56
57 mMapLayerServerPropertiesWidget->setHasWfsTitle( false );
58 mMapLayerServerPropertiesWidget->setServerProperties( mServerProperties.get() );
59
60 auto it = std::find_if( mServerProperties->wmsDimensions().constBegin(), mServerProperties->wmsDimensions().constEnd(), []( const QgsMapLayerServerProperties::WmsDimensionInfo &dim ) {
61 return dim.name == QgsServerWmsDimensionProperties::TIME_DIMENSION_NAME;
62 } );
63
64 mComputeTimeDimension->setChecked( it != mServerProperties->wmsDimensions().constEnd() );
65 if ( it != mServerProperties->wmsDimensions().constEnd() )
66 {
67 setTimeDimensionDefaultDisplay( it->defaultDisplayType );
68 setTimeDimensionReferenceValue( it->referenceValue().toDateTime() );
69 }
70
71 connect( mComputeTimeDimension, &QGroupBox::toggled, this, &QgsGroupWmsDataDialog::updateServerProperties );
72 connect( mDefaultDisplayComboBox, &QComboBox::currentIndexChanged, this, &QgsGroupWmsDataDialog::updateServerProperties );
73 connect( mReferenceValueDateTimeEdit, &QDateTimeEdit::dateTimeChanged, this, &QgsGroupWmsDataDialog::updateServerProperties );
74}
75
77{
78 mMapLayerServerPropertiesWidget->save();
79 return mServerProperties->shortName();
80}
81
82void QgsGroupWmsDataDialog::setGroupShortName( const QString &shortName )
83{
84 mServerProperties->setShortName( shortName );
85 mMapLayerServerPropertiesWidget->sync();
86}
87
89{
90 mMapLayerServerPropertiesWidget->save();
91 return mServerProperties->title();
92}
93
94void QgsGroupWmsDataDialog::setGroupTitle( const QString &title )
95{
96 mServerProperties->setTitle( title );
97 mMapLayerServerPropertiesWidget->sync();
98}
99
101{
102 mMapLayerServerPropertiesWidget->save();
103 return mServerProperties->abstract();
104}
105
106void QgsGroupWmsDataDialog::setGroupAbstract( const QString &abstract )
107{
108 mServerProperties->setAbstract( abstract );
109 mMapLayerServerPropertiesWidget->sync();
110}
111
113{
114 return mServerProperties.get();
115}
116
118{
119 return mServerProperties.get();
120}
121
122void QgsGroupWmsDataDialog::updateServerProperties() const
123{
124 if ( !hasTimeDimension() )
125 {
126 mServerProperties->removeWmsDimension( QgsServerWmsDimensionProperties::TIME_DIMENSION_NAME );
127 return;
128 }
129
130 QList<QgsServerWmsDimensionProperties::WmsDimensionInfo> wmsDimensions = mServerProperties->wmsDimensions();
131 auto it = std::find_if( wmsDimensions.begin(), wmsDimensions.end(), []( const QgsMapLayerServerProperties::WmsDimensionInfo &dim ) {
132 return dim.name == QgsServerWmsDimensionProperties::TIME_DIMENSION_NAME;
133 } );
134
135 if ( it == wmsDimensions.end() )
136 {
137 wmsDimensions.append( QgsServerWmsDimensionProperties::WmsDimensionInfo( QgsServerWmsDimensionProperties::TIME_DIMENSION_NAME, timeDimensionDefaultDisplay(), timeDimensionReferenceValue() ) );
138 }
139 else
140 {
141 it->defaultDisplayType = timeDimensionDefaultDisplay();
142 it->setReferenceValue( timeDimensionReferenceValue() );
143 }
144
145 mServerProperties->setWmsDimensions( wmsDimensions );
146}
147
148
150{
151 mMapLayerServerPropertiesWidget->save();
152 QDialog::accept();
153}
154
156{
157 return mComputeTimeDimension->isChecked();
158}
159
161{
162 mComputeTimeDimension->setChecked( hasTimeDimension );
163}
164
166{
167 return mGroupRequestModeCombo->currentData().value<Qgis::WmsGroupRequestMode>();
168}
169
171{
172 mGroupRequestModeCombo->setCurrentIndex( mGroupRequestModeCombo->findData( QVariant::fromValue( groupRequestMode ) ) );
173}
174
175Qgis::WmsDimensionDefaultDisplay QgsGroupWmsDataDialog::timeDimensionDefaultDisplay() const
176{
177 return static_cast<Qgis::WmsDimensionDefaultDisplay>( mDefaultDisplayComboBox->currentData().toInt() );
178}
179
180void QgsGroupWmsDataDialog::setTimeDimensionDefaultDisplay( Qgis::WmsDimensionDefaultDisplay timeDimensionDefaultDisplay )
181{
182 mDefaultDisplayComboBox->setCurrentIndex( mDefaultDisplayComboBox->findData( QVariant( static_cast<int>( timeDimensionDefaultDisplay ) ) ) );
183 mReferenceValueDateTimeEdit->setEnabled( timeDimensionDefaultDisplay == Qgis::WmsDimensionDefaultDisplay::ReferenceValue );
184}
185
186QDateTime QgsGroupWmsDataDialog::timeDimensionReferenceValue() const
187{
188 return mReferenceValueDateTimeEdit->dateTime();
189}
190
191void QgsGroupWmsDataDialog::setTimeDimensionReferenceValue( const QDateTime &timeDimensionReferenceValue )
192{
193 mReferenceValueDateTimeEdit->setDateTime( timeDimensionReferenceValue );
194}
WmsGroupRequestMode
Request mode of groups in a WMS context.
Definition qgis.h:7091
@ Normal
Group and children can be requested.
Definition qgis.h:7092
@ Opaque
Group can be requested, children cannot (appears like a single layer).
Definition qgis.h:7093
WmsDimensionDefaultDisplay
QGIS Server WMS Dimension default display types.
Definition qgis.h:7152
@ ReferenceValue
Display a reference value.
Definition qgis.h:7156
Q_DECL_DEPRECATED void setHasTimeDimension(bool hasTimeDimension)
Sets whether the time dimension should be computed for this group or not.
bool hasTimeDimension() const
Returns whether the time dimension should be computed for this group or not.
Qgis::WmsGroupRequestMode groupRequestMode() const
Returns the request mode of the group.
void setGroupRequestMode(Qgis::WmsGroupRequestMode groupRequestMode)
Sets the request mode of the group.
Q_DECL_DEPRECATED void setGroupAbstract(const QString &abstract)
Sets group WMS abstract.
QgsGroupWmsDataDialog(QWidget *parent=nullptr, Qt::WindowFlags fl=QgsGuiUtils::ModalDialogFlags)
Constructor.
Q_DECL_DEPRECATED void setGroupShortName(const QString &shortName)
Sets group WMS short name.
Q_DECL_DEPRECATED void setGroupTitle(const QString &title)
Sets group WMS title.
Q_DECL_DEPRECATED QString groupAbstract() const
Returns group WMS abstract.
Q_DECL_DEPRECATED QString groupTitle() const
Returns group WMS title.
Q_DECL_DEPRECATED QString groupShortName() const
Returns group WMS short name.
QgsMapLayerServerProperties * serverProperties()
Returns QGIS Server Properties for the layer tree group.
static void enableAutoGeometryRestore(QWidget *widget, const QString &key=QString())
Register the widget to allow its position to be automatically saved and restored when open and closed...
Definition qgsgui.cpp:225
Manages QGIS Server properties for a map layer.
static QMap< Qgis::WmsDimensionDefaultDisplay, QString > wmsDimensionDefaultDisplayDescriptions()
Returns WMS Dimension default display descriptions.
static constexpr const char * TIME_DIMENSION_NAME
const QList< QgsServerWmsDimensionProperties::WmsDimensionInfo > wmsDimensions() const
Returns the QGIS Server WMS Dimension list.
Setting to define QGIS Server WMS Dimension.