1 /***************************************************************************
2   qgslayertreeviewofflineindicator.cpp
3   --------------------------------------
4   Date                 : October 2020
5   Copyright            : (C) 2020 by David Signer
6   Email                : david at opengis dot ch
7  ***************************************************************************
8  *                                                                         *
9  *   This program is free software; you can redistribute it and/or modify  *
10  *   it under the terms of the GNU General Public License as published by  *
11  *   the Free Software Foundation; either version 2 of the License, or     *
12  *   (at your option) any later version.                                   *
13  *                                                                         *
14  ***************************************************************************/
15 
16 #include "qgslayertreeviewofflineindicator.h"
17 #include "qgslayertreeview.h"
18 #include "qgslayertree.h"
19 #include "qgslayertreemodel.h"
20 #include "qgisapp.h"
21 
QgsLayerTreeViewOfflineIndicatorProvider(QgsLayerTreeView * view)22 QgsLayerTreeViewOfflineIndicatorProvider::QgsLayerTreeViewOfflineIndicatorProvider( QgsLayerTreeView *view )
23   : QgsLayerTreeViewIndicatorProvider( view )
24 {
25 
26 }
27 
connectSignals(QgsMapLayer * layer)28 void QgsLayerTreeViewOfflineIndicatorProvider::connectSignals( QgsMapLayer *layer )
29 {
30   if ( !layer )
31     return;
32 
33   connect( layer, &QgsMapLayer::customPropertyChanged, this, &QgsLayerTreeViewOfflineIndicatorProvider::onLayerChanged );
34 }
35 
disconnectSignals(QgsMapLayer * layer)36 void QgsLayerTreeViewOfflineIndicatorProvider::disconnectSignals( QgsMapLayer *layer )
37 {
38   if ( !layer )
39     return;
40 
41   disconnect( layer, &QgsMapLayer::customPropertyChanged, this, &QgsLayerTreeViewOfflineIndicatorProvider::onLayerChanged );
42 }
43 
acceptLayer(QgsMapLayer * layer)44 bool QgsLayerTreeViewOfflineIndicatorProvider::acceptLayer( QgsMapLayer *layer )
45 {
46   return layer->customProperty( QStringLiteral( "isOfflineEditable" ), false ).toBool();
47 }
48 
iconName(QgsMapLayer * layer)49 QString QgsLayerTreeViewOfflineIndicatorProvider::iconName( QgsMapLayer *layer )
50 {
51   Q_UNUSED( layer )
52   return QStringLiteral( "/mIndicatorOffline.svg" );
53 }
54 
tooltipText(QgsMapLayer * layer)55 QString QgsLayerTreeViewOfflineIndicatorProvider::tooltipText( QgsMapLayer *layer )
56 {
57   Q_UNUSED( layer )
58   return tr( "<b>Offline layer</b>" );
59 }
60 
onLayerChanged()61 void QgsLayerTreeViewOfflineIndicatorProvider::onLayerChanged()
62 {
63   QgsMapLayer *layer = qobject_cast<QgsMapLayer *>( sender() );
64   if ( !layer )
65     return;
66 
67   updateLayerIndicator( layer );
68 }
69