@@ -898,6 +898,92 @@ void QgsWMSProjectParser::addDrawingOrder( QDomElement elem, bool useDrawingOrde
898
898
}
899
899
}
900
900
901
+
902
+ void QgsWMSProjectParser::addLayerStyles ( QgsMapLayer* currentLayer, QDomDocument& doc, QDomElement& layerElem, const QString& version ) const
903
+ {
904
+ foreach ( const QString& styleName, currentLayer->styleManager ()->styles () )
905
+ {
906
+ if ( styleName.isEmpty () )
907
+ continue ; // do not explicitly list the default style with no name
908
+
909
+ QDomElement styleElem = doc.createElement ( " Style" );
910
+ QDomElement styleNameElem = doc.createElement ( " Name" );
911
+ QDomText styleNameText = doc.createTextNode ( styleName );
912
+ styleNameElem.appendChild ( styleNameText );
913
+ QDomElement styleTitleElem = doc.createElement ( " Title" );
914
+ QDomText styleTitleText = doc.createTextNode ( styleName );
915
+ styleTitleElem.appendChild ( styleTitleText );
916
+ styleElem.appendChild ( styleNameElem );
917
+ styleElem.appendChild ( styleTitleElem );
918
+
919
+ // QString LegendURL for explicit layerbased GetLegendGraphic request
920
+ QDomElement getLayerLegendGraphicElem = doc.createElement ( " LegendURL" );
921
+ QString hrefString = currentLayer->legendUrl ();
922
+ bool customHrefString;
923
+ if ( !hrefString.isEmpty () )
924
+ {
925
+ customHrefString = true ;
926
+ }
927
+ else
928
+ {
929
+ customHrefString = false ;
930
+ hrefString = serviceUrl ();
931
+ }
932
+ if ( hrefString.isEmpty () )
933
+ {
934
+ hrefString = getCapaServiceUrl ( doc );
935
+ }
936
+ if ( !hrefString.isEmpty () )
937
+ {
938
+ QStringList getLayerLegendGraphicFormats;
939
+ if ( !customHrefString )
940
+ {
941
+ getLayerLegendGraphicFormats << " image/png" ; // << "jpeg" << "image/jpeg"
942
+
943
+ }
944
+ else
945
+ {
946
+ getLayerLegendGraphicFormats << currentLayer->legendUrlFormat ();
947
+ }
948
+
949
+ for ( int i = 0 ; i < getLayerLegendGraphicFormats.size (); ++i )
950
+ {
951
+ QDomElement getLayerLegendGraphicFormatElem = doc.createElement ( " Format" );
952
+ QString getLayerLegendGraphicFormat = getLayerLegendGraphicFormats[i];
953
+ QDomText getLayerLegendGraphicFormatText = doc.createTextNode ( getLayerLegendGraphicFormat );
954
+ getLayerLegendGraphicFormatElem.appendChild ( getLayerLegendGraphicFormatText );
955
+ getLayerLegendGraphicElem.appendChild ( getLayerLegendGraphicFormatElem );
956
+ }
957
+
958
+ // no parameters on custom hrefUrl, because should link directly to graphic
959
+ if ( !customHrefString )
960
+ {
961
+ QUrl mapUrl ( hrefString );
962
+ mapUrl.addQueryItem ( " SERVICE" , " WMS" );
963
+ mapUrl.addQueryItem ( " VERSION" , version );
964
+ mapUrl.addQueryItem ( " REQUEST" , " GetLegendGraphic" );
965
+ mapUrl.addQueryItem ( " LAYER" , mProjectParser ->useLayerIDs () ? currentLayer->id () : currentLayer->name () );
966
+ mapUrl.addQueryItem ( " FORMAT" , " image/png" );
967
+ mapUrl.addQueryItem ( " STYLE" , styleNameText.data () );
968
+ if ( version == " 1.3.0" )
969
+ {
970
+ mapUrl.addQueryItem ( " SLD_VERSION" , " 1.1.0" );
971
+ }
972
+ hrefString = mapUrl.toString ();
973
+ }
974
+
975
+ QDomElement getLayerLegendGraphicORElem = doc.createElement ( " OnlineResource" );
976
+ getLayerLegendGraphicORElem.setAttribute ( " xmlns:xlink" , " http://www.w3.org/1999/xlink" );
977
+ getLayerLegendGraphicORElem.setAttribute ( " xlink:type" , " simple" );
978
+ getLayerLegendGraphicORElem.setAttribute ( " xlink:href" , hrefString );
979
+ getLayerLegendGraphicElem.appendChild ( getLayerLegendGraphicORElem );
980
+ styleElem.appendChild ( getLayerLegendGraphicElem );
981
+ }
982
+ layerElem.appendChild ( styleElem );
983
+ }
984
+ }
985
+
986
+
901
987
void QgsWMSProjectParser::addLayers ( QDomDocument &doc,
902
988
QDomElement &parentLayer,
903
989
const QDomElement &legendElem,
@@ -1079,81 +1165,8 @@ void QgsWMSProjectParser::addLayers( QDomDocument &doc,
1079
1165
QgsConfigParserUtils::appendLayerBoundingBoxes ( layerElem, doc, currentLayer->extent (), currentLayer->crs () );
1080
1166
}
1081
1167
1082
- // only one default style in project file mode
1083
- QDomElement styleElem = doc.createElement ( " Style" );
1084
- QDomElement styleNameElem = doc.createElement ( " Name" );
1085
- QDomText styleNameText = doc.createTextNode ( " default" );
1086
- styleNameElem.appendChild ( styleNameText );
1087
- QDomElement styleTitleElem = doc.createElement ( " Title" );
1088
- QDomText styleTitleText = doc.createTextNode ( " default" );
1089
- styleTitleElem.appendChild ( styleTitleText );
1090
- styleElem.appendChild ( styleNameElem );
1091
- styleElem.appendChild ( styleTitleElem );
1092
-
1093
- // QString LegendURL for explicit layerbased GetLegendGraphic request
1094
- QDomElement getLayerLegendGraphicElem = doc.createElement ( " LegendURL" );
1095
- QString hrefString = currentLayer->legendUrl ();
1096
- bool customHrefString;
1097
- if ( !hrefString.isEmpty () )
1098
- {
1099
- customHrefString = true ;
1100
- }
1101
- else
1102
- {
1103
- customHrefString = false ;
1104
- hrefString = serviceUrl ();
1105
- }
1106
- if ( hrefString.isEmpty () )
1107
- {
1108
- hrefString = getCapaServiceUrl ( doc );
1109
- }
1110
- if ( !hrefString.isEmpty () )
1111
- {
1112
- QStringList getLayerLegendGraphicFormats;
1113
- if ( !customHrefString )
1114
- {
1115
- getLayerLegendGraphicFormats << " image/png" ; // << "jpeg" << "image/jpeg"
1116
-
1117
- }
1118
- else
1119
- {
1120
- getLayerLegendGraphicFormats << currentLayer->legendUrlFormat ();
1121
- }
1122
-
1123
- for ( int i = 0 ; i < getLayerLegendGraphicFormats.size (); ++i )
1124
- {
1125
- QDomElement getLayerLegendGraphicFormatElem = doc.createElement ( " Format" );
1126
- QString getLayerLegendGraphicFormat = getLayerLegendGraphicFormats[i];
1127
- QDomText getLayerLegendGraphicFormatText = doc.createTextNode ( getLayerLegendGraphicFormat );
1128
- getLayerLegendGraphicFormatElem.appendChild ( getLayerLegendGraphicFormatText );
1129
- getLayerLegendGraphicElem.appendChild ( getLayerLegendGraphicFormatElem );
1130
- }
1131
-
1132
- // no parameters on custom hrefUrl, because should link directly to graphic
1133
- if ( !customHrefString )
1134
- {
1135
- QUrl mapUrl ( hrefString );
1136
- mapUrl.addQueryItem ( " SERVICE" , " WMS" );
1137
- mapUrl.addQueryItem ( " VERSION" , version );
1138
- mapUrl.addQueryItem ( " REQUEST" , " GetLegendGraphic" );
1139
- mapUrl.addQueryItem ( " LAYER" , mProjectParser ->useLayerIDs () ? currentLayer->id () : currentLayer->name () );
1140
- mapUrl.addQueryItem ( " FORMAT" , " image/png" );
1141
- mapUrl.addQueryItem ( " STYLE" , styleNameText.data () );
1142
- if ( version == " 1.3.0" )
1143
- {
1144
- mapUrl.addQueryItem ( " SLD_VERSION" , " 1.1.0" );
1145
- }
1146
- hrefString = mapUrl.toString ();
1147
- }
1148
-
1149
- QDomElement getLayerLegendGraphicORElem = doc.createElement ( " OnlineResource" );
1150
- getLayerLegendGraphicORElem.setAttribute ( " xmlns:xlink" , " http://www.w3.org/1999/xlink" );
1151
- getLayerLegendGraphicORElem.setAttribute ( " xlink:type" , " simple" );
1152
- getLayerLegendGraphicORElem.setAttribute ( " xlink:href" , hrefString );
1153
- getLayerLegendGraphicElem.appendChild ( getLayerLegendGraphicORElem );
1154
- styleElem.appendChild ( getLayerLegendGraphicElem );
1155
- }
1156
- layerElem.appendChild ( styleElem );
1168
+ // add details about supported styles of the layer
1169
+ addLayerStyles ( currentLayer, doc, layerElem, version );
1157
1170
1158
1171
// min/max scale denominatormScaleBasedVisibility
1159
1172
if ( currentLayer->hasScaleBasedVisibility () )
@@ -1276,6 +1289,33 @@ void QgsWMSProjectParser::addLayers( QDomDocument &doc,
1276
1289
}
1277
1290
}
1278
1291
1292
+
1293
+ void QgsWMSProjectParser::addOWSLayerStyles ( QgsMapLayer* currentLayer, QDomDocument& doc, QDomElement& layerElem ) const
1294
+ {
1295
+ foreach ( const QString& styleName, currentLayer->styleManager ()->styles () )
1296
+ {
1297
+ if ( styleName.isEmpty () )
1298
+ continue ; // do not explicitly list the default style with no name
1299
+
1300
+ QDomElement styleListElem = doc.createElement ( " StyleList" );
1301
+ // only one default style in project file mode
1302
+ QDomElement styleElem = doc.createElement ( " Style" );
1303
+ styleElem.setAttribute ( " current" , " true" );
1304
+ QDomElement styleNameElem = doc.createElement ( " Name" );
1305
+ QDomText styleNameText = doc.createTextNode ( styleName );
1306
+ styleNameElem.appendChild ( styleNameText );
1307
+ QDomElement styleTitleElem = doc.createElement ( " Title" );
1308
+ QDomText styleTitleText = doc.createTextNode ( styleName );
1309
+ styleTitleElem.appendChild ( styleTitleText );
1310
+ styleElem.appendChild ( styleNameElem );
1311
+ styleElem.appendChild ( styleTitleElem );
1312
+ styleListElem.appendChild ( styleElem );
1313
+ layerElem.appendChild ( styleListElem );
1314
+ }
1315
+ }
1316
+
1317
+
1318
+
1279
1319
void QgsWMSProjectParser::addOWSLayers ( QDomDocument &doc,
1280
1320
QDomElement &parentElem,
1281
1321
const QDomElement &legendElem,
@@ -1475,20 +1515,7 @@ void QgsWMSProjectParser::addOWSLayers( QDomDocument &doc,
1475
1515
combinedBBox.combineExtentWith ( &BBox );
1476
1516
}
1477
1517
1478
- QDomElement styleListElem = doc.createElement ( " StyleList" );
1479
- // only one default style in project file mode
1480
- QDomElement styleElem = doc.createElement ( " Style" );
1481
- styleElem.setAttribute ( " current" , " true" );
1482
- QDomElement styleNameElem = doc.createElement ( " Name" );
1483
- QDomText styleNameText = doc.createTextNode ( " default" );
1484
- styleNameElem.appendChild ( styleNameText );
1485
- QDomElement styleTitleElem = doc.createElement ( " Title" );
1486
- QDomText styleTitleText = doc.createTextNode ( " default" );
1487
- styleTitleElem.appendChild ( styleTitleText );
1488
- styleElem.appendChild ( styleNameElem );
1489
- styleElem.appendChild ( styleTitleElem );
1490
- styleListElem.appendChild ( styleElem );
1491
- layerElem.appendChild ( styleListElem );
1518
+ addOWSLayerStyles ( currentLayer, doc, layerElem );
1492
1519
1493
1520
// keyword list
1494
1521
if ( !currentLayer->keywordList ().isEmpty () )
@@ -1568,7 +1595,7 @@ int QgsWMSProjectParser::layersAndStyles( QStringList& layers, QStringList& styl
1568
1595
if ( !currentLayerName.isNull () )
1569
1596
{
1570
1597
layers << currentLayerName;
1571
- styles << " default " ;
1598
+ styles << QString () ;
1572
1599
}
1573
1600
}
1574
1601
return 0 ;
0 commit comments