Skip to content

Commit 9cefd3a

Browse files
committed
add optional filter for spatial only layers
1 parent b224569 commit 9cefd3a

4 files changed

+46
-21
lines changed

src/app/qgslayercapabilitiesmodel.cpp

+12-1
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,15 @@ QgsMapLayer *QgsLayerCapabilitiesModel::mapLayer( const QModelIndex &idx ) const
174174
return QgsLayerTree::toLayer( node )->layer();
175175
}
176176

177+
void QgsLayerCapabilitiesModel::setShowSpatialLayersOnly( bool only )
178+
{
179+
if ( only == mShowSpatialLayersOnly )
180+
return;
181+
182+
mShowSpatialLayersOnly = only;
183+
invalidateFilter();
184+
}
185+
177186
QModelIndex QgsLayerCapabilitiesModel::index( int row, int column, const QModelIndex &parent ) const
178187
{
179188
QModelIndex newIndex = QSortFilterProxyModel::index( row, LayerColumn, parent );
@@ -298,6 +307,8 @@ bool QgsLayerCapabilitiesModel::nodeShown( QgsLayerTreeNode *node ) const
298307
else
299308
{
300309
QgsMapLayer *layer = QgsLayerTree::toLayer( node )->layer();
301-
return layer && ( mFilterText.isEmpty() || layer->name().contains( mFilterText, Qt::CaseInsensitive ) );
310+
return layer
311+
&& ( mFilterText.isEmpty() || layer->name().contains( mFilterText, Qt::CaseInsensitive ) )
312+
&& ( !mShowSpatialLayersOnly || layer->isSpatial() );
302313
}
303314
}

src/app/qgslayercapabilitiesmodel.h

+2
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class APP_EXPORT QgsLayerCapabilitiesModel : public QSortFilterProxyModel
4646
bool readOnly( QgsMapLayer *layer ) const;
4747
bool searchable( QgsMapLayer *layer ) const;
4848
QgsMapLayer *mapLayer( const QModelIndex &idx ) const;
49+
void setShowSpatialLayersOnly( bool only );
4950

5051
int columnCount( const QModelIndex &parent ) const override;
5152
QVariant headerData( int section, Qt::Orientation orientation, int role ) const override;
@@ -67,6 +68,7 @@ class APP_EXPORT QgsLayerCapabilitiesModel : public QSortFilterProxyModel
6768
bool nodeShown( QgsLayerTreeNode *node ) const;
6869

6970
QString mFilterText;
71+
bool mShowSpatialLayersOnly = false;
7072
QStringList mNonIdentifiableLayers;
7173
QHash<QgsMapLayer *, bool> mReadOnlyLayers;
7274
QHash<QgsMapLayer *, bool> mSearchableLayers;

src/app/qgsprojectproperties.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,11 @@ QgsProjectProperties::QgsProjectProperties( QgsMapCanvas *mapCanvas, QWidget *pa
387387
mLayerCapabilitiesTree->repaint();
388388
} );
389389

390+
connect( mShowSpatialLayersCheckBox, &QCheckBox::stateChanged, this, [ = ]( int state )
391+
{
392+
mLayerCapabilitiesModel->setShowSpatialLayersOnly( static_cast<bool>( state ) );
393+
} );
394+
390395
grpOWSServiceCapabilities->setChecked( QgsProject::instance()->readBoolEntry( QStringLiteral( "WMSServiceCapabilities" ), QStringLiteral( "/" ), false ) );
391396
mWMSTitle->setText( QgsProject::instance()->readEntry( QStringLiteral( "WMSServiceTitle" ), QStringLiteral( "/" ) ) );
392397
mWMSName->setText( QgsProject::instance()->readEntry( QStringLiteral( "WMSRootName" ), QStringLiteral( "/" ) ) );

src/ui/qgsprojectpropertiesbase.ui

+27-20
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@
277277
<rect>
278278
<x>0</x>
279279
<y>0</y>
280-
<width>676</width>
280+
<width>563</width>
281281
<height>833</height>
282282
</rect>
283283
</property>
@@ -875,8 +875,8 @@
875875
<rect>
876876
<x>0</x>
877877
<y>0</y>
878-
<width>676</width>
879-
<height>764</height>
878+
<width>547</width>
879+
<height>152</height>
880880
</rect>
881881
</property>
882882
<layout class="QVBoxLayout" name="verticalLayout_7">
@@ -950,8 +950,8 @@
950950
<rect>
951951
<x>0</x>
952952
<y>0</y>
953-
<width>676</width>
954-
<height>764</height>
953+
<width>271</width>
954+
<height>597</height>
955955
</rect>
956956
</property>
957957
<layout class="QVBoxLayout" name="verticalLayout_12">
@@ -1411,17 +1411,10 @@
14111411
<string>Project Layers</string>
14121412
</property>
14131413
<layout class="QGridLayout" name="gridLayout_20">
1414-
<item row="0" column="2">
1415-
<widget class="QPushButton" name="mLayerCapabilitiesCheckButton">
1416-
<property name="text">
1417-
<string>check selection</string>
1418-
</property>
1419-
</widget>
1420-
</item>
1421-
<item row="1" column="0" colspan="4">
1422-
<widget class="QTreeView" name="mLayerCapabilitiesTree"/>
1414+
<item row="3" column="3">
1415+
<widget class="QgsFilterLineEdit" name="mLayerCapabilitiesTreeFilterLineEdit"/>
14231416
</item>
1424-
<item row="0" column="0">
1417+
<item row="3" column="2">
14251418
<spacer name="horizontalSpacer_5">
14261419
<property name="orientation">
14271420
<enum>Qt::Horizontal</enum>
@@ -1434,16 +1427,30 @@
14341427
</property>
14351428
</spacer>
14361429
</item>
1437-
<item row="0" column="3">
1438-
<widget class="QgsFilterLineEdit" name="mLayerCapabilitiesTreeFilterLineEdit"/>
1439-
</item>
1440-
<item row="0" column="1">
1430+
<item row="3" column="0">
14411431
<widget class="QPushButton" name="mLayerCapabilitiesUncheckButton">
14421432
<property name="text">
14431433
<string>uncheck selection</string>
14441434
</property>
14451435
</widget>
14461436
</item>
1437+
<item row="3" column="1">
1438+
<widget class="QPushButton" name="mLayerCapabilitiesCheckButton">
1439+
<property name="text">
1440+
<string>check selection</string>
1441+
</property>
1442+
</widget>
1443+
</item>
1444+
<item row="2" column="3">
1445+
<widget class="QCheckBox" name="mShowSpatialLayersCheckBox">
1446+
<property name="text">
1447+
<string>show spatial layers only</string>
1448+
</property>
1449+
</widget>
1450+
</item>
1451+
<item row="1" column="0" colspan="4">
1452+
<widget class="QTreeView" name="mLayerCapabilitiesTree"/>
1453+
</item>
14471454
</layout>
14481455
</widget>
14491456
</item>
@@ -1635,7 +1642,7 @@
16351642
<x>0</x>
16361643
<y>0</y>
16371644
<width>603</width>
1638-
<height>2365</height>
1645+
<height>2666</height>
16391646
</rect>
16401647
</property>
16411648
<layout class="QVBoxLayout" name="verticalLayout_13">

0 commit comments

Comments
 (0)