@@ -663,20 +663,47 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
663
663
}
664
664
665
665
bool wmtsProject = QgsProject::instance ()->readBoolEntry ( QStringLiteral ( " WMTSLayers" ), QStringLiteral ( " Project" ) );
666
+ bool wmtsPngProject = QgsProject::instance ()->readBoolEntry ( QStringLiteral ( " WMTSPngLayers" ), QStringLiteral ( " Project" ) );
667
+ bool wmtsJpegProject = QgsProject::instance ()->readBoolEntry ( QStringLiteral ( " WMTSJpegLayers" ), QStringLiteral ( " Project" ) );
666
668
QStringList wmtsGroupNameList = QgsProject::instance ()->readListEntry ( QStringLiteral ( " WMTSLayers" ), QStringLiteral ( " Group" ) );
669
+ QStringList wmtsPngGroupNameList = QgsProject::instance ()->readListEntry ( QStringLiteral ( " WMTSPngLayers" ), QStringLiteral ( " Group" ) );
670
+ QStringList wmtsJpegGroupNameList = QgsProject::instance ()->readListEntry ( QStringLiteral ( " WMTSJpegLayers" ), QStringLiteral ( " Group" ) );
667
671
QStringList wmtsLayerIdList = QgsProject::instance ()->readListEntry ( QStringLiteral ( " WMTSLayers" ), QStringLiteral ( " Layer" ) );
672
+ QStringList wmtsPngLayerIdList = QgsProject::instance ()->readListEntry ( QStringLiteral ( " WMTSPngLayers" ), QStringLiteral ( " Layer" ) );
673
+ QStringList wmtsJpegLayerIdList = QgsProject::instance ()->readListEntry ( QStringLiteral ( " WMTSJpegLayers" ), QStringLiteral ( " Layer" ) );
668
674
669
675
QgsTreeWidgetItem *projItem = new QgsTreeWidgetItem ( QStringList () << QStringLiteral ( " Project" ) << QLatin1String ( " " ) );
670
676
projItem->setFlags ( projItem->flags () | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable );
671
- if ( wmtsProject )
672
- projItem->setCheckState ( 1 , Qt::Checked );
673
- else
674
- projItem->setCheckState ( 1 , Qt::Unchecked );
677
+ projItem->setCheckState ( 1 , wmtsProject ? Qt::Checked : Qt::Unchecked );
678
+ projItem->setCheckState ( 2 , wmtsPngProject ? Qt::Checked : Qt::Unchecked );
679
+ projItem->setCheckState ( 3 , wmtsJpegProject ? Qt::Checked : Qt::Unchecked );
675
680
projItem->setData ( 0 , Qt::UserRole, " project" );
676
681
twWmtsLayers->addTopLevelItem ( projItem );
677
- popupulateWmtsTree ( QgsProject::instance ()->layerTreeRoot (), projItem, wmtsGroupNameList, wmtsLayerIdList );
682
+ populateWmtsTree ( QgsProject::instance ()->layerTreeRoot (), projItem );
678
683
projItem->setExpanded ( true );
679
684
twWmtsLayers->header ()->resizeSections ( QHeaderView::ResizeToContents );
685
+ Q_FOREACH ( QTreeWidgetItem *item, twWmtsLayers->findItems ( " " , Qt::MatchContains | Qt::MatchRecursive, 1 ) )
686
+ {
687
+ /* if ( !item->checkState( 1 ) )
688
+ continue;*/
689
+
690
+ QString t = item->data ( 0 , Qt::UserRole ).toString ();
691
+ if ( t == " group" )
692
+ {
693
+ QString gName = item->data ( 0 , Qt::UserRole + 1 ).toString ();
694
+ item->setCheckState ( 1 , wmtsGroupNameList.contains ( gName ) ? Qt::Checked : Qt::Unchecked );
695
+ item->setCheckState ( 2 , wmtsPngGroupNameList.contains ( gName ) ? Qt::Checked : Qt::Unchecked );
696
+ item->setCheckState ( 3 , wmtsJpegGroupNameList.contains ( gName ) ? Qt::Checked : Qt::Unchecked );
697
+ }
698
+ else if ( t == " layer" )
699
+ {
700
+ QString lId = item->data ( 0 , Qt::UserRole + 1 ).toString ();
701
+ item->setCheckState ( 1 , wmtsLayerIdList.contains ( lId ) ? Qt::Checked : Qt::Unchecked );
702
+ item->setCheckState ( 2 , wmtsPngLayerIdList.contains ( lId ) ? Qt::Checked : Qt::Unchecked );
703
+ item->setCheckState ( 3 , wmtsJpegLayerIdList.contains ( lId ) ? Qt::Checked : Qt::Unchecked );
704
+ }
705
+ }
706
+ connect ( twWmtsLayers, &QTreeWidget::itemChanged, this , &QgsProjectProperties::twWmtsItemChanged );
680
707
681
708
mWFSUrlLineEdit ->setText ( QgsProject::instance ()->readEntry ( QStringLiteral ( " WFSUrl" ), QStringLiteral ( " /" ), QLatin1String ( " " ) ) );
682
709
QStringList wfsLayerIdList = QgsProject::instance ()->readListEntry ( QStringLiteral ( " WFSLayers" ), QStringLiteral ( " /" ) );
@@ -1239,8 +1266,14 @@ void QgsProjectProperties::apply()
1239
1266
}
1240
1267
1241
1268
bool wmtsProject = false ;
1269
+ bool wmtsPngProject = false ;
1270
+ bool wmtsJpegProject = false ;
1242
1271
QStringList wmtsGroupList;
1272
+ QStringList wmtsPngGroupList;
1273
+ QStringList wmtsJpegGroupList;
1243
1274
QStringList wmtsLayerList;
1275
+ QStringList wmtsPngLayerList;
1276
+ QStringList wmtsJpegLayerList;
1244
1277
Q_FOREACH ( const QTreeWidgetItem *item, twWmtsLayers->findItems ( " " , Qt::MatchContains | Qt::MatchRecursive, 1 ) )
1245
1278
{
1246
1279
if ( !item->checkState ( 1 ) )
@@ -1250,19 +1283,37 @@ void QgsProjectProperties::apply()
1250
1283
if ( t == " project" )
1251
1284
{
1252
1285
wmtsProject = true ;
1286
+ wmtsPngProject = item->checkState ( 2 );
1287
+ wmtsJpegProject = item->checkState ( 3 );
1253
1288
}
1254
1289
else if ( t == " group" )
1255
1290
{
1256
- wmtsGroupList << item->data ( 0 , Qt::UserRole + 1 ).toString ();
1291
+ QString gName = item->data ( 0 , Qt::UserRole + 1 ).toString ();
1292
+ wmtsGroupList << gName ;
1293
+ if ( item->checkState ( 2 ) )
1294
+ wmtsPngGroupList << gName ;
1295
+ if ( item->checkState ( 3 ) )
1296
+ wmtsJpegGroupList << gName ;
1257
1297
}
1258
1298
else if ( t == " layer" )
1259
1299
{
1260
- wmtsLayerList << item->data ( 0 , Qt::UserRole + 1 ).toString ();
1300
+ QString lId = item->data ( 0 , Qt::UserRole + 1 ).toString ();
1301
+ wmtsLayerList << lId;
1302
+ if ( item->checkState ( 2 ) )
1303
+ wmtsPngLayerList << lId;
1304
+ if ( item->checkState ( 3 ) )
1305
+ wmtsJpegLayerList << lId;
1261
1306
}
1262
1307
}
1263
1308
QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSLayers" ), QStringLiteral ( " Project" ), wmtsProject );
1309
+ QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSPngLayers" ), QStringLiteral ( " Project" ), wmtsPngProject );
1310
+ QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSJpegLayers" ), QStringLiteral ( " Project" ), wmtsJpegProject );
1264
1311
QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSLayers" ), QStringLiteral ( " Group" ), wmtsGroupList );
1312
+ QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSPngLayers" ), QStringLiteral ( " Group" ), wmtsPngGroupList );
1313
+ QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSJpegLayers" ), QStringLiteral ( " Group" ), wmtsJpegGroupList );
1265
1314
QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSLayers" ), QStringLiteral ( " Layer" ), wmtsLayerList );
1315
+ QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSPngLayers" ), QStringLiteral ( " Layer" ), wmtsPngLayerList );
1316
+ QgsProject::instance ()->writeEntry ( QStringLiteral ( " WMTSJpegLayers" ), QStringLiteral ( " Layer" ), wmtsJpegLayerList );
1266
1317
1267
1318
QgsProject::instance ()->writeEntry ( QStringLiteral ( " WFSUrl" ), QStringLiteral ( " /" ), mWFSUrlLineEdit ->text () );
1268
1319
QStringList wfsLayerList;
@@ -1358,6 +1409,31 @@ void QgsProjectProperties::showProjectionsTab()
1358
1409
mOptionsListWidget ->setCurrentRow ( 2 );
1359
1410
}
1360
1411
1412
+ void QgsProjectProperties::twWmtsItemChanged ( QTreeWidgetItem *item, int column )
1413
+ {
1414
+ if ( column == 1 && !item->checkState ( 1 ) )
1415
+ {
1416
+ item->setCheckState ( 2 , Qt::Unchecked );
1417
+ item->setCheckState ( 3 , Qt::Unchecked );
1418
+ }
1419
+ else if ( column == 1 && item->checkState ( 1 ) &&
1420
+ !item->checkState ( 2 ) && !item->checkState ( 3 ) )
1421
+ {
1422
+ item->setCheckState ( 2 , Qt::Checked );
1423
+ item->setCheckState ( 3 , Qt::Checked );
1424
+ }
1425
+ else if ( ( column == 2 && item->checkState ( 2 ) ) ||
1426
+ ( column == 3 && item->checkState ( 3 ) ) )
1427
+ {
1428
+ item->setCheckState ( 1 , Qt::Checked );
1429
+ }
1430
+ else if ( ( column == 2 && !item->checkState ( 2 ) && !item->checkState ( 3 ) ) ||
1431
+ ( column == 3 && !item->checkState ( 2 ) && !item->checkState ( 3 ) ) )
1432
+ {
1433
+ item->setCheckState ( 1 , Qt::Unchecked );
1434
+ }
1435
+ }
1436
+
1361
1437
void QgsProjectProperties::cbxWFSPubliedStateChanged ( int aIdx )
1362
1438
{
1363
1439
QCheckBox *cb = qobject_cast<QCheckBox *>( twWFSLayers->cellWidget ( aIdx, 1 ) );
@@ -1955,39 +2031,39 @@ void QgsProjectProperties::resetPythonMacros()
1955
2031
" def closeProject():\n pass\n " );
1956
2032
}
1957
2033
1958
- void QgsProjectProperties::popupulateWmtsTree ( QgsLayerTreeGroup *treeGroup, QgsTreeWidgetItem *treeItem, const QStringList &groupNames, const QStringList &layerIds )
2034
+ void QgsProjectProperties::populateWmtsTree ( const QgsLayerTreeGroup *treeGroup, QgsTreeWidgetItem *treeItem )
1959
2035
{
1960
- QList< QgsLayerTreeNode * > treeGroupChildren = treeGroup->children ();
1961
- for ( int i = 0 ; i < treeGroupChildren.size (); ++i )
2036
+ Q_FOREACH ( QgsLayerTreeNode *treeNode, treeGroup->children () )
1962
2037
{
1963
- QgsTreeWidgetItem *childItem;
1964
- childItem->setFlags ( childItem->flags () | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable );
1965
- QgsLayerTreeNode *treeNode = treeGroupChildren.at ( i );
2038
+ QgsTreeWidgetItem *childItem = nullptr ;
1966
2039
if ( treeNode->nodeType () == QgsLayerTreeNode::NodeGroup )
1967
2040
{
1968
2041
QgsLayerTreeGroup *treeGroupChild = static_cast <QgsLayerTreeGroup *>( treeNode );
1969
- childItem = new QgsTreeWidgetItem ( QStringList () << treeGroupChild->name () << QLatin1String ( " " ) );
1970
- if ( groupNames. contains ( treeGroupChild-> name () ) )
1971
- childItem-> setCheckState ( 1 , Qt::Checked );
1972
- else
1973
- childItem-> setCheckState ( 1 , Qt::Unchecked );
2042
+ QString gName = treeGroupChild->name ();
2043
+
2044
+ childItem = new QgsTreeWidgetItem ( QStringList () << gName );
2045
+ childItem-> setFlags ( childItem-> flags () | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable );
2046
+
1974
2047
childItem->setData ( 0 , Qt::UserRole, " group" );
1975
- childItem->setData ( 0 , Qt::UserRole + 1 , treeGroupChild->name () );
2048
+ childItem->setData ( 0 , Qt::UserRole + 1 , gName );
2049
+
1976
2050
treeItem->addChild ( childItem );
1977
- popupulateWmtsTree ( treeGroupChild, childItem, groupNames, layerIds );
2051
+
2052
+ populateWmtsTree ( treeGroupChild, childItem );
2053
+
1978
2054
treeItem->setExpanded ( true );
1979
2055
}
1980
2056
else
1981
2057
{
1982
2058
QgsLayerTreeLayer *treeLayer = static_cast <QgsLayerTreeLayer *>( treeNode );
1983
2059
QgsMapLayer *l = treeLayer->layer ();
1984
- childItem = new QgsTreeWidgetItem ( QStringList () << l->name () << QLatin1String ( " " ) );
1985
- if ( layerIds.contains ( l->id () ) )
1986
- childItem->setCheckState ( 1 , Qt::Checked );
1987
- else
1988
- childItem->setCheckState ( 1 , Qt::Unchecked );
2060
+
2061
+ childItem = new QgsTreeWidgetItem ( QStringList () << l->name () );
2062
+ childItem->setFlags ( childItem->flags () | Qt::ItemIsUserCheckable | Qt::ItemIsSelectable );
2063
+
1989
2064
childItem->setData ( 0 , Qt::UserRole, " layer" );
1990
2065
childItem->setData ( 0 , Qt::UserRole + 1 , l->id () );
2066
+
1991
2067
treeItem->addChild ( childItem );
1992
2068
}
1993
2069
}
0 commit comments