From 30cabb304c39a10a567f93e400baccd1172de068 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Mon, 5 Dec 2011 21:04:56 +0100 Subject: [PATCH] * Implement limiting for index searching. --- src/libtomahawk/database/databaseimpl.cpp | 17 ++++++++++++----- src/libtomahawk/database/databaseimpl.h | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/libtomahawk/database/databaseimpl.cpp b/src/libtomahawk/database/databaseimpl.cpp index b8e78eb31..136649b53 100644 --- a/src/libtomahawk/database/databaseimpl.cpp +++ b/src/libtomahawk/database/databaseimpl.cpp @@ -370,20 +370,27 @@ DatabaseImpl::albumId( int artistid, const QString& name_orig, bool autoCreate ) QList< QPair > DatabaseImpl::searchTable( const QString& table, const QString& name, uint limit ) { - Q_UNUSED( limit ); - QList< QPair > resultslist; - if( table != "artist" && table != "track" && table != "album" ) + if ( table != "artist" && table != "track" && table != "album" ) return resultslist; QMap< int, float > resultsmap = m_fuzzyIndex->search( table, name ); - foreach( int i, resultsmap.keys() ) + foreach ( int i, resultsmap.keys() ) { resultslist << QPair( i, (float)resultsmap.value( i ) ); } qSort( resultslist.begin(), resultslist.end(), DatabaseImpl::scorepairSorter ); - return resultslist; + if ( !limit ) + return resultslist; + + QList< QPair > resultscapped; + for ( unsigned int i = 0; i < limit && i < resultsmap.count(); i++ ) + { + resultscapped << resultslist.at( i ); + } + + return resultscapped; } diff --git a/src/libtomahawk/database/databaseimpl.h b/src/libtomahawk/database/databaseimpl.h index 7d43adbb1..0cd6b9498 100644 --- a/src/libtomahawk/database/databaseimpl.h +++ b/src/libtomahawk/database/databaseimpl.h @@ -56,7 +56,7 @@ public: int trackId( int artistid, const QString& name_orig, bool autoCreate ); int albumId( int artistid, const QString& name_orig, bool autoCreate ); - QList< QPair > searchTable( const QString& table, const QString& name, uint limit = 10 ); + QList< QPair > searchTable( const QString& table, const QString& name, uint limit = 0 ); QList< int > getTrackFids( int tid ); static QString sortname( const QString& str, bool replaceArticle = false );