18
18
/* $Id$ */
19
19
20
20
#include " qgslogger.h"
21
+ #include " qgsdistancearea.h"
21
22
#include " qgsfield.h"
22
23
#include " qgsgeometry.h"
23
24
#include " qgssearchtreenode.h"
@@ -42,6 +43,8 @@ QgsSearchTreeNode::QgsSearchTreeNode( double number )
42
43
mNumber = number;
43
44
mLeft = NULL ;
44
45
mRight = NULL ;
46
+
47
+ init ();
45
48
}
46
49
47
50
@@ -53,14 +56,7 @@ QgsSearchTreeNode::QgsSearchTreeNode( Operator op, QgsSearchTreeNode* left,
53
56
mLeft = left;
54
57
mRight = right;
55
58
56
- if ( mOp == opLENGTH || mOp == opAREA )
57
- {
58
- // initialize QgsDistanceArea
59
- mCalc .setProjectionsEnabled ( false );
60
- QSettings settings;
61
- QString ellipsoid = settings.value ( " /qgis/measure/ellipsoid" , " WGS84" ).toString ();
62
- mCalc .setEllipsoid ( ellipsoid );
63
- }
59
+ init ();
64
60
}
65
61
66
62
@@ -80,6 +76,8 @@ QgsSearchTreeNode::QgsSearchTreeNode( QString text, bool isColumnRef )
80
76
mText = text;
81
77
stripText ();
82
78
}
79
+
80
+ init ();
83
81
}
84
82
85
83
@@ -100,6 +98,8 @@ QgsSearchTreeNode::QgsSearchTreeNode( const QgsSearchTreeNode& node )
100
98
mRight = new QgsSearchTreeNode ( *node.mRight );
101
99
else
102
100
mRight = NULL ;
101
+
102
+ init ();
103
103
}
104
104
105
105
@@ -112,6 +112,26 @@ QgsSearchTreeNode::~QgsSearchTreeNode()
112
112
113
113
if ( mRight )
114
114
delete mRight ;
115
+
116
+ delete mCalc ;
117
+ }
118
+
119
+
120
+ void QgsSearchTreeNode::init ()
121
+ {
122
+ if ( mType == tOperator && ( mOp == opLENGTH || mOp == opAREA ) )
123
+ {
124
+ // initialize QgsDistanceArea
125
+ mCalc = new QgsDistanceArea;
126
+ mCalc ->setProjectionsEnabled ( false );
127
+ QSettings settings;
128
+ QString ellipsoid = settings.value ( " /qgis/measure/ellipsoid" , " WGS84" ).toString ();
129
+ mCalc ->setEllipsoid ( ellipsoid );
130
+ }
131
+ else
132
+ {
133
+ mCalc = NULL ;
134
+ }
115
135
}
116
136
117
137
void QgsSearchTreeNode::stripText ()
@@ -432,7 +452,7 @@ QgsSearchTreeValue QgsSearchTreeNode::valueAgainst( const QgsFieldMap& fields, c
432
452
{
433
453
return QgsSearchTreeValue ( 0 );
434
454
}
435
- return QgsSearchTreeValue ( mCalc . measure ( geom ) );
455
+ return QgsSearchTreeValue ( mCalc -> measure ( geom ) );
436
456
}
437
457
438
458
// string operations with one argument
0 commit comments