Skip to content

Commit 7c0da6d

Browse files
committed
Fix #10473 (raster preview icons in layer tree view)
1 parent 6a17538 commit 7c0da6d

File tree

4 files changed

+24
-1
lines changed

4 files changed

+24
-1
lines changed

src/app/qgisapp.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2305,6 +2305,8 @@ void QgisApp::initLayerTreeView()
23052305
mLayerTreeView->setModel( model );
23062306
mLayerTreeView->setMenuProvider( new QgsAppLayerTreeViewMenuProvider( mLayerTreeView, mMapCanvas ) );
23072307

2308+
setupLayerTreeViewFromSettings();
2309+
23082310
connect( mLayerTreeView, SIGNAL( doubleClicked( QModelIndex ) ), this, SLOT( layerTreeViewDoubleClicked( QModelIndex ) ) );
23092311
connect( mLayerTreeView, SIGNAL( currentLayerChanged( QgsMapLayer* ) ), this, SLOT( activeLayerChanged( QgsMapLayer* ) ) );
23102312
connect( mLayerTreeView->selectionModel(), SIGNAL( currentChanged( QModelIndex, QModelIndex ) ), this, SLOT( updateNewLayerInsertionPoint() ) );
@@ -2329,6 +2331,13 @@ void QgisApp::initLayerTreeView()
23292331
mLayerOrderDock->hide();
23302332
}
23312333

2334+
void QgisApp::setupLayerTreeViewFromSettings()
2335+
{
2336+
QSettings s;
2337+
2338+
mLayerTreeView->layerTreeModel()->setFlag( QgsLayerTreeModel::ShowRasterPreviewIcon, s.value( "/qgis/createRasterLegendIcons", false ).toBool() );
2339+
}
2340+
23322341

23332342
void QgisApp::updateNewLayerInsertionPoint()
23342343
{
@@ -7239,6 +7248,8 @@ void QgisApp::showOptionsDialog( QWidget *parent, QString currentPage )
72397248

72407249
QgsProject::instance()->layerTreeRegistryBridge()->setNewLayersVisible( mySettings.value( "/qgis/new_layers_visible", true ).toBool() );
72417250

7251+
setupLayerTreeViewFromSettings();
7252+
72427253
mMapCanvas->enableAntiAliasing( mySettings.value( "/qgis/enable_anti_aliasing" ).toBool() );
72437254

72447255
int action = mySettings.value( "/qgis/wheel_action", 2 ).toInt();

src/app/qgisapp.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1338,6 +1338,9 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
13381338
/**Removes annotation items in the canvas*/
13391339
void removeAnnotationItems();
13401340

1341+
//! Configure layer tree view according to the user options from QSettings
1342+
void setupLayerTreeViewFromSettings();
1343+
13411344
/// QgisApp aren't copyable
13421345
QgisApp( QgisApp const & );
13431346
/// QgisApp aren't copyable

src/gui/layertree/qgslayertreemodel.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,15 @@ QVariant QgsLayerTreeModel::data( const QModelIndex &index, int role ) const
189189
if ( !layer )
190190
return QVariant();
191191
if ( layer->type() == QgsMapLayer::RasterLayer )
192-
return QgsLayerItem::iconRaster();
192+
{
193+
if ( testFlag( ShowRasterPreviewIcon ) )
194+
{
195+
QgsRasterLayer* rlayer = qobject_cast<QgsRasterLayer *>( layer );
196+
return QIcon( rlayer->previewAsPixmap( QSize( 32, 32 ) ) );
197+
}
198+
else
199+
return QgsLayerItem::iconRaster();
200+
}
193201
else if ( layer->type() == QgsMapLayer::VectorLayer )
194202
{
195203
QgsVectorLayer* vlayer = static_cast<QgsVectorLayer*>( layer );

src/gui/layertree/qgslayertreemodel.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ class GUI_EXPORT QgsLayerTreeModel : public QAbstractItemModel
8989
{
9090
// display flags
9191
ShowSymbology = 0x0001, //!< Add symbology items for layer nodes
92+
ShowRasterPreviewIcon = 0x0002, //!< Will use real preview of raster layer as icon (may be slow)
9293

9394
// behavioral flags
9495
AllowNodeReorder = 0x1000, //!< Allow reordering with drag'n'drop

0 commit comments

Comments
 (0)