From deee95ecd5d92b93956061d4e6ae63246b8bc928 Mon Sep 17 00:00:00 2001 From: Arno Date: Fri, 14 Jun 2013 15:14:58 +0200 Subject: Filter recursive Well, well... Recursion isn't that bad at all. Filter experimental ArchiveView recursive by the following rules: * check children _and_ parents for filter * if any child _or_ parent matches, accept the current row, parents and children. The column is converted to a QString and matched by QRegExp, so don't try to match numbers or anything else. --- archiveview.cpp | 23 +++-------------------- 1 file changed, 3 insertions(+), 20 deletions(-) (limited to 'archiveview.cpp') diff --git a/archiveview.cpp b/archiveview.cpp index 96bf01b..263bc41 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -228,24 +228,7 @@ bool ArchiveProxy::filterAcceptsRow(int sourceRow, const QModelIndex &sourcePare if(mFilter.isEmpty()){ return true; } - QModelIndex nodeIdx = sourceModel()->index(sourceRow, ArchiveModel::Type, sourceParent); - if(mSortOrder == ArchiveModel::SeriesName){ - if(nodeIdx.data().toInt() == ArchiveModel::SeriesNode){ - QModelIndex nameIdx = sourceModel()->index(sourceRow, ArchiveModel::Name, sourceParent); - QString name = nameIdx.data().toString(); - return name.contains(mFilter); - }else{ - return true; - } - }else if(mSortOrder == ArchiveModel::Genre || mSortOrder == ArchiveModel::Actor){ - int nodeType = nodeIdx.data().toInt(); - if(nodeType == ArchiveModel::ActorNode || nodeType == ArchiveModel::GenreNode){ - QModelIndex nameIdx = sourceModel()->index(sourceRow, ArchiveModel::Name, sourceParent); - QString name = nameIdx.data().toString(); - return name.contains(mFilter); - }else{ - return true; - } - } - return false; + QModelIndex nameIdx = sourceModel()->index(sourceRow, ArchiveModel::Name, sourceParent); + ArchiveModel *model = qobject_cast(sourceModel()); + return model->matchRecursive(nameIdx, mFilter); } -- cgit v1.2.3-70-g09d2