@@ -65,25 +65,21 @@ QgsRuleBasedLabeling::Rule::Rule( QgsPalLayerSettings *settings, int scaleMinDen
6565 , mIsActive( true )
6666
6767{
68- mRuleKey = QUuid::createUuid ().toString ();
6968 initFilter ();
7069}
7170
7271QgsRuleBasedLabeling::Rule::~Rule ()
7372{
74- delete mSettings ;
75- delete mFilter ;
7673 qDeleteAll ( mChildren );
7774 // do NOT delete parent
7875}
7976
8077void QgsRuleBasedLabeling::Rule::setSettings ( QgsPalLayerSettings *settings )
8178{
82- if ( mSettings == settings )
79+ if ( mSettings . get () == settings )
8380 return ;
8481
85- delete mSettings ;
86- mSettings = settings;
82+ mSettings .reset ( settings );
8783}
8884
8985QgsRuleBasedLabeling::RuleList QgsRuleBasedLabeling::Rule::descendants () const
@@ -102,16 +98,15 @@ void QgsRuleBasedLabeling::Rule::initFilter()
10298 if ( mElseRule || mFilterExp .compare ( QLatin1String ( " ELSE" ), Qt::CaseInsensitive ) == 0 )
10399 {
104100 mElseRule = true ;
105- mFilter = nullptr ;
101+ mFilter . reset ( nullptr ) ;
106102 }
107103 else if ( !mFilterExp .isEmpty () )
108104 {
109- delete mFilter ;
110- mFilter = new QgsExpression ( mFilterExp );
105+ mFilter .reset ( new QgsExpression ( mFilterExp ) );
111106 }
112107 else
113108 {
114- mFilter = nullptr ;
109+ mFilter . reset ( nullptr ) ;
115110 }
116111}
117112
@@ -204,7 +199,7 @@ QgsRuleBasedLabeling::Rule *QgsRuleBasedLabeling::Rule::findRuleByKey( const QSt
204199
205200QgsRuleBasedLabeling::Rule *QgsRuleBasedLabeling::Rule::clone () const
206201{
207- QgsPalLayerSettings *s = mSettings ? new QgsPalLayerSettings ( *mSettings ) : nullptr ;
202+ QgsPalLayerSettings *s = mSettings . get () ? new QgsPalLayerSettings ( *mSettings ) : nullptr ;
208203 Rule *newrule = new Rule ( s, mMaximumScale , mMinimumScale , mFilterExp , mDescription );
209204 newrule->setActive ( mIsActive );
210205 // clone children
@@ -286,7 +281,7 @@ void QgsRuleBasedLabeling::Rule::createSubProviders( QgsVectorLayer *layer, QgsR
286281 if ( mSettings )
287282 {
288283 // add provider!
289- QgsVectorLayerLabelProvider *p = provider->createProvider ( layer, mRuleKey , false , mSettings );
284+ QgsVectorLayerLabelProvider *p = provider->createProvider ( layer, mRuleKey , false , mSettings . get () );
290285 delete subProviders.value ( this , nullptr );
291286 subProviders[this ] = p;
292287 }
0 commit comments