Skip to content

Commit 675746c

Browse files
committedFeb 15, 2014
wms: use titles in layer name (fixes #4002)
1 parent edfce68 commit 675746c

File tree

3 files changed

+39
-17
lines changed

3 files changed

+39
-17
lines changed
 

‎src/providers/wms/qgswmssourceselect.cpp

Lines changed: 31 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -316,6 +316,7 @@ bool QgsWMSSourceSelect::populateLayerList( QgsWmsProvider *wmsProvider )
316316
lItem->setData( 0, Qt::UserRole + 0, layer->name );
317317
lItem->setData( 0, Qt::UserRole + 1, "" );
318318
lItem->setData( 0, Qt::UserRole + 2, layer->crs );
319+
lItem->setData( 0, Qt::UserRole + 3, layer->title.isEmpty() ? layer->name : layer->title );
319320

320321
// Also insert the styles
321322
// Layer Styles
@@ -331,6 +332,7 @@ bool QgsWMSSourceSelect::populateLayerList( QgsWmsProvider *wmsProvider )
331332

332333
lItem2->setData( 0, Qt::UserRole + 0, layer->name );
333334
lItem2->setData( 0, Qt::UserRole + 1, layer->style[j].name );
335+
lItem2->setData( 0, Qt::UserRole + 3, layer->style[j].title.isEmpty() ? layer->style[j].name : layer->style[j].title );
334336
}
335337
}
336338

@@ -479,6 +481,7 @@ void QgsWMSSourceSelect::addClicked()
479481
{
480482
QStringList layers;
481483
QStringList styles;
484+
QStringList titles;
482485
QString format;
483486
QString crs;
484487

@@ -492,7 +495,7 @@ void QgsWMSSourceSelect::addClicked()
492495

493496
if ( lstTilesets->selectedItems().isEmpty() )
494497
{
495-
collectSelectedLayers( layers, styles );
498+
collectSelectedLayers( layers, styles, titles );
496499
crs = mCRS;
497500
format = mFormats[ mImageFormatGroup->checkedId()].format;
498501
}
@@ -504,6 +507,7 @@ void QgsWMSSourceSelect::addClicked()
504507
format = item->data( Qt::UserRole + 1 ).toString();
505508
styles = QStringList( item->data( Qt::UserRole + 2 ).toString() );
506509
crs = item->data( Qt::UserRole + 4 ).toString();
510+
titles = QStringList( item->data( Qt::UserRole + 5 ).toString() );
507511

508512
uri.setParam( "tileMatrixSet", item->data( Qt::UserRole + 3 ).toStringList() );
509513

@@ -561,7 +565,7 @@ void QgsWMSSourceSelect::addClicked()
561565
}
562566

563567
emit addRasterLayer( uri.encodedUri(),
564-
leLayerName->text().isEmpty() ? layers.join( "/" ) : leLayerName->text(),
568+
leLayerName->text().isEmpty() ? titles.join( "/" ) : leLayerName->text(),
565569
"wms" );
566570
}
567571

@@ -727,21 +731,23 @@ void QgsWMSSourceSelect::applySelectionConstraints( QTreeWidgetItem *item )
727731
}
728732
}
729733

730-
void QgsWMSSourceSelect::collectNamedLayers( QTreeWidgetItem *item, QStringList &layers, QStringList &styles )
734+
void QgsWMSSourceSelect::collectNamedLayers( QTreeWidgetItem *item, QStringList &layers, QStringList &styles, QStringList &titles )
731735
{
732736
QString layerName = item->data( 0, Qt::UserRole + 0 ).toString();
733737
QString styleName = item->data( 0, Qt::UserRole + 1 ).toString();
738+
QString titleName = item->data( 0, Qt::UserRole + 3 ).toString();
734739
if ( layerName.isEmpty() )
735740
{
736741
// layer group
737742
for ( int i = 0; i < item->childCount(); i++ )
738-
collectNamedLayers( item->child( i ), layers, styles );
743+
collectNamedLayers( item->child( i ), layers, styles, titles );
739744
}
740745
else if ( styleName.isEmpty() )
741746
{
742747
// named layers
743748
layers << layerName;
744749
styles << "";
750+
titles << titleName;
745751

746752
if ( mCRSs.isEmpty() )
747753
mCRSs = item->data( 0, Qt::UserRole + 2 ).toStringList().toSet();
@@ -766,6 +772,7 @@ void QgsWMSSourceSelect::on_lstLayers_itemSelectionChanged()
766772
// selected layers with styles
767773
QStringList layers;
768774
QStringList styles;
775+
QStringList titles;
769776

770777
mCRSs.clear();
771778

@@ -774,17 +781,19 @@ void QgsWMSSourceSelect::on_lstLayers_itemSelectionChanged()
774781
{
775782
QString layerName = item->data( 0, Qt::UserRole + 0 ).toString();
776783
QString styleName = item->data( 0, Qt::UserRole + 1 ).toString();
784+
QString titleName = item->data( 0, Qt::UserRole + 3 ).toString();
777785

778786
if ( layerName.isEmpty() )
779787
{
780788
// layers groups: collect named layers of group and add using the default style
781-
collectNamedLayers( item, layers, styles );
789+
collectNamedLayers( item, layers, styles, titles );
782790
}
783791
else if ( styleName.isEmpty() )
784792
{
785793
// named layer: add using default style
786794
layers << layerName;
787795
styles << "";
796+
titles << titleName;
788797
if ( mCRSs.isEmpty() )
789798
mCRSs = item->data( 0, Qt::UserRole + 2 ).toStringList().toSet();
790799
else
@@ -795,6 +804,7 @@ void QgsWMSSourceSelect::on_lstLayers_itemSelectionChanged()
795804
// style: add named layer with selected style
796805
layers << layerName;
797806
styles << styleName;
807+
titles << titleName;
798808
if ( mCRSs.isEmpty() )
799809
mCRSs = item->parent()->data( 0, Qt::UserRole + 2 ).toStringList().toSet();
800810
else
@@ -840,7 +850,7 @@ void QgsWMSSourceSelect::on_lstLayers_itemSelectionChanged()
840850
labelCoordRefSys->setText( "" );
841851
}
842852

843-
updateLayerOrderTab( layers, styles );
853+
updateLayerOrderTab( layers, styles, titles );
844854
updateButtons();
845855
}
846856

@@ -885,7 +895,7 @@ void QgsWMSSourceSelect::updateButtons()
885895
// disable tilesets, when layer are selected or no tilesets available
886896
lstLayers->setEnabled( true );
887897
tabServers->setTabEnabled( tabServers->indexOf( tabLayerOrder ), mLayerOrderTreeWidget->topLevelItemCount() > 0 );
888-
tabServers->setTabEnabled( tabServers->indexOf( tabTilesets ), mLayerOrderTreeWidget->topLevelItemCount() == 0 && lstTilesets->rowCount() > 0 );
898+
tabServers->setTabEnabled( tabServers->indexOf( tabTilesets ), mLayerOrderTreeWidget->topLevelItemCount() == 0 && lstTilesets->rowCount() > 0 );
889899
btnGrpImageEncoding->setEnabled( true );
890900
}
891901

@@ -951,9 +961,9 @@ void QgsWMSSourceSelect::updateButtons()
951961
}
952962
else
953963
{
954-
QStringList layers, styles;
955-
collectSelectedLayers( layers, styles );
956-
mLastLayerName = layers.join( "/" );
964+
QStringList layers, styles, titles;
965+
collectSelectedLayers( layers, styles, titles );
966+
mLastLayerName = titles.join( "/" );
957967
leLayerName->setText( mLastLayerName );
958968
}
959969
}
@@ -976,14 +986,15 @@ QString QgsWMSSourceSelect::connectionInfo()
976986
return mConnectionInfo;
977987
}
978988

979-
void QgsWMSSourceSelect::collectSelectedLayers( QStringList &layers, QStringList &styles )
989+
void QgsWMSSourceSelect::collectSelectedLayers( QStringList &layers, QStringList &styles, QStringList &titles )
980990
{
981991
//go through list in layer order tab
982992
QStringList selectedLayerList;
983993
for ( int i = mLayerOrderTreeWidget->topLevelItemCount() - 1; i >= 0; --i )
984994
{
985995
layers << mLayerOrderTreeWidget->topLevelItem( i )->text( 0 );
986996
styles << mLayerOrderTreeWidget->topLevelItem( i )->text( 1 );
997+
titles << mLayerOrderTreeWidget->topLevelItem( i )->text( 2 );
987998
}
988999
}
9891000

@@ -1247,10 +1258,12 @@ void QgsWMSSourceSelect::on_mLayerUpButton_clicked()
12471258
return; //item not existing or already on top
12481259
}
12491260

1250-
QTreeWidgetItem* selectedItem = mLayerOrderTreeWidget->takeTopLevelItem( selectedIndex );
1261+
QTreeWidgetItem *selectedItem = mLayerOrderTreeWidget->takeTopLevelItem( selectedIndex );
12511262
mLayerOrderTreeWidget->insertTopLevelItem( selectedIndex - 1, selectedItem );
12521263
mLayerOrderTreeWidget->clearSelection();
12531264
selectedItem->setSelected( true );
1265+
1266+
updateButtons();
12541267
}
12551268

12561269
void QgsWMSSourceSelect::on_mLayerDownButton_clicked()
@@ -1270,17 +1283,20 @@ void QgsWMSSourceSelect::on_mLayerDownButton_clicked()
12701283
mLayerOrderTreeWidget->insertTopLevelItem( selectedIndex + 1, selectedItem );
12711284
mLayerOrderTreeWidget->clearSelection();
12721285
selectedItem->setSelected( true );
1286+
1287+
updateButtons();
12731288
}
12741289

1275-
void QgsWMSSourceSelect::updateLayerOrderTab( const QStringList& newLayerList, const QStringList& newStyleList )
1290+
void QgsWMSSourceSelect::updateLayerOrderTab( const QStringList& newLayerList, const QStringList& newStyleList, const QStringList &newTitleList )
12761291
{
12771292
//check, if each layer / style combination is already contained in the layer order tab
12781293
//if not, add it to the top of the list
12791294

12801295
QStringList::const_iterator layerListIt = newLayerList.constBegin();
12811296
QStringList::const_iterator styleListIt = newStyleList.constBegin();
1297+
QStringList::const_iterator titleListIt = newTitleList.constBegin();
12821298

1283-
for ( ; layerListIt != newLayerList.constEnd(); ++layerListIt, ++styleListIt )
1299+
for ( ; layerListIt != newLayerList.constEnd(); ++layerListIt, ++styleListIt, ++titleListIt )
12841300
{
12851301
bool combinationExists = false;
12861302
for ( int i = 0; i < mLayerOrderTreeWidget->topLevelItemCount(); ++i )
@@ -1298,6 +1314,7 @@ void QgsWMSSourceSelect::updateLayerOrderTab( const QStringList& newLayerList, c
12981314
QTreeWidgetItem* newItem = new QTreeWidgetItem();
12991315
newItem->setText( 0, *layerListIt );
13001316
newItem->setText( 1, *styleListIt );
1317+
newItem->setText( 2, *titleListIt );
13011318
mLayerOrderTreeWidget->addTopLevelItem( newItem );
13021319
}
13031320

‎src/providers/wms/qgswmssourceselect.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ class QgsWMSSourceSelect : public QDialog, private Ui::QgsWMSSourceSelectBase
173173
QString descriptionForAuthId( QString authId );
174174

175175
//! Keeps the layer order list up-to-date with changed layers and styles
176-
void updateLayerOrderTab( const QStringList& newLayerList, const QStringList& newStyleList );
176+
void updateLayerOrderTab( const QStringList& newLayerList, const QStringList& newStyleList, const QStringList &newTitleList );
177177

178178
//! Name for selected connection
179179
QString mConnName;
@@ -196,10 +196,10 @@ class QgsWMSSourceSelect : public QDialog, private Ui::QgsWMSSourceSelectBase
196196
void addWMSListItem( const QDomElement& el, int row, int column );
197197

198198
void applySelectionConstraints( QTreeWidgetItem *item );
199-
void collectNamedLayers( QTreeWidgetItem *item, QStringList &layers, QStringList &styles );
199+
void collectNamedLayers( QTreeWidgetItem *item, QStringList &layers, QStringList &styles, QStringList &titles );
200200
void enableLayersForCrs( QTreeWidgetItem *item );
201201

202-
void collectSelectedLayers( QStringList &layers, QStringList &styles );
202+
void collectSelectedLayers( QStringList &layers, QStringList &styles, QStringList &titles );
203203
QString selectedImageEncoding();
204204

205205
QList<QTreeWidgetItem*> mCurrentSelection;

‎src/ui/qgswmssourceselectbase.ui

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,11 @@
318318
<string>Style</string>
319319
</property>
320320
</column>
321+
<column>
322+
<property name="text">
323+
<string>Title</string>
324+
</property>
325+
</column>
321326
</widget>
322327
</item>
323328
</layout>

0 commit comments

Comments
 (0)
Please sign in to comment.