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