Skip to content

Commit

Permalink
use native recursive filtering of QSortFilterProxyModel, avoid usage …
Browse files Browse the repository at this point in the history
…of re-implementation
  • Loading branch information
3nids committed Nov 10, 2021
1 parent 440f572 commit a3e9d11
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
14 changes: 9 additions & 5 deletions src/gui/providers/qgsdbsourceselectbase.cpp
Expand Up @@ -15,20 +15,20 @@

#include "qgsabstractdbtablemodel.h"
#include "qgsdbsourceselectbase.h"
#include "qgsdbfilterproxymodel.h"

#include <QMenu>

#include <QSortFilterProxyModel>

QgsDbSourceSelectBase::QgsDbSourceSelectBase( QWidget *parent, Qt::WindowFlags fl, QgsProviderRegistry::WidgetMode widgetMode )
: QgsAbstractDataSourceWidget( parent, fl, widgetMode )
{
setupUi( this );

mProxyModel = new QgsDatabaseFilterProxyModel( this );
mProxyModel = new QSortFilterProxyModel( this );
mProxyModel->setParent( this );
mProxyModel->setFilterKeyColumn( -1 );
mProxyModel->setFilterCaseSensitivity( Qt::CaseInsensitive );
mProxyModel->setRecursiveFilteringEnabled( true );

// Do not do dynamic sorting - otherwise whenever user selects geometry type / srid / pk columns,
// that item suddenly jumps to the end of the list (because the item gets changed) which is very annoying.
Expand Down Expand Up @@ -115,11 +115,15 @@ void QgsDbSourceSelectBase::filterResults()

if ( regex )
{
mProxyModel->_setFilterRegExp( searchText );
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
mProxyModel->setFilterRegExp( searchText );
#else
mProxyModel->setFilterRegularExpression( searchText );
#endif
}
else
{
mProxyModel->_setFilterWildcard( searchText );
mProxyModel->setFilterWildcard( searchText );
}
}

6 changes: 3 additions & 3 deletions src/gui/providers/qgsdbsourceselectbase.h
Expand Up @@ -21,7 +21,7 @@
#include "ui_qgsdbsourceselectbase.h"
#include "qgsabstractdatasourcewidget.h"

class QgsDatabaseFilterProxyModel;
class QSortFilterProxyModel;
class QgsAbstractDbTableModel;

/**
Expand All @@ -41,12 +41,12 @@ class GUI_EXPORT QgsDbSourceSelectBase : public QgsAbstractDataSourceWidget, pro
void setSourceModel( QgsAbstractDbTableModel *model );

//! Returns the proxy model used to filter the results
QgsDatabaseFilterProxyModel *proxyModel() {return mProxyModel;}
QSortFilterProxyModel *proxyModel() {return mProxyModel;}

private:
void filterResults();

QgsDatabaseFilterProxyModel *mProxyModel = nullptr;
QSortFilterProxyModel *mProxyModel = nullptr;
QMenu *mSearchSettingsMenu = nullptr;

QAction *mSearchColumnAllAction = nullptr;
Expand Down

0 comments on commit a3e9d11

Please sign in to comment.