@@ -559,12 +559,15 @@ void QgsMapLayer::writeCommonStyle( QDomElement &layerElement, QDomDocument &doc
559
559
layerElement.setAttribute ( QStringLiteral ( " minScale" ), QString::number ( minimumScale () ) );
560
560
}
561
561
562
- if ( m3DRenderer )
562
+ if ( categories. testFlag ( QgsMapLayerStyle::Symbology ) )
563
563
{
564
- QDomElement renderer3DElem = document.createElement ( QStringLiteral ( " renderer-3d" ) );
565
- renderer3DElem.setAttribute ( QStringLiteral ( " type" ), m3DRenderer->type () );
566
- m3DRenderer->writeXml ( renderer3DElem, context );
567
- layerElement.appendChild ( renderer3DElem );
564
+ if ( m3DRenderer )
565
+ {
566
+ QDomElement renderer3DElem = document.createElement ( QStringLiteral ( " renderer-3d" ) );
567
+ renderer3DElem.setAttribute ( QStringLiteral ( " type" ), m3DRenderer->type () );
568
+ m3DRenderer->writeXml ( renderer3DElem, context );
569
+ layerElement.appendChild ( renderer3DElem );
570
+ }
568
571
}
569
572
570
573
if ( categories.testFlag ( QgsMapLayerStyle::LayerConfiguration ) )
@@ -1112,7 +1115,7 @@ void QgsMapLayer::exportNamedStyle( QDomDocument &doc, QString &errorMsg, QgsRea
1112
1115
myRootNode.setAttribute ( QStringLiteral ( " version" ), Qgis::QGIS_VERSION );
1113
1116
myDocument.appendChild ( myRootNode );
1114
1117
1115
- if ( !writeSymbology ( myRootNode, myDocument, errorMsg, QgsReadWriteContext () , categories ) ) // TODO: support relative paths in QML?
1118
+ if ( !writeSymbology ( myRootNode, myDocument, errorMsg, context , categories ) ) // TODO: support relative paths in QML?
1116
1119
{
1117
1120
errorMsg = QObject::tr ( " Could not save symbology because:\n %1" ).arg ( errorMsg );
1118
1121
return ;
@@ -1563,6 +1566,7 @@ bool QgsMapLayer::readStyle( const QDomNode &node, QString &errorMessage, QgsRea
1563
1566
Q_UNUSED ( node );
1564
1567
Q_UNUSED ( errorMessage );
1565
1568
Q_UNUSED ( context );
1569
+ Q_UNUSED ( categories );
1566
1570
return false ;
1567
1571
}
1568
1572
@@ -1573,61 +1577,74 @@ bool QgsMapLayer::writeStyle( QDomNode &node, QDomDocument &doc, QString &errorM
1573
1577
Q_UNUSED ( doc );
1574
1578
Q_UNUSED ( errorMessage );
1575
1579
Q_UNUSED ( context );
1580
+ Q_UNUSED ( categories );
1576
1581
return false ;
1577
1582
}
1578
1583
1579
1584
void QgsMapLayer::readCommonStyle ( const QDomElement &layerElement, const QgsReadWriteContext &context,
1580
1585
QgsMapLayerStyle::StyleCategories categories )
1581
1586
{
1582
- QgsAbstract3DRenderer *r3D = nullptr ;
1583
- QDomElement renderer3DElem = layerElement.firstChildElement ( QStringLiteral ( " renderer-3d" ) );
1584
- if ( !renderer3DElem.isNull () )
1587
+ if ( categories.testFlag ( QgsMapLayerStyle::Symbology ) )
1585
1588
{
1586
- QString type3D = renderer3DElem. attribute ( QStringLiteral ( " type " ) ) ;
1587
- Qgs3DRendererAbstractMetadata *meta3D = QgsApplication::renderer3DRegistry ()-> rendererMetadata ( type3D );
1588
- if ( meta3D )
1589
+ QgsAbstract3DRenderer *r3D = nullptr ;
1590
+ QDomElement renderer3DElem = layerElement. firstChildElement ( QStringLiteral ( " renderer-3d " ) );
1591
+ if ( !renderer3DElem. isNull () )
1589
1592
{
1590
- r3D = meta3D->createRenderer ( renderer3DElem, context );
1593
+ QString type3D = renderer3DElem.attribute ( QStringLiteral ( " type" ) );
1594
+ Qgs3DRendererAbstractMetadata *meta3D = QgsApplication::renderer3DRegistry ()->rendererMetadata ( type3D );
1595
+ if ( meta3D )
1596
+ {
1597
+ r3D = meta3D->createRenderer ( renderer3DElem, context );
1598
+ }
1591
1599
}
1600
+ setRenderer3D ( r3D );
1592
1601
}
1593
- setRenderer3D ( r3D );
1594
-
1595
- // read custom properties before passing reading further to a subclass, so that
1596
- // the subclass can also read custom properties
1597
- readCustomProperties ( layerElement );
1598
1602
1599
- // use scale dependent visibility flag
1600
- setScaleBasedVisibility ( layerElement.attribute ( QStringLiteral ( " hasScaleBasedVisibilityFlag" ) ).toInt () == 1 );
1601
- if ( layerElement.hasAttribute ( QStringLiteral ( " minimumScale" ) ) )
1603
+ if ( categories.testFlag ( QgsMapLayerStyle::CustomProperties ) )
1602
1604
{
1603
- // older element, when scales were reversed
1604
- setMaximumScale ( layerElement. attribute ( QStringLiteral ( " minimumScale " ) ). toDouble () );
1605
- setMinimumScale ( layerElement. attribute ( QStringLiteral ( " maximumScale " ) ). toDouble () );
1605
+ // read custom properties before passing reading further to a subclass, so that
1606
+ // the subclass can also read custom properties
1607
+ readCustomProperties ( layerElement );
1606
1608
}
1607
- else
1609
+
1610
+ // use scale dependent visibility flag
1611
+ if ( categories.testFlag ( QgsMapLayerStyle::Rendering ) )
1608
1612
{
1609
- setMaximumScale ( layerElement.attribute ( QStringLiteral ( " maxScale" ) ).toDouble () );
1610
- setMinimumScale ( layerElement.attribute ( QStringLiteral ( " minScale" ) ).toDouble () );
1613
+ setScaleBasedVisibility ( layerElement.attribute ( QStringLiteral ( " hasScaleBasedVisibilityFlag" ) ).toInt () == 1 );
1614
+ if ( layerElement.hasAttribute ( QStringLiteral ( " minimumScale" ) ) )
1615
+ {
1616
+ // older element, when scales were reversed
1617
+ setMaximumScale ( layerElement.attribute ( QStringLiteral ( " minimumScale" ) ).toDouble () );
1618
+ setMinimumScale ( layerElement.attribute ( QStringLiteral ( " maximumScale" ) ).toDouble () );
1619
+ }
1620
+ else
1621
+ {
1622
+ setMaximumScale ( layerElement.attribute ( QStringLiteral ( " maxScale" ) ).toDouble () );
1623
+ setMinimumScale ( layerElement.attribute ( QStringLiteral ( " minScale" ) ).toDouble () );
1624
+ }
1611
1625
}
1612
1626
1613
- // flags
1614
- QDomElement flagsElem = layerElement.firstChildElement ( QStringLiteral ( " flags" ) );
1615
- QMetaEnum metaEnum = QMetaEnum::fromType<QgsMapLayer::LayerFlag>();
1616
- LayerFlags flags = mFlags ;
1617
- for ( int idx = 0 ; idx < metaEnum.keyCount (); ++idx )
1627
+ if ( categories.testFlag ( QgsMapLayerStyle::LayerConfiguration ) )
1618
1628
{
1619
- const char *enumKey = metaEnum.key ( idx );
1620
- QDomNode flagNode = flagsElem.namedItem ( QString ( enumKey ) );
1621
- if ( flagNode.isNull () )
1622
- continue ;
1623
- bool flagValue = flagNode.toElement ().text () == " 1" ? true : false ;
1624
- QgsMapLayer::LayerFlag enumValue = static_cast <QgsMapLayer::LayerFlag>( metaEnum.keyToValue ( enumKey ) );
1625
- if ( flags.testFlag ( enumValue ) && !flagValue )
1626
- flags &= ~enumValue;
1627
- else if ( !flags.testFlag ( enumValue ) && flagValue )
1628
- flags |= enumValue;
1629
+ // flags
1630
+ QDomElement flagsElem = layerElement.firstChildElement ( QStringLiteral ( " flags" ) );
1631
+ QMetaEnum metaEnum = QMetaEnum::fromType<QgsMapLayer::LayerFlag>();
1632
+ LayerFlags flags = mFlags ;
1633
+ for ( int idx = 0 ; idx < metaEnum.keyCount (); ++idx )
1634
+ {
1635
+ const char *enumKey = metaEnum.key ( idx );
1636
+ QDomNode flagNode = flagsElem.namedItem ( QString ( enumKey ) );
1637
+ if ( flagNode.isNull () )
1638
+ continue ;
1639
+ bool flagValue = flagNode.toElement ().text () == " 1" ? true : false ;
1640
+ QgsMapLayer::LayerFlag enumValue = static_cast <QgsMapLayer::LayerFlag>( metaEnum.keyToValue ( enumKey ) );
1641
+ if ( flags.testFlag ( enumValue ) && !flagValue )
1642
+ flags &= ~enumValue;
1643
+ else if ( !flags.testFlag ( enumValue ) && flagValue )
1644
+ flags |= enumValue;
1645
+ }
1646
+ setFlags ( flags );
1629
1647
}
1630
- setFlags ( flags );
1631
1648
}
1632
1649
1633
1650
QUndoStack *QgsMapLayer::undoStack ()
0 commit comments