30
30
#include < QFileDialog>
31
31
#include < QMessageBox>
32
32
33
-
34
33
QgsSelectLayerTreeModel::QgsSelectLayerTreeModel ( QgsLayerTree *rootNode, QObject *parent )
35
34
: QgsLayerTreeModel( rootNode, parent )
36
35
{
37
36
setFlag ( QgsLayerTreeModel::ShowLegend, false );
38
37
setFlag ( QgsLayerTreeModel::AllowNodeChangeVisibility, true );
39
38
}
40
39
40
+ int QgsSelectLayerTreeModel::columnCount ( const QModelIndex &parent ) const
41
+ {
42
+ Q_UNUSED ( parent );
43
+ return QgsLayerTreeModel::columnCount ( parent ) + 1 ;
44
+ }
45
+
46
+
41
47
QVariant QgsSelectLayerTreeModel::data ( const QModelIndex &index, int role ) const
42
48
{
43
- if ( role == Qt::CheckStateRole )
49
+ QgsLayerTreeNode *node = index2node ( index );
50
+ if ( index.column () == 0 )
44
51
{
45
- QgsLayerTreeNode *node = index2node ( index );
46
- if ( QgsLayerTree::isLayer ( node ) )
52
+ if ( role == Qt::CheckStateRole )
47
53
{
48
- QgsLayerTreeLayer *nodeLayer = QgsLayerTree::toLayer ( node );
49
- return nodeLayer->isVisible ();
54
+ if ( QgsLayerTree::isLayer ( node ) )
55
+ {
56
+ QgsLayerTreeLayer *nodeLayer = QgsLayerTree::toLayer ( node );
57
+ return nodeLayer->isVisible ();
58
+ }
59
+ else if ( QgsLayerTree::isGroup ( node ) )
60
+ {
61
+ QgsLayerTreeGroup *nodeGroup = QgsLayerTree::toGroup ( node );
62
+ return nodeGroup->isVisible ();
63
+ }
64
+ else
65
+ {
66
+ return QVariant ();
67
+ }
50
68
}
51
- else if ( QgsLayerTree::isGroup ( node ) )
52
- {
53
- QgsLayerTreeGroup *nodeGroup = QgsLayerTree::toGroup ( node );
54
- return nodeGroup->isVisible ();
55
- }
56
- else
69
+ }
70
+ else
71
+ {
72
+ if ( QgsLayerTree::isLayer ( node ) && index.column () > 0 )
57
73
{
58
- return QVariant ();
74
+ QgsLayerTreeLayer *nodeLayer = QgsLayerTree::toLayer ( node );
75
+ if ( nodeLayer->layer ()->dataProvider ()->name () == QStringLiteral ( " WFS" ) )
76
+ {
77
+ switch ( role )
78
+ {
79
+ case Qt::ToolTipRole:
80
+ return tr ( " The source of this layer is a <b>WFS</b> server.<br>"
81
+ " Some WFS layers are not suitable for offline<br>"
82
+ " editing due to unreliable/missing primary<br>"
83
+ " keys, please check with your system<br>"
84
+ " administrator if this WFS layer can<br>"
85
+ " be used for offline editing." );
86
+ break ;
87
+ case Qt::DecorationRole:
88
+ return QgsApplication::getThemeIcon ( " /mIconWarning.svg" );
89
+ break ;
90
+ }
91
+ }
59
92
}
93
+ return QVariant ();
60
94
}
61
95
return QgsLayerTreeModel::data ( index, role );
62
96
}
@@ -79,6 +113,7 @@ QgsOfflineEditingPluginGui::QgsOfflineEditingPluginGui( QWidget *parent, Qt::Win
79
113
QgsLayerTree *rootNode = QgsProject::instance ()->layerTreeRoot ()->clone ();
80
114
QgsLayerTreeModel *treeModel = new QgsSelectLayerTreeModel ( rootNode, this );
81
115
mLayerTree ->setModel ( treeModel );
116
+ mLayerTree ->header ()->setResizeMode ( QHeaderView::ResizeToContents );
82
117
83
118
connect ( mSelectAllButton , &QAbstractButton::clicked, this , &QgsOfflineEditingPluginGui::selectAll );
84
119
connect ( mDeselectAllButton , &QAbstractButton::clicked, this , &QgsOfflineEditingPluginGui::deSelectAll );
@@ -87,8 +122,8 @@ QgsOfflineEditingPluginGui::QgsOfflineEditingPluginGui( QWidget *parent, Qt::Win
87
122
QgsOfflineEditingPluginGui::~QgsOfflineEditingPluginGui ()
88
123
{
89
124
QgsSettings settings;
90
- settings.setValue ( QStringLiteral ( " Plugin- OfflineEditing/geometry" ), saveGeometry () );
91
- settings.setValue ( QStringLiteral ( " Plugin- OfflineEditing/offline_data_path" ), mOfflineDataPath );
125
+ settings.setValue ( QStringLiteral ( " OfflineEditing/geometry" ), saveGeometry (), QgsSettings::Section::Plugins );
126
+ settings.setValue ( QStringLiteral ( " OfflineEditing/offline_data_path" ), mOfflineDataPath , QgsSettings::Section::Plugins );
92
127
}
93
128
94
129
QString QgsOfflineEditingPluginGui::offlineDataPath ()
@@ -172,8 +207,8 @@ void QgsOfflineEditingPluginGui::showHelp()
172
207
void QgsOfflineEditingPluginGui::restoreState ()
173
208
{
174
209
QgsSettings settings;
175
- mOfflineDataPath = settings.value ( QStringLiteral ( " Plugin- OfflineEditing/offline_data_path" ), QDir::homePath () ).toString ();
176
- restoreGeometry ( settings.value ( QStringLiteral ( " Plugin- OfflineEditing/geometry" ) ).toByteArray () );
210
+ mOfflineDataPath = settings.value ( QStringLiteral ( " OfflineEditing/offline_data_path" ), QDir::homePath (), QgsSettings::Section::Plugins ).toString ();
211
+ restoreGeometry ( settings.value ( QStringLiteral ( " OfflineEditing/geometry" ), QgsSettings::Section::Plugins ).toByteArray () );
177
212
}
178
213
179
214
void QgsOfflineEditingPluginGui::selectAll ()
0 commit comments