Skip to content

Commit

Permalink
Move QgsMapLayerRef write/read from xml to common code
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Jan 18, 2023
1 parent 5443c8b commit cd9e6bb
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 10 deletions.
13 changes: 3 additions & 10 deletions src/core/layout/qgslayoutitemelevationprofile.cpp
Expand Up @@ -414,10 +414,7 @@ bool QgsLayoutItemElevationProfile::writePropertiesToElement( QDomElement &layou
for ( const QgsMapLayerRef &layer : mLayers )
{
QDomElement layerElement = doc.createElement( QStringLiteral( "layer" ) );
layerElement.setAttribute( QStringLiteral( "id" ), layer.layerId );
layerElement.setAttribute( QStringLiteral( "name" ), layer.name );
layerElement.setAttribute( QStringLiteral( "source" ), layer.source );
layerElement.setAttribute( QStringLiteral( "provider" ), layer.provider );
layer.writeXml( layerElement, rwContext );
layersElement.appendChild( layerElement );
}
layoutProfileElem.appendChild( layersElement );
Expand All @@ -440,12 +437,8 @@ bool QgsLayoutItemElevationProfile::readPropertiesFromElement( const QDomElement
QDomElement layerElement = layersElement.firstChildElement( QStringLiteral( "layer" ) );
while ( !layerElement.isNull() )
{
const QString layerId = layerElement.attribute( QStringLiteral( "id" ) );
const QString layerName = layerElement.attribute( QStringLiteral( "name" ) );
const QString layerSource = layerElement.attribute( QStringLiteral( "source" ) );
const QString layerProvider = layerElement.attribute( QStringLiteral( "provider" ) );

QgsMapLayerRef ref = QgsMapLayerRef( layerId, layerName, layerSource, layerProvider );
QgsMapLayerRef ref;
ref.readXml( layerElement, context );
ref.resolveWeakly( mLayout->project() );
mLayers.append( ref );

Expand Down
33 changes: 33 additions & 0 deletions src/core/qgsmaplayerref.h
Expand Up @@ -19,6 +19,7 @@
#define SIP_NO_FILE

#include <QPointer>
#include <QDomElement>

#include "qgsmaplayer.h"
#include "qgsdataprovider.h"
Expand Down Expand Up @@ -289,6 +290,38 @@ struct _LayerRef
return nullptr;
}

/**
* Reads the layer's properties from an XML \a element.
*
* \see writeXml()
* \since QGIS 3.30
*/
bool readXml( const QDomElement &element, const QgsReadWriteContext &context )
{
Q_UNUSED( context )

layerId = element.attribute( QStringLiteral( "id" ) );
name = element.attribute( QStringLiteral( "name" ) );
source = element.attribute( QStringLiteral( "source" ) );
provider = element.attribute( QStringLiteral( "provider" ) );
return true;
}

/**
* Writes the layer's properties to a XML \a element.
*
* \see readXml()
* \since QGIS 3.30
*/
void writeXml( QDomElement &element, const QgsReadWriteContext &context ) const
{
Q_UNUSED( context )

element.setAttribute( QStringLiteral( "id" ), layerId );
element.setAttribute( QStringLiteral( "name" ), name );
element.setAttribute( QStringLiteral( "source" ), source );
element.setAttribute( QStringLiteral( "provider" ), provider );
}

};

Expand Down

0 comments on commit cd9e6bb

Please sign in to comment.