QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgsmaplayerserverpropertieswidget.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmaplayerserverpropertieswidget.cpp
3 ---------------------
4 begin : 2025/02/20
5 copyright : (C) 2025 by Julien Cabieces
6 email : julien dot cabieces at oslandia dot 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 "qgsapplication.h"
21
22#include <QRegularExpressionValidator>
23#include <QStandardItemModel>
24
25#include "moc_qgsmaplayerserverpropertieswidget.cpp"
26
28 : QWidget( parent )
29{
30 setupUi( this );
31 connect( buttonRemoveMetadataUrl, &QPushButton::clicked, this, &QgsMapLayerServerPropertiesWidget::removeSelectedMetadataUrl );
32 connect( buttonAddMetadataUrl, &QPushButton::clicked, this, &QgsMapLayerServerPropertiesWidget::addMetadataUrl );
33}
34
36{
37 mServerProperties = serverProperties;
38 sync();
39}
40
42{
43 mHasWfsTitle = hasWfsTitle;
44 mLayerOptWfsTitleLineEdit->setVisible( mHasWfsTitle );
45 mLayerOptWfsTitleLabel->setVisible( mHasWfsTitle );
46}
47
49{
50 return mHasWfsTitle;
51}
52
54{
55 if ( !mServerProperties )
56 return false;
57
58 bool hasChanged = mServerProperties->shortName() != mLayerShortNameLineEdit->text()
59 || mServerProperties->title() != mLayerTitleLineEdit->text()
60 || mServerProperties->abstract() != mLayerAbstractTextEdit->toPlainText()
61 || mServerProperties->keywordList() != mLayerKeywordListLineEdit->text()
62 || mServerProperties->dataUrl() != mLayerDataUrlLineEdit->text()
63 || mServerProperties->dataUrlFormat() != mLayerDataUrlFormatComboBox->currentText()
64 || mServerProperties->attribution() != mLayerAttributionLineEdit->text()
65 || mServerProperties->attributionUrl() != mLayerAttributionUrlLineEdit->text()
66 || mServerProperties->legendUrl() != mLayerLegendUrlLineEdit->text()
67 || mServerProperties->legendUrlFormat() != mLayerLegendUrlFormatComboBox->currentText();
68
69 mServerProperties->setShortName( mLayerShortNameLineEdit->text() );
70 mServerProperties->setTitle( mLayerTitleLineEdit->text() );
71 mServerProperties->setAbstract( mLayerAbstractTextEdit->toPlainText() );
72 mServerProperties->setKeywordList( mLayerKeywordListLineEdit->text() );
73 mServerProperties->setDataUrl( mLayerDataUrlLineEdit->text() );
74 mServerProperties->setDataUrlFormat( mLayerDataUrlFormatComboBox->currentText() );
75 mServerProperties->setAttribution( mLayerAttributionLineEdit->text() );
76 mServerProperties->setAttributionUrl( mLayerAttributionUrlLineEdit->text() );
77 mServerProperties->setLegendUrl( mLayerLegendUrlLineEdit->text() );
78 mServerProperties->setLegendUrlFormat( mLayerLegendUrlFormatComboBox->currentText() );
79
80 if ( !mLayerOptWfsTitleLineEdit->text().isEmpty() && mLayerOptWfsTitleLineEdit->text() != mLayerTitleLineEdit->text() )
81 {
82 mServerProperties->setWfsTitle( mLayerOptWfsTitleLineEdit->text() );
83 hasChanged = true;
84 }
85 else
86 {
87 mServerProperties->setWfsTitle( QString() );
88 }
89
90 // Metadata URL
91 QList<QgsMapLayerServerProperties::MetadataUrl> metaUrls;
92 for ( int row = 0; row < mMetadataUrlModel->rowCount(); row++ )
93 {
95 metaUrl.url = mMetadataUrlModel->item( row, 0 )->text();
96 metaUrl.type = mMetadataUrlModel->item( row, 1 )->text();
97 metaUrl.format = mMetadataUrlModel->item( row, 2 )->text();
98 metaUrls.append( metaUrl );
99
100 // TODO has not necessary changed
101 hasChanged = true;
102 }
103 mServerProperties->setMetadataUrls( metaUrls );
104
105 return hasChanged;
106}
107
109{
110 if ( !mServerProperties )
111 return;
112
113 // WMS Name as layer short name
114 mLayerShortNameLineEdit->setText( mServerProperties->shortName() );
115 // WMS Name validator
116 QValidator *shortNameValidator = new QRegularExpressionValidator( QgsApplication::shortNameRegularExpression(), this );
117 mLayerShortNameLineEdit->setValidator( shortNameValidator );
118
119 //layer title and abstract
120 mLayerTitleLineEdit->setText( mServerProperties->title() );
121
122 if ( mServerProperties->wfsTitle() != mServerProperties->title() )
123 mLayerOptWfsTitleLineEdit->setText( mServerProperties->wfsTitle() );
124
125 mLayerAbstractTextEdit->setPlainText( mServerProperties->abstract() );
126 mLayerKeywordListLineEdit->setText( mServerProperties->keywordList() );
127 mLayerDataUrlLineEdit->setText( mServerProperties->dataUrl() );
128 mLayerDataUrlFormatComboBox->setCurrentIndex(
129 mLayerDataUrlFormatComboBox->findText(
130 mServerProperties->dataUrlFormat()
131 )
132 );
133 //layer attribution
134 mLayerAttributionLineEdit->setText( mServerProperties->attribution() );
135 mLayerAttributionUrlLineEdit->setText( mServerProperties->attributionUrl() );
136
137 // Setup the layer metadata URL
138 tableViewMetadataUrl->setSelectionMode( QAbstractItemView::SingleSelection );
139 tableViewMetadataUrl->setSelectionBehavior( QAbstractItemView::SelectRows );
140 tableViewMetadataUrl->horizontalHeader()->setStretchLastSection( true );
141 tableViewMetadataUrl->horizontalHeader()->setSectionResizeMode( QHeaderView::Stretch );
142
143 mMetadataUrlModel = new QStandardItemModel( tableViewMetadataUrl );
144 mMetadataUrlModel->clear();
145 mMetadataUrlModel->setColumnCount( 3 );
146 QStringList metadataUrlHeaders;
147 metadataUrlHeaders << tr( "URL" ) << tr( "Type" ) << tr( "Format" );
148 mMetadataUrlModel->setHorizontalHeaderLabels( metadataUrlHeaders );
149 tableViewMetadataUrl->setModel( mMetadataUrlModel );
150 tableViewMetadataUrl->setItemDelegate( new MetadataUrlItemDelegate( this ) );
151
152 const QList<QgsMapLayerServerProperties::MetadataUrl> &metaUrls = mServerProperties->metadataUrls();
153 for ( const QgsMapLayerServerProperties::MetadataUrl &metaUrl : metaUrls )
154 {
155 const int row = mMetadataUrlModel->rowCount();
156 mMetadataUrlModel->setItem( row, 0, new QStandardItem( metaUrl.url ) );
157 mMetadataUrlModel->setItem( row, 1, new QStandardItem( metaUrl.type ) );
158 mMetadataUrlModel->setItem( row, 2, new QStandardItem( metaUrl.format ) );
159 }
160
161 // layer legend url
162 mLayerLegendUrlLineEdit->setText( mServerProperties->legendUrl() );
163 mLayerLegendUrlFormatComboBox->setCurrentIndex(
164 mLayerLegendUrlFormatComboBox->findText(
165 mServerProperties->legendUrlFormat()
166 )
167 );
168}
169
170void QgsMapLayerServerPropertiesWidget::addMetadataUrl()
171{
172 const int row = mMetadataUrlModel->rowCount();
173 mMetadataUrlModel->setItem( row, 0, new QStandardItem( QLatin1String() ) );
174 mMetadataUrlModel->setItem( row, 1, new QStandardItem( QLatin1String() ) );
175 mMetadataUrlModel->setItem( row, 2, new QStandardItem( QLatin1String() ) );
176}
177
178void QgsMapLayerServerPropertiesWidget::removeSelectedMetadataUrl()
179{
180 const QModelIndexList selectedRows = tableViewMetadataUrl->selectionModel()->selectedRows();
181 if ( selectedRows.empty() )
182 return;
183 mMetadataUrlModel->removeRow( selectedRows[0].row() );
184}
static QRegularExpression shortNameRegularExpression()
Returns the short name regular expression for line edit validator.
void setHasWfsTitle(bool hasWfsTitle)
Set whether or not server properties widget has to display a WFS title widget.
QgsMapLayerServerPropertiesWidget(QWidget *parent=nullptr)
Constructor.
bool hasWfsTitle() const
Returns true if widget display a WFS title widget.
void setServerProperties(QgsMapLayerServerProperties *serverProperties)
Sets the server properties serverProperties associated with the widget.
bool save()
Saves the settings to the server properties.
void sync()
Updates the widget state to match the current server properties state.
Manages QGIS Server properties for a map layer.
QString format
Format specification of online resource.