QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
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( mLayerDataUrlFormatComboBox->findText( mServerProperties->dataUrlFormat() ) );
129 //layer attribution
130 mLayerAttributionLineEdit->setText( mServerProperties->attribution() );
131 mLayerAttributionUrlLineEdit->setText( mServerProperties->attributionUrl() );
132
133 // Setup the layer metadata URL
134 tableViewMetadataUrl->setSelectionMode( QAbstractItemView::SingleSelection );
135 tableViewMetadataUrl->setSelectionBehavior( QAbstractItemView::SelectRows );
136 tableViewMetadataUrl->horizontalHeader()->setStretchLastSection( true );
137 tableViewMetadataUrl->horizontalHeader()->setSectionResizeMode( QHeaderView::Stretch );
138
139 mMetadataUrlModel = new QStandardItemModel( tableViewMetadataUrl );
140 mMetadataUrlModel->clear();
141 mMetadataUrlModel->setColumnCount( 3 );
142 QStringList metadataUrlHeaders;
143 metadataUrlHeaders << tr( "URL" ) << tr( "Type" ) << tr( "Format" );
144 mMetadataUrlModel->setHorizontalHeaderLabels( metadataUrlHeaders );
145 tableViewMetadataUrl->setModel( mMetadataUrlModel );
146 tableViewMetadataUrl->setItemDelegate( new MetadataUrlItemDelegate( this ) );
147
148 const QList<QgsMapLayerServerProperties::MetadataUrl> &metaUrls = mServerProperties->metadataUrls();
149 for ( const QgsMapLayerServerProperties::MetadataUrl &metaUrl : metaUrls )
150 {
151 const int row = mMetadataUrlModel->rowCount();
152 mMetadataUrlModel->setItem( row, 0, new QStandardItem( metaUrl.url ) );
153 mMetadataUrlModel->setItem( row, 1, new QStandardItem( metaUrl.type ) );
154 mMetadataUrlModel->setItem( row, 2, new QStandardItem( metaUrl.format ) );
155 }
156
157 // layer legend url
158 mLayerLegendUrlLineEdit->setText( mServerProperties->legendUrl() );
159 mLayerLegendUrlFormatComboBox->setCurrentIndex( mLayerLegendUrlFormatComboBox->findText( mServerProperties->legendUrlFormat() ) );
160}
161
162void QgsMapLayerServerPropertiesWidget::addMetadataUrl()
163{
164 const int row = mMetadataUrlModel->rowCount();
165 mMetadataUrlModel->setItem( row, 0, new QStandardItem( QLatin1String() ) );
166 mMetadataUrlModel->setItem( row, 1, new QStandardItem( QLatin1String() ) );
167 mMetadataUrlModel->setItem( row, 2, new QStandardItem( QLatin1String() ) );
168}
169
170void QgsMapLayerServerPropertiesWidget::removeSelectedMetadataUrl()
171{
172 const QModelIndexList selectedRows = tableViewMetadataUrl->selectionModel()->selectedRows();
173 if ( selectedRows.empty() )
174 return;
175 mMetadataUrlModel->removeRow( selectedRows[0].row() );
176}
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.