Skip to content

Commit

Permalink
Support for reading/writing additional styles for layers
Browse files Browse the repository at this point in the history
  • Loading branch information
wonder-sk committed Jan 7, 2015
1 parent 19b7281 commit 43d6042
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 1 deletion.
24 changes: 23 additions & 1 deletion src/core/qgsmaplayer.cpp
Expand Up @@ -704,6 +704,28 @@ void QgsMapLayer::writeCustomProperties( QDomNode &layerNode, QDomDocument &doc
mCustomProperties.writeXml( layerNode, doc );
}

void QgsMapLayer::readStyleManager( const QDomNode& layerNode )
{
QDomElement styleMgrElem = layerNode.firstChildElement( "map-layer-style-manager" );
if ( !styleMgrElem.isNull() )
{
enableStyleManager();
styleManager()->readXml( styleMgrElem );
}
else
enableStyleManager( false );
}

void QgsMapLayer::writeStyleManager( QDomNode& layerNode, QDomDocument& doc ) const
{
if ( mStyleManager )
{
QDomElement styleMgrElem = doc.createElement( "map-layer-style-manager" );
mStyleManager->writeXml( styleMgrElem );
layerNode.appendChild( styleMgrElem );
}
}




Expand Down Expand Up @@ -1428,7 +1450,7 @@ QgsMapLayerLegend*QgsMapLayer::legend() const

void QgsMapLayer::enableStyleManager( bool enable )
{
if ( ( enable && mStyleManager ) || ( !enable && !mStyleManager ) )
if (( enable && mStyleManager ) || ( !enable && !mStyleManager ) )
return;

if ( enable )
Expand Down
5 changes: 5 additions & 0 deletions src/core/qgsmaplayer.h
Expand Up @@ -549,6 +549,11 @@ class CORE_EXPORT QgsMapLayer : public QObject
/** Write custom properties to project file. */
void writeCustomProperties( QDomNode & layerNode, QDomDocument & doc ) const;

/** Read style manager's configuration (if any). To be called by subclasses. */
void readStyleManager( const QDomNode& layerNode );
/** Write style manager's configuration (if exists). To be called by subclasses. */
void writeStyleManager( QDomNode& layerNode, QDomDocument& doc ) const;

/** debugging member - invoked when a connect() is made to this object */
void connectNotify( const char * signal );

Expand Down
4 changes: 4 additions & 0 deletions src/core/qgsvectorlayer.cpp
Expand Up @@ -1328,6 +1328,8 @@ bool QgsVectorLayer::readXml( const QDomNode& layer_node )
return false;
}

readStyleManager( layer_node );

setLegend( QgsMapLayerLegend::defaultVectorLegend( this ) );

return mValid; // should be true if read successfully
Expand Down Expand Up @@ -1478,6 +1480,8 @@ bool QgsVectorLayer::writeXml( QDomNode & layer_node,
// save expression fields
mExpressionFieldBuffer->writeXml( layer_node, document );

writeStyleManager( layer_node, document );

// renderer specific settings
QString errorMsg;
return writeSymbology( layer_node, document, errorMsg );
Expand Down
4 changes: 4 additions & 0 deletions src/core/raster/qgsrasterlayer.cpp
Expand Up @@ -1435,6 +1435,8 @@ bool QgsRasterLayer::readXml( const QDomNode& layer_node )
}
}

readStyleManager( layer_node );

return res;
} // QgsRasterLayer::readXml( QDomNode & layer_node )

Expand Down Expand Up @@ -1523,6 +1525,8 @@ bool QgsRasterLayer::writeXml( QDomNode & layer_node,
layer_node.appendChild( noData );
}

writeStyleManager( layer_node, document );

//write out the symbology
QString errorMsg;
return writeSymbology( layer_node, document, errorMsg );
Expand Down

0 comments on commit 43d6042

Please sign in to comment.