From b518f8968ae898194b343401e0f3a15610ad4af4 Mon Sep 17 00:00:00 2001 From: Martchus Date: Fri, 8 Apr 2016 00:04:23 +0200 Subject: [PATCH] tweaked filter --- gui/mainwindow.cpp | 2 +- model/entryfiltermodel.cpp | 8 ++++++++ model/entrymodel.cpp | 2 +- model/fieldmodel.cpp | 3 ++- model/fieldmodel.h | 5 +++-- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index aa976b6..80e3db1 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -1010,12 +1010,12 @@ void MainWindow::removeEntry() */ void MainWindow::applyFilter(const QString &filterText) { + m_entryFilterModel->setFilterRegExp(filterText); if(filterText.isEmpty()) { applyDefaultExpanding(QModelIndex()); } else { m_ui->treeView->expandAll(); } - m_entryFilterModel->setFilterRegExp(filterText); } /*! diff --git a/model/entryfiltermodel.cpp b/model/entryfiltermodel.cpp index 4ee5f84..1e3b231 100644 --- a/model/entryfiltermodel.cpp +++ b/model/entryfiltermodel.cpp @@ -19,9 +19,17 @@ EntryFilterModel::EntryFilterModel(QObject *parent) : bool EntryFilterModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { + // just use default implementation if(QSortFilterProxyModel::filterAcceptsRow(sourceRow, sourceParent)) { return true; } + + // also accept rows where the direct parent is accepted + if(sourceParent.isValid() && QSortFilterProxyModel::filterAcceptsRow(sourceParent.row(), sourceParent.parent())) { + return true; + } + + // also accept rows which contain accepted childs return hasAcceptedChildren(sourceModel()->index(sourceRow, 0, sourceParent)); } diff --git a/model/entrymodel.cpp b/model/entrymodel.cpp index 5a391e9..b9cbcc4 100644 --- a/model/entrymodel.cpp +++ b/model/entrymodel.cpp @@ -1,7 +1,7 @@ #include "./entrymodel.h" #ifdef MODEL_UNDO_SUPPORT -#include "./gui/undocommands.h" +# include "./gui/undocommands.h" #endif #include diff --git a/model/fieldmodel.cpp b/model/fieldmodel.cpp index 48356db..7d19d48 100644 --- a/model/fieldmodel.cpp +++ b/model/fieldmodel.cpp @@ -1,6 +1,7 @@ #include "./fieldmodel.h" + #ifdef MODEL_UNDO_SUPPORT -#include "./gui/undocommands.h" +# include "./gui/undocommands.h" #endif #include diff --git a/model/fieldmodel.h b/model/fieldmodel.h index c7e1ad3..1158742 100644 --- a/model/fieldmodel.h +++ b/model/fieldmodel.h @@ -1,11 +1,12 @@ #ifndef FIELDMODEL_H #define FIELDMODEL_H -#include #ifdef MODEL_UNDO_SUPPORT -#include "gui/stacksupport.h" +# include "gui/stacksupport.h" #endif +#include + #include #include