Fix filtering in various hierarchical views

The intermediate "category" nodes where never filtered out.

CategorySortFilterModel was changed to use filterRegularExpression() and
setFilterFixedString does not set that (it only affects filterRegExp()
which we need to get rid off).
Set a regular expression directly instead of a fixed string.

Amends 47e576528e

Change-Id: I6f844027b83d66ca2d5088d83e6e84b01b9eda45
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Eike Ziller
2020-06-22 12:22:11 +02:00
parent f568648768
commit ba5b1fc8ab
4 changed files with 19 additions and 9 deletions

View File

@@ -315,7 +315,6 @@ PluginView::PluginView(QWidget *parent)
m_sortModel = new CategorySortFilterModel(this);
m_sortModel->setSourceModel(m_model);
m_sortModel->setSortRole(SortRole);
m_sortModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
m_sortModel->setFilterKeyColumn(-1/*all*/);
m_categoryView->setModel(m_sortModel);
@@ -357,7 +356,9 @@ PluginSpec *PluginView::currentPlugin() const
*/
void PluginView::setFilter(const QString &filter)
{
m_sortModel->setFilterFixedString(filter);
m_sortModel->setFilterRegularExpression(
QRegularExpression(QRegularExpression::escape(filter),
QRegularExpression::CaseInsensitiveOption));
m_categoryView->expandAll();
}

View File

@@ -153,7 +153,6 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
m_configTextFilterModel->setSourceModel(m_configFilterModel);
m_configTextFilterModel->setSortRole(Qt::DisplayRole);
m_configTextFilterModel->setFilterKeyColumn(-1);
m_configTextFilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
connect(m_configTextFilterModel, &QAbstractItemModel::layoutChanged, this, [this]() {
QModelIndex selectedIdx = m_configView->currentIndex();
@@ -271,8 +270,14 @@ CMakeBuildSettingsWidget::CMakeBuildSettingsWidget(CMakeBuildConfiguration *bc)
connect(m_showAdvancedCheckBox, &QCheckBox::stateChanged,
this, &CMakeBuildSettingsWidget::updateAdvancedCheckBox);
connect(m_filterEdit, &QLineEdit::textChanged,
m_configTextFilterModel, &QSortFilterProxyModel::setFilterFixedString);
connect(m_filterEdit,
&QLineEdit::textChanged,
m_configTextFilterModel,
[this](const QString &txt) {
m_configTextFilterModel->setFilterRegularExpression(
QRegularExpression(QRegularExpression::escape(txt),
QRegularExpression::CaseInsensitiveOption));
});
connect(m_resetButton, &QPushButton::clicked, m_configModel, &ConfigModel::resetAllChanges);
connect(m_reconfigureButton,

View File

@@ -190,7 +190,6 @@ public:
m_proxyModel = new CategorySortFilterModel(m_ui.filterList);
m_proxyModel->setSourceModel(m_model);
m_proxyModel->setSortRole(SortRole);
m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
m_proxyModel->setFilterKeyColumn(-1/*all*/);
m_ui.filterList->setModel(m_proxyModel);
m_ui.filterList->expandAll();
@@ -294,7 +293,9 @@ void LocatorSettingsWidget::requestRefresh()
void LocatorSettingsWidget::setFilter(const QString &text)
{
m_proxyModel->setFilterFixedString(text);
m_proxyModel->setFilterRegularExpression(
QRegularExpression(QRegularExpression::escape(text),
QRegularExpression::CaseInsensitiveOption));
m_ui.filterList->expandAll();
}

View File

@@ -69,7 +69,6 @@ MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buil
m_optionsFilter.setSourceModel(&m_optionsModel);
m_optionsFilter.setSortRole(Qt::DisplayRole);
m_optionsFilter.setFilterKeyColumn(-1);
m_optionsFilter.setFilterCaseSensitivity(Qt::CaseInsensitive);
ui->optionsTreeView->setModel(&m_optionsFilter);
@@ -109,7 +108,11 @@ MesonBuildSettingsWidget::MesonBuildSettingsWidget(MesonBuildConfiguration *buil
connect(ui->optionsFilterLineEdit,
&QLineEdit::textChanged,
&m_optionsFilter,
&QSortFilterProxyModel::setFilterFixedString);
[this](const QString &txt) {
m_optionsFilter.setFilterRegularExpression(
QRegularExpression(QRegularExpression::escape(txt),
QRegularExpression::CaseInsensitiveOption));
});
connect(ui->optionsTreeView,
&Utils::TreeView::activated,
ui->optionsTreeView,