Skip to content

Commit da00e13

Browse files
author
timlinux
committed
Make the top level legend item bold for each layer so that it stands out from the categories under it.
git-svn-id: http://svn.osgeo.org/qgis/trunk@8488 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 97874aa commit da00e13

File tree

2 files changed

+45
-28
lines changed

2 files changed

+45
-28
lines changed

src/app/legend/qgslegendlayer.cpp

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ QgsLegendLayer::QgsLegendLayer(QTreeWidgetItem* parent,QString name)
5050
setFlags(Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
5151
setCheckState (0, Qt::Checked);
5252
setText(0, name);
53+
setupFont();
5354
}
5455

5556
QgsLegendLayer::QgsLegendLayer(QTreeWidget* parent, QString name): QgsLegendItem(parent, name)
@@ -58,6 +59,7 @@ QgsLegendLayer::QgsLegendLayer(QTreeWidget* parent, QString name): QgsLegendItem
5859
setFlags(Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
5960
setCheckState (0, Qt::Checked);
6061
setText(0, name);
62+
setupFont();
6163
}
6264

6365
QgsLegendLayer::QgsLegendLayer(QString name): QgsLegendItem()
@@ -66,13 +68,20 @@ QgsLegendLayer::QgsLegendLayer(QString name): QgsLegendItem()
6668
setFlags(Qt::ItemIsEditable | Qt::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsSelectable);
6769
setCheckState (0, Qt::Checked);
6870
setText(0, name);
71+
setupFont();
6972
}
7073

7174
QgsLegendLayer::~QgsLegendLayer()
7275
{
7376
mType=LEGEND_LAYER;
7477
}
7578

79+
void QgsLegendLayer::setupFont() //private method
80+
{
81+
QFont myFont = font(0);
82+
myFont.setBold(true); //visually differentiate layer labels from the rest
83+
setFont(0,myFont);
84+
}
7685
void QgsLegendLayer::setLayerTypeIcon()
7786
{
7887
QIcon myIcon(getOriginalPixmap());
@@ -205,48 +214,48 @@ std::list<QgsLegendLayerFile*> QgsLegendLayer::legendLayerFiles()
205214
void QgsLegendLayer::updateLayerSymbologySettings(const QgsMapLayer* mapLayer)
206215
{
207216
if(mapLayer)
217+
{
218+
//find all layers
219+
std::list<QgsMapLayer*> theMapLayers = mapLayers();
220+
for(std::list<QgsMapLayer*>::iterator it = theMapLayers.begin(); it != theMapLayers.end(); ++it)
208221
{
209-
//find all layers
210-
std::list<QgsMapLayer*> theMapLayers = mapLayers();
211-
for(std::list<QgsMapLayer*>::iterator it = theMapLayers.begin(); it != theMapLayers.end(); ++it)
212-
{
213-
if((*it) != mapLayer)
214-
{
215-
(*it)->copySymbologySettings(*mapLayer);
216-
}
217-
}
218-
// source might have changed - e.g. other subset
219-
setToolTip(0, mapLayer->publicSource());
222+
if((*it) != mapLayer)
223+
{
224+
(*it)->copySymbologySettings(*mapLayer);
225+
}
220226
}
227+
// source might have changed - e.g. other subset
228+
setToolTip(0, mapLayer->publicSource());
229+
}
221230
}
222231

223232
void QgsLegendLayer::updateCheckState()
224233
{
225234
std::list<QgsLegendLayerFile*> llfiles = legendLayerFiles();
226235
if(llfiles.size() < 1)
227-
{
228-
return;
229-
}
236+
{
237+
return;
238+
}
230239

231240
std::list<QgsLegendLayerFile*>::iterator iter = llfiles.begin();
232241
Qt::CheckState theState = (*iter)->checkState(0);
233242
for(; iter != llfiles.end(); ++iter)
243+
{
244+
if(theState != (*iter)->checkState(0))
234245
{
235-
if(theState != (*iter)->checkState(0))
236-
{
237-
theState = Qt::PartiallyChecked;
238-
break;
239-
}
246+
theState = Qt::PartiallyChecked;
247+
break;
240248
}
249+
}
241250

242251
if(theState != checkState(0))
243-
{
244-
treeWidget()->blockSignals(true);
245-
setCheckState(0, theState);
246-
//notify the legend that the check state has changed
247-
legend()->updateCheckStates(this, theState);
248-
treeWidget()->blockSignals(false);
249-
}
252+
{
253+
treeWidget()->blockSignals(true);
254+
setCheckState(0, theState);
255+
//notify the legend that the check state has changed
256+
legend()->updateCheckStates(this, theState);
257+
treeWidget()->blockSignals(false);
258+
}
250259
}
251260

252261
void QgsLegendLayer::refreshSymbology(const QString& key, double widthScale)
@@ -355,8 +364,9 @@ void QgsLegendLayer::vectorLayerSymbology(const QgsVectorLayer* layer, double wi
355364
QPixmap pix = QPixmap::fromImage(img); // convert to pixmap
356365
itemList.push_back(std::make_pair(values, pix));
357366
}
358-
359-
if(renderer->needsAttributes()) //create an item for each classification field (only one for most renderers)
367+
368+
//create an item for each classification field (only one for most renderers)
369+
if(renderer->needsAttributes())
360370
{
361371
QgsAttributeList classfieldlist = renderer->classificationAttributes();
362372
const QgsFieldMap& fields = layer->getDataProvider()->fields();

src/app/legend/qgslegendlayer.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,13 @@ class QgsLegendLayer : public QgsLegendItem
112112
void updateLayerSymbologySettings(const QgsMapLayer* mapLayer);
113113

114114
QPixmap getOriginalPixmap() const;
115+
116+
private:
117+
/** Helper method to make the font bold from all ctors.
118+
* Not to be confused with setFont() which is inherited
119+
* from the QTreeWidgetItem base class.
120+
*/
121+
void setupFont();
115122
};
116123

117124
#endif

0 commit comments

Comments
 (0)