@@ -69,12 +69,15 @@ QList<QgsLayerTreeModelLegendNode*> QgsDefaultVectorLayerLegend::createLayerTree
6969 QSettings settings;
7070 if ( settings.value ( " /qgis/showLegendClassifiers" , false ).toBool () && !r->legendClassificationAttribute ().isEmpty () )
7171 {
72- nodes.append ( new QgsSimpleLegendNode ( nodeLayer, r->legendClassificationAttribute () ) );
72+ nodes.append ( new QgsSimpleLegendNode ( nodeLayer, r->legendClassificationAttribute (), " _class_attribute_ " ) );
7373 }
7474
7575 foreach ( const QgsLegendSymbolItemV2& i, r->legendSymbolItemsV2 () )
7676 {
77- nodes.append ( new QgsSymbolV2LegendNode ( nodeLayer, i ) );
77+ QgsSymbolV2LegendNode* legendNode = new QgsSymbolV2LegendNode ( nodeLayer, i );
78+ if ( mUserLabels .contains ( i.ruleKey () ) )
79+ legendNode->setUserLabel ( mUserLabels [i.ruleKey ()] );
80+ nodes.append ( legendNode );
7881 }
7982
8083 if ( nodes.count () == 1 && nodes[0 ]->data ( Qt::EditRole ).toString ().isEmpty () )
@@ -83,6 +86,25 @@ QList<QgsLayerTreeModelLegendNode*> QgsDefaultVectorLayerLegend::createLayerTree
8386 return nodes;
8487}
8588
89+ void QgsDefaultVectorLayerLegend::setRuleUserLabel ( const QString& ruleKey, const QString& label )
90+ {
91+ if ( label.isEmpty () )
92+ mUserLabels .remove ( ruleKey );
93+ else
94+ mUserLabels [ruleKey] = label;
95+ emit itemsChanged ();
96+ }
97+
98+ QString QgsDefaultVectorLayerLegend::ruleUserLabel ( const QString& ruleKey ) const
99+ {
100+ return mUserLabels .value ( ruleKey );
101+ }
102+
103+ QStringList QgsDefaultVectorLayerLegend::rulesWithUserLabel () const
104+ {
105+ return mUserLabels .keys ();
106+ }
107+
86108
87109// -------------------------------------------------------------------------
88110
@@ -125,7 +147,7 @@ QList<QgsLayerTreeModelLegendNode*> QgsDefaultRasterLayerLegend::createLayerTree
125147 if ( count == max_count )
126148 {
127149 QString label = tr ( " following %1 items\n not displayed" ).arg ( rasterItemList.size () - max_count );
128- nodes << new QgsSimpleLegendNode ( nodeLayer, label );
150+ nodes << new QgsSimpleLegendNode ( nodeLayer, label, " _more_items_ " );
129151 break ;
130152 }
131153 }
@@ -152,10 +174,11 @@ QList<QgsLayerTreeModelLegendNode*> QgsDefaultPluginLayerLegend::createLayerTree
152174 if ( symbologyList.count () == 0 )
153175 return nodes;
154176
177+ int i = 0 ;
155178 typedef QPair<QString, QPixmap> XY;
156179 foreach ( XY item, symbologyList )
157180 {
158- nodes << new QgsSimpleLegendNode ( nodeLayer, item.first , QIcon ( item.second ) );
181+ nodes << new QgsSimpleLegendNode ( nodeLayer, item.first , QString::number ( i++ ), QIcon ( item.second ) );
159182 }
160183
161184 return nodes;
0 commit comments