From d995eeb0d74d1dbddd920f1f339478af99a5b135 Mon Sep 17 00:00:00 2001 From: Alessandro Pasotti Date: Tue, 30 Oct 2018 17:26:10 +0100 Subject: [PATCH] Filter layers by type in the data source select dialog --- src/app/qgslayertreeviewbadlayerindicator.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/app/qgslayertreeviewbadlayerindicator.cpp b/src/app/qgslayertreeviewbadlayerindicator.cpp index 62fef05f332f..0ee58a2ec4c6 100644 --- a/src/app/qgslayertreeviewbadlayerindicator.cpp +++ b/src/app/qgslayertreeviewbadlayerindicator.cpp @@ -24,6 +24,7 @@ #include "qgisapp.h" #include "qgsbrowsermodel.h" #include "qgsbrowsertreeview.h" +#include "qgsbrowserproxymodel.h" #include #include @@ -55,16 +56,21 @@ void QgsLayerTreeViewBadLayerIndicatorProvider::onIndicatorClicked( const QModel QString providerType( layer->providerType() ); QgsMapLayer::LayerType layerType( layer->type() ); + // Builds the dialog to select a new data source QgsBrowserModel browserModel; browserModel.initialize(); + QgsBrowserProxyModel proxyModel; + proxyModel.setBrowserModel( &browserModel ); + proxyModel.setFilterByLayerType( true ); + proxyModel.setLayerType( layerType ); QDialog dlg; dlg.setWindowTitle( tr( "Select the new data source" ) ); QByteArray dlgGeom( QgsSettings().value( QStringLiteral( "/Windows/selectDataSourceDialog/geometry" ), QVariant(), QgsSettings::Section::App ).toByteArray() ); dlg.restoreGeometry( dlgGeom ); QVBoxLayout lay( &dlg ); QgsBrowserTreeView *browserWidget( new QgsBrowserTreeView( ) ); - browserWidget->setModel( &browserModel ); + browserWidget->setModel( &proxyModel ); browserWidget->setHeaderHidden( true ); lay.addWidget( browserWidget ); QDialogButtonBox *buttonBox( new QDialogButtonBox( QDialogButtonBox::StandardButton::Ok | QDialogButtonBox::StandardButton::Cancel ) );