Skip to content

Commit 2af5fd1

Browse files
committedNov 5, 2018
Bad layers indicator raster support
1 parent 66b9b5f commit 2af5fd1

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed
 

‎src/app/qgslayertreeviewindicatorprovider.cpp

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "qgslayertreeutils.h"
2121
#include "qgslayertreeview.h"
2222
#include "qgsvectorlayer.h"
23+
#include "qgsrasterlayer.h"
2324
#include "qgisapp.h"
2425

2526
QgsLayerTreeViewIndicatorProvider::QgsLayerTreeViewIndicatorProvider( QgsLayerTreeView *view )
@@ -89,16 +90,20 @@ void QgsLayerTreeViewIndicatorProvider::onWillRemoveChildren( QgsLayerTreeNode *
8990

9091
void QgsLayerTreeViewIndicatorProvider::onLayerLoaded()
9192
{
93+
9294
QgsLayerTreeLayer *layerNode = qobject_cast<QgsLayerTreeLayer *>( sender() );
9395
if ( !layerNode )
9496
return;
9597

96-
if ( QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layerNode->layer() ) )
98+
if ( !( qobject_cast<QgsVectorLayer *>( layerNode->layer() ) || qobject_cast<QgsRasterLayer *>( layerNode->layer() ) ) )
99+
return;
100+
101+
if ( QgsMapLayer *mapLayer = qobject_cast<QgsMapLayer *>( layerNode->layer() ) )
97102
{
98-
if ( vlayer )
103+
if ( mapLayer )
99104
{
100-
connectSignals( vlayer );
101-
addOrRemoveIndicator( layerNode, vlayer );
105+
connectSignals( mapLayer );
106+
addOrRemoveIndicator( layerNode, mapLayer );
102107
}
103108
}
104109
}
@@ -123,18 +128,18 @@ void QgsLayerTreeViewIndicatorProvider::onLayerChanged()
123128

124129
void QgsLayerTreeViewIndicatorProvider::connectSignals( QgsMapLayer *layer )
125130
{
126-
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
127-
if ( !vlayer )
131+
if ( !( qobject_cast<QgsVectorLayer *>( layer ) || qobject_cast<QgsRasterLayer *>( layer ) ) )
128132
return;
129-
connect( vlayer, &QgsVectorLayer::dataSourceChanged, this, &QgsLayerTreeViewIndicatorProvider::onLayerChanged );
133+
QgsMapLayer *mapLayer = qobject_cast<QgsMapLayer *>( layer );
134+
connect( mapLayer, &QgsMapLayer::dataSourceChanged, this, &QgsLayerTreeViewIndicatorProvider::onLayerChanged );
130135
}
131136

132137
void QgsLayerTreeViewIndicatorProvider::disconnectSignals( QgsMapLayer *layer )
133138
{
134-
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( layer );
135-
if ( !vlayer )
139+
if ( !( qobject_cast<QgsVectorLayer *>( layer ) || qobject_cast<QgsRasterLayer *>( layer ) ) )
136140
return;
137-
disconnect( vlayer, &QgsVectorLayer::dataSourceChanged, this, &QgsLayerTreeViewIndicatorProvider::onLayerChanged );
141+
QgsMapLayer *mapLayer = qobject_cast<QgsMapLayer *>( layer );
142+
disconnect( mapLayer, &QgsMapLayer::dataSourceChanged, this, &QgsLayerTreeViewIndicatorProvider::onLayerChanged );
138143
}
139144

140145
std::unique_ptr< QgsLayerTreeViewIndicator > QgsLayerTreeViewIndicatorProvider::newIndicator( QgsMapLayer *layer )

‎src/app/qgslayertreeviewindicatorprovider.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ class QgsMapLayer;
3838
*
3939
* Subclasses may override:
4040
* - onIndicatorClicked() default implementation does nothing
41-
* - connectSignals() default implementation connects vector layers to dataSourceChanged()
42-
* - disconnectSignals() default implementation disconnects vector layers from dataSourceChanged()
41+
* - connectSignals() default implementation connects layers to dataSourceChanged()
42+
* - disconnectSignals() default implementation disconnects layers from dataSourceChanged()
4343
*/
4444
class QgsLayerTreeViewIndicatorProvider : public QObject
4545
{
@@ -51,9 +51,9 @@ class QgsLayerTreeViewIndicatorProvider : public QObject
5151
protected:
5252

5353
// Subclasses MAY override:
54-
//! Connect signals, default implementation connects vector layers to dataSourceChanged()
54+
//! Connect signals, default implementation connects layers to dataSourceChanged()
5555
virtual void connectSignals( QgsMapLayer *layer );
56-
//! Disconnect signals, default implementation disconnects vector layers from dataSourceChanged()
56+
//! Disconnect signals, default implementation disconnects layers from dataSourceChanged()
5757
virtual void disconnectSignals( QgsMapLayer *layer );
5858

5959
protected slots:

0 commit comments

Comments
 (0)
Please sign in to comment.