From edd64c4912f73d7a3047121808f9ff7353690bd6 Mon Sep 17 00:00:00 2001 From: Martin Dobias Date: Wed, 10 Sep 2014 12:53:59 +0700 Subject: [PATCH] Make rule-based renderer rule keys persistent So they can be used for visibility groups - before they got assigned new keys on every instantiation of Rule --- src/core/symbology-ng/qgsrulebasedrendererv2.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/core/symbology-ng/qgsrulebasedrendererv2.cpp b/src/core/symbology-ng/qgsrulebasedrendererv2.cpp index ab6bebe44c3c..a45b58e0c951 100644 --- a/src/core/symbology-ng/qgsrulebasedrendererv2.cpp +++ b/src/core/symbology-ng/qgsrulebasedrendererv2.cpp @@ -254,6 +254,7 @@ QgsRuleBasedRendererV2::Rule* QgsRuleBasedRendererV2::Rule::clone() const { QgsSymbolV2* sym = mSymbol ? mSymbol->clone() : NULL; Rule* newrule = new Rule( sym, mScaleMinDenom, mScaleMaxDenom, mFilterExp, mLabel, mDescription ); + newrule->mRuleKey = mRuleKey; newrule->setCheckState( mCheckState ); // clone children foreach ( Rule* rule, mChildren ) @@ -283,6 +284,7 @@ QDomElement QgsRuleBasedRendererV2::Rule::save( QDomDocument& doc, QgsSymbolV2Ma ruleElem.setAttribute( "description", mDescription ); if ( !mCheckState ) ruleElem.setAttribute( "checkstate", 0 ); + ruleElem.setAttribute( "key", mRuleKey ); for ( RuleList::iterator it = mChildren.begin(); it != mChildren.end(); ++it ) { @@ -589,8 +591,12 @@ QgsRuleBasedRendererV2::Rule* QgsRuleBasedRendererV2::Rule::create( QDomElement& QString description = ruleElem.attribute( "description" ); int scaleMinDenom = ruleElem.attribute( "scalemindenom", "0" ).toInt(); int scaleMaxDenom = ruleElem.attribute( "scalemaxdenom", "0" ).toInt(); + QString ruleKey = ruleElem.attribute( "key" ); Rule* rule = new Rule( symbol, scaleMinDenom, scaleMaxDenom, filterExp, label, description ); + if ( !ruleKey.isEmpty() ) + rule->mRuleKey = ruleKey; + rule->setCheckState( ruleElem.attribute( "checkstate", "1" ).toInt() ); QDomElement childRuleElem = ruleElem.firstChildElement( "rule" );