Skip to content

Commit 72cffa6

Browse files
committedJan 19, 2017
Save readOnly state and default values to style
They should be handled equal to the edit form config. Fix #15931
1 parent c84b51f commit 72cffa6

File tree

1 file changed

+37
-37
lines changed

1 file changed

+37
-37
lines changed
 

‎src/core/qgsvectorlayer.cpp

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1630,10 +1630,6 @@ bool QgsVectorLayer::readXml( const QDomNode& layer_node )
16301630
return false;
16311631
}
16321632

1633-
QDomElement mapLayerNode = layer_node.toElement();
1634-
if ( mapLayerNode.attribute( "readOnly", "0" ).toInt() == 1 )
1635-
mReadOnly = true;
1636-
16371633
QDomElement pkeyElem = pkeyNode.toElement();
16381634
if ( !pkeyElem.isNull() )
16391635
{
@@ -1679,24 +1675,6 @@ bool QgsVectorLayer::readXml( const QDomNode& layer_node )
16791675

16801676
readStyleManager( layer_node );
16811677

1682-
// default expressions
1683-
mDefaultExpressionMap.clear();
1684-
QDomNode defaultsNode = layer_node.namedItem( "defaults" );
1685-
if ( !defaultsNode.isNull() )
1686-
{
1687-
QDomNodeList defaultNodeList = defaultsNode.toElement().elementsByTagName( "default" );
1688-
for ( int i = 0; i < defaultNodeList.size(); ++i )
1689-
{
1690-
QDomElement defaultElem = defaultNodeList.at( i ).toElement();
1691-
1692-
QString field = defaultElem.attribute( "field", QString() );
1693-
QString expression = defaultElem.attribute( "expression", QString() );
1694-
if ( field.isEmpty() || expression.isEmpty() )
1695-
continue;
1696-
1697-
mDefaultExpressionMap.insert( field, expression );
1698-
}
1699-
}
17001678
updateFields();
17011679

17021680
setLegend( QgsMapLayerLegend::defaultVectorLegend( this ) );
@@ -1874,9 +1852,6 @@ bool QgsVectorLayer::writeXml( QDomNode & layer_node,
18741852
layer_node.appendChild( provider );
18751853
}
18761854

1877-
// save readonly state
1878-
mapLayerNode.setAttribute( "readOnly", mReadOnly );
1879-
18801855
// save preview expression
18811856
QDomElement prevExpElem = document.createElement( "previewExpression" );
18821857
QDomText prevExpText = document.createTextNode( mDisplayExpression );
@@ -1899,17 +1874,6 @@ bool QgsVectorLayer::writeXml( QDomNode & layer_node,
18991874
// save expression fields
19001875
mExpressionFieldBuffer->writeXml( layer_node, document );
19011876

1902-
//default expressions
1903-
QDomElement defaultsElem = document.createElement( "defaults" );
1904-
Q_FOREACH ( const QgsField& field, mUpdatedFields )
1905-
{
1906-
QDomElement defaultElem = document.createElement( "default" );
1907-
defaultElem.setAttribute( "field", field.name() );
1908-
defaultElem.setAttribute( "expression", field.defaultValueExpression() );
1909-
defaultsElem.appendChild( defaultElem );
1910-
}
1911-
layer_node.appendChild( defaultsElem );
1912-
19131877
writeStyleManager( layer_node, document );
19141878

19151879
// renderer specific settings
@@ -1963,6 +1927,24 @@ bool QgsVectorLayer::readSymbology( const QDomNode& node, QString& errorMessage
19631927
mAttributeAliasMap.insert( field, aliasElem.attribute( "name" ) );
19641928
}
19651929
}
1930+
// default expressions
1931+
mDefaultExpressionMap.clear();
1932+
QDomNode defaultsNode = node.namedItem( "defaults" );
1933+
if ( !defaultsNode.isNull() )
1934+
{
1935+
QDomNodeList defaultNodeList = defaultsNode.toElement().elementsByTagName( "default" );
1936+
for ( int i = 0; i < defaultNodeList.size(); ++i )
1937+
{
1938+
QDomElement defaultElem = defaultNodeList.at( i ).toElement();
1939+
1940+
QString field = defaultElem.attribute( "field", QString() );
1941+
QString expression = defaultElem.attribute( "expression", QString() );
1942+
if ( field.isEmpty() || expression.isEmpty() )
1943+
continue;
1944+
1945+
mDefaultExpressionMap.insert( field, expression );
1946+
}
1947+
}
19661948
updateFields();
19671949

19681950
//Attributes excluded from WMS and WFS
@@ -1996,6 +1978,11 @@ bool QgsVectorLayer::readSymbology( const QDomNode& node, QString& errorMessage
19961978

19971979
readCustomProperties( node, "variable" );
19981980

1981+
QDomElement mapLayerNode = node.toElement();
1982+
if ( mapLayerNode.attribute( "readOnly", "0" ).toInt() == 1 )
1983+
mReadOnly = true;
1984+
1985+
19991986
return true;
20001987
}
20011988

@@ -2101,7 +2088,6 @@ bool QgsVectorLayer::readStyle( const QDomNode &node, QString &errorMessage )
21012088

21022089
if ( !labelattributesnode.isNull() && mLabel )
21032090
{
2104-
QgsDebugMsg( "calling readXML" );
21052091
mLabel->readXML( labelattributesnode );
21062092
}
21072093

@@ -2193,6 +2179,20 @@ bool QgsVectorLayer::writeSymbology( QDomNode& node, QDomDocument& doc, QString&
21932179
mEditFormConfig->writeXml( node );
21942180
mConditionalStyles->writeXml( node, doc );
21952181

2182+
// save readonly state
2183+
node.toElement().setAttribute( "readOnly", mReadOnly );
2184+
2185+
//default expressions
2186+
QDomElement defaultsElem = node.ownerDocument().createElement( "defaults" );
2187+
Q_FOREACH ( const QgsField& field, mUpdatedFields )
2188+
{
2189+
QDomElement defaultElem = doc.createElement( "default" );
2190+
defaultElem.setAttribute( "field", field.name() );
2191+
defaultElem.setAttribute( "expression", field.defaultValueExpression() );
2192+
defaultsElem.appendChild( defaultElem );
2193+
}
2194+
node.appendChild( defaultsElem );
2195+
21962196
return true;
21972197
}
21982198

0 commit comments

Comments
 (0)
Please sign in to comment.