diff options
author | Arno <am@disconnect.de> | 2013-06-14 15:14:58 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-06-14 15:14:58 +0200 |
commit | deee95ecd5d92b93956061d4e6ae63246b8bc928 (patch) | |
tree | 8a12b93a118e78b431e526aa2178651f346d3200 /archiveview.cpp | |
parent | 35f5a0c5e13df3a0a41ef990b886a98ce2374a5c (diff) | |
download | SheMov-deee95ecd5d92b93956061d4e6ae63246b8bc928.tar.gz SheMov-deee95ecd5d92b93956061d4e6ae63246b8bc928.tar.bz2 SheMov-deee95ecd5d92b93956061d4e6ae63246b8bc928.zip |
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.
Diffstat (limited to 'archiveview.cpp')
-rw-r--r-- | archiveview.cpp | 23 |
1 files changed, 3 insertions, 20 deletions
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<ArchiveModel*>(sourceModel()); + return model->matchRecursive(nameIdx, mFilter); } |