Skip to content

Commit 54946a4

Browse files
committedSep 1, 2014
Scale range supported by symbol in QgsLegendSymbolItemV2
1 parent 4fa1f45 commit 54946a4

File tree

5 files changed

+38
-6
lines changed

5 files changed

+38
-6
lines changed
 

‎src/core/qgsmaplayerlegend.cpp

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,10 @@ QList<QgsLayerTreeModelLegendNode*> QgsDefaultVectorLayerLegend::createLayerTree
185185

186186
nodeLayer->setChildrenCheckable( r->legendSymbolItemsCheckable() );
187187

188-
typedef QPair<QString, QgsSymbolV2*> QgsLegendSymbolItem;
189188
int k = 0;
190-
foreach ( const QgsLegendSymbolItem& i, r->legendSymbolItems() )
189+
foreach ( const QgsLegendSymbolItemV2& i, r->legendSymbolItemsV2() )
191190
{
192-
nodes.append( new QgsSymbolV2LegendNode( nodeLayer, i.second, i.first, k++ ) );
191+
nodes.append( new QgsSymbolV2LegendNode( nodeLayer, i.symbol, i.label, k++ ) );
193192
}
194193
return nodes;
195194
}

‎src/core/symbology-ng/qgslegendsymbolitemv2.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,34 @@
55
QgsLegendSymbolItemV2::QgsLegendSymbolItemV2()
66
: symbol( 0 )
77
, index( -1 )
8+
, scaleDenomMin( -1 )
9+
, scaleDenomMax( -1 )
810
{
911
}
1012

11-
QgsLegendSymbolItemV2::~QgsLegendSymbolItemV2()
13+
QgsLegendSymbolItemV2::QgsLegendSymbolItemV2( QgsSymbolV2* s, const QString& lbl, int idx )
14+
: symbol( s )
15+
, label( lbl )
16+
, index( idx )
17+
, scaleDenomMin( -1 )
18+
, scaleDenomMax( -1 )
1219
{
13-
delete symbol;
1420
}
1521

1622
QgsLegendSymbolItemV2::QgsLegendSymbolItemV2( const QgsLegendSymbolItemV2& other )
1723
: symbol( 0 )
1824
, index( -1 )
25+
, scaleDenomMin( -1 )
26+
, scaleDenomMax( -1 )
1927
{
2028
*this = other;
2129
}
2230

31+
QgsLegendSymbolItemV2::~QgsLegendSymbolItemV2()
32+
{
33+
delete symbol;
34+
}
35+
2336
QgsLegendSymbolItemV2& QgsLegendSymbolItemV2::operator=( const QgsLegendSymbolItemV2& other )
2437
{
2538
if ( this == &other )
@@ -29,6 +42,8 @@ QgsLegendSymbolItemV2& QgsLegendSymbolItemV2::operator=( const QgsLegendSymbolIt
2942
symbol = other.symbol ? other.symbol->clone() : 0;
3043
label = other.label;
3144
index = other.index;
45+
scaleDenomMin = other.scaleDenomMin;
46+
scaleDenomMax = other.scaleDenomMax;
3247

3348
return *this;
3449
}

‎src/core/symbology-ng/qgslegendsymbolitemv2.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,21 @@ class QgsLegendSymbolItemV2
99
{
1010
public:
1111
QgsLegendSymbolItemV2();
12+
//! construct item, takes ownership of symbol
13+
QgsLegendSymbolItemV2( QgsSymbolV2* s, const QString& lbl, int idx );
1214
~QgsLegendSymbolItemV2();
1315
QgsLegendSymbolItemV2( const QgsLegendSymbolItemV2& other );
1416
QgsLegendSymbolItemV2& operator=( const QgsLegendSymbolItemV2& other );
1517

1618
QgsSymbolV2* symbol; //!< owned by the struct
1719
QString label;
1820
int index; //!< identifier of the symbol item (within renderer)
19-
// TODO: scale range, rule
21+
22+
// additional data that may be used for filtering
23+
24+
int scaleDenomMin;
25+
int scaleDenomMax;
26+
// TODO: QString rule;
2027
};
2128

2229

‎src/core/symbology-ng/qgssinglesymbolrendererv2.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,3 +366,10 @@ QgsLegendSymbolList QgsSingleSymbolRendererV2::legendSymbolItems( double scaleDe
366366
lst << qMakePair( QString(), mSymbol.data() );
367367
return lst;
368368
}
369+
370+
QgsLegendSymbolListV2 QgsSingleSymbolRendererV2::legendSymbolItemsV2() const
371+
{
372+
QgsLegendSymbolListV2 lst;
373+
lst << QgsLegendSymbolItemV2( mSymbol.data() ? mSymbol->clone() : 0, QString(), 0 );
374+
return lst;
375+
}

‎src/core/symbology-ng/qgssinglesymbolrendererv2.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,10 @@ class CORE_EXPORT QgsSingleSymbolRendererV2 : public QgsFeatureRendererV2
8282
//! @note not available in python bindings
8383
virtual QgsLegendSymbolList legendSymbolItems( double scaleDenominator = -1, QString rule = QString() );
8484

85+
//! Return a list of symbology items for the legend. Better choice than legendSymbolItems().
86+
//! @node added in 2.6
87+
virtual QgsLegendSymbolListV2 legendSymbolItemsV2() const;
88+
8589
protected:
8690
QScopedPointer<QgsSymbolV2> mSymbol;
8791
QScopedPointer<QgsExpression> mRotation;

0 commit comments

Comments
 (0)
Please sign in to comment.