diff options
Diffstat (limited to 'collectionwidgetproxy.cpp')
-rw-r--r-- | collectionwidgetproxy.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/collectionwidgetproxy.cpp b/collectionwidgetproxy.cpp new file mode 100644 index 0000000..b3427b2 --- /dev/null +++ b/collectionwidgetproxy.cpp @@ -0,0 +1,20 @@ +#include <QStandardItemModel> + +#include "collectionwidgetproxy.h" + +CollectionWidgetProxy::CollectionWidgetProxy(QObject *parent) : QSortFilterProxyModel(parent) { +} + +bool CollectionWidgetProxy::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const { + const QStandardItemModel *srcM = qobject_cast<const QStandardItemModel*>(sourceModel()); + QModelIndex rootIdx = srcM->invisibleRootItem()->index(); + QModelIndex curIdx = srcM->index(source_row, 0, source_parent); + if(curIdx == rootIdx){ + return true; + } + while(curIdx.parent() != rootIdx){ + curIdx = curIdx.parent(); + } + QString cur = curIdx.data().toString(); + return cur.contains(filterRegExp()); +} |