From b99a1a753c708e1761fee6f7534ead3f50dde618 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 17 Sep 2011 20:24:24 +0200 Subject: [PATCH] * Fixed filter in TreeProxyModel. --- src/libtomahawk/playlist/treeproxymodel.cpp | 34 ++++++++++----------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/libtomahawk/playlist/treeproxymodel.cpp b/src/libtomahawk/playlist/treeproxymodel.cpp index c3310c1e7..250af08db 100644 --- a/src/libtomahawk/playlist/treeproxymodel.cpp +++ b/src/libtomahawk/playlist/treeproxymodel.cpp @@ -191,8 +191,7 @@ TreeProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex& sourceParent if ( result->track() == pi->result()->track() && ( result->albumpos() == pi->result()->albumpos() || result->albumpos() == 0 ) ) { - if ( result.data() != pi->result().data() ) - return false; + return ( result.data() == pi->result().data() ); } } @@ -213,30 +212,31 @@ TreeProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex& sourceParent return false; } } - -// tDebug() << "Accepting:" << pi->result()->toString() << pi->result()->collection()->source()->id(); - m_cache.insertMulti( sourceParent, pi->result() ); } + bool accepted = false; if ( m_filter.isEmpty() ) - return true; + accepted = true; + else if ( !pi->artist().isNull() ) + accepted = m_artistsFilter.contains( pi->artist() ); + else if ( !pi->album().isNull() ) + accepted = m_albumsFilter.contains( pi->album() ); - if ( !pi->artist().isNull() ) - return m_artistsFilter.contains( pi->artist() ); - if ( !pi->album().isNull() ) - return m_albumsFilter.contains( pi->album() ); - - QStringList sl = m_filter.split( " ", QString::SkipEmptyParts ); - foreach( const QString& s, sl ) + if ( !accepted ) { - if ( !pi->name().contains( s, Qt::CaseInsensitive ) && - !pi->albumName().contains( s, Qt::CaseInsensitive ) && - !pi->artistName().contains( s, Qt::CaseInsensitive ) ) + QStringList sl = m_filter.split( " ", QString::SkipEmptyParts ); + foreach( const QString& s, sl ) { - return false; + if ( !pi->name().contains( s, Qt::CaseInsensitive ) && + !pi->albumName().contains( s, Qt::CaseInsensitive ) && + !pi->artistName().contains( s, Qt::CaseInsensitive ) ) + { + return false; + } } } + m_cache.insertMulti( sourceParent, pi->result() ); return true; }