From c1d9bd62444356b8b87083835cfac245a32b1fba Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 3 Apr 2015 17:20:12 +0200 Subject: [PATCH 1/9] Move score-keeping from Result to Query. --- src/libtomahawk/Query.cpp | 26 +++++++++++++++++++------- src/libtomahawk/Query.h | 5 ++++- src/libtomahawk/Result.cpp | 25 ++++--------------------- src/libtomahawk/Result.h | 4 ---- 4 files changed, 27 insertions(+), 33 deletions(-) diff --git a/src/libtomahawk/Query.cpp b/src/libtomahawk/Query.cpp index c8f6cfef1..dfd5236e4 100644 --- a/src/libtomahawk/Query.cpp +++ b/src/libtomahawk/Query.cpp @@ -151,6 +151,7 @@ Query::init() d->solved = false; d->playable = false; d->saveResultHint = false; + d->score = 0.0; } @@ -196,7 +197,7 @@ Query::addResults( const QList< Tomahawk::result_ptr >& newresults ) }*/ d->results << newresults; - qStableSort( d->results.begin(), d->results.end(), Query::resultSorter ); + qStableSort( d->results.begin(), d->results.end(), std::bind( &Query::resultSorter, this, std::placeholders::_1, std::placeholders::_2 ) ); // hook up signals, and check solved status foreach( const result_ptr& rp, newresults ) @@ -265,8 +266,8 @@ Query::onResultStatusChanged() { Q_D( Query ); QMutexLocker lock( &d->mutex ); - if ( d->results.count() ) - qStableSort( d->results.begin(), d->results.end(), Query::resultSorter ); + if ( !d->results.isEmpty() ) + qStableSort( d->results.begin(), d->results.end(), std::bind( &Query::resultSorter, this, std::placeholders::_1, std::placeholders::_2 ) ); } checkResults(); @@ -404,8 +405,8 @@ Query::id() const bool Query::resultSorter( const result_ptr& left, const result_ptr& right ) { - const float ls = left->isOnline() ? left->score() : 0.0; - const float rs = right->isOnline() ? right->score() : 0.0; + const float ls = left->isOnline() ? howSimilar( left ) : 0.0; + const float rs = right->isOnline() ? howSimilar( right ) : 0.0; if ( ls == rs ) { @@ -509,6 +510,10 @@ void Query::checkResults() { Q_D( Query ); + if ( !d->results.isEmpty() ) + { + d->score = howSimilar( d->results.first() ); + } bool playable = false; bool solved = false; @@ -521,7 +526,7 @@ Query::checkResults() if ( rp->playable() ) playable = true; - if ( rp->isOnline() && rp->score() > 0.99 ) + if ( rp->isOnline() && howSimilar( rp ) > 0.99 ) { solved = true; } @@ -602,6 +607,14 @@ Query::toString() const } +float +Query::score() const +{ + Q_D( const Query ); + return d->score; +} + + // TODO make clever (ft. featuring live (stuff) etc) float Query::howSimilar( const Tomahawk::result_ptr& r ) @@ -716,4 +729,3 @@ Query::setWeakRef( QWeakPointer weakRef ) Q_D( Query ); d->ownRef = weakRef; } - diff --git a/src/libtomahawk/Query.h b/src/libtomahawk/Query.h index 1b9bb9342..0e27fdf1e 100644 --- a/src/libtomahawk/Query.h +++ b/src/libtomahawk/Query.h @@ -79,6 +79,9 @@ public: /// true when any result has been found (score may be less than 1.0) bool playable() const; + float score() const; + void setScore( float score ); + Tomahawk::Resolver* currentResolver() const; QList< QPointer< Tomahawk::Resolver > > resolvedBy() const; @@ -109,7 +112,7 @@ public: void setWeakRef( QWeakPointer< Tomahawk::Query > weakRef ); /// sorter for list of results - static bool resultSorter( const result_ptr& left, const result_ptr& right ); + bool resultSorter( const result_ptr& left, const result_ptr& right ); signals: void resultsAdded( const QList& ); diff --git a/src/libtomahawk/Result.cpp b/src/libtomahawk/Result.cpp index b989b0ea8..81665c20c 100644 --- a/src/libtomahawk/Result.cpp +++ b/src/libtomahawk/Result.cpp @@ -102,7 +102,6 @@ Result::Result( const QString& url, const track_ptr& track ) , m_bitrate( 0 ) , m_size( 0 ) , m_modtime( 0 ) - , m_score( 0 ) , m_fileId( 0 ) , m_track( track ) { @@ -169,13 +168,6 @@ Result::mimetype() const } -float -Result::score() const -{ - return m_score; -} - - RID Result::id() const { @@ -209,7 +201,7 @@ Result::playable() const } else { - return score() > 0.0; + return true; //FIXME } } @@ -226,7 +218,7 @@ Result::toVariant() const m.insert( "size", size() ); m.insert( "bitrate", bitrate() ); m.insert( "duration", m_track->duration() ); - m.insert( "score", score() ); +// m.insert( "score", score() ); m.insert( "sid", id() ); m.insert( "discnumber", m_track->discnumber() ); m.insert( "albumpos", m_track->albumpos() ); @@ -243,9 +235,8 @@ Result::toString() const { if ( m_track ) { - return QString( "Result(%1, score: %2) %3 - %4%5 (%6)" ) + return QString( "Result(%1) %2 - %3%4 (%5)" ) .arg( id() ) - .arg( m_score ) .arg( m_track->artist() ) .arg( m_track->track() ) .arg( m_track->album().isEmpty() ? QString() : QString( " on %1" ).arg( m_track->album() ) ) @@ -253,9 +244,8 @@ Result::toString() const } else { - return QString( "Result(%1, score: %2) (%3)" ) + return QString( "Result(%1) (%2)" ) .arg( id() ) - .arg( m_score ) .arg( m_url ); } } @@ -478,13 +468,6 @@ Result::modificationTime() const } -void -Result::setScore( float score ) -{ - m_score = score; -} - - void Result::setFileId( unsigned int id ) { diff --git a/src/libtomahawk/Result.h b/src/libtomahawk/Result.h index 5a99ac73e..470cfa9a5 100644 --- a/src/libtomahawk/Result.h +++ b/src/libtomahawk/Result.h @@ -89,7 +89,6 @@ public: */ ResultProvider* resolvedBy() const; - float score() const; RID id() const; bool isOnline() const; bool playable() const; @@ -112,7 +111,6 @@ public: unsigned int size() const; unsigned int modificationTime() const; - void setScore( float score ); void setFileId( unsigned int id ); void setRID( RID id ) { m_rid = id; } @@ -174,8 +172,6 @@ private: unsigned int m_bitrate; unsigned int m_size; unsigned int m_modtime; - float m_score; - unsigned int m_fileId; track_ptr m_track; From 32a454fbc451107bebc3068f0a41e6c5683d8689 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Fri, 3 Apr 2015 17:21:04 +0200 Subject: [PATCH 2/9] Can't access score via Result anymore. --- src/libtomahawk-playdarapi/Api_v1_5.cpp | 2 +- src/libtomahawk/Pipeline.cpp | 3 +-- src/libtomahawk/Query_p.h | 2 ++ src/libtomahawk/audio/AudioEngine.cpp | 2 +- src/libtomahawk/database/DatabaseCommand_AllTracks.cpp | 1 - src/libtomahawk/database/DatabaseCommand_Resolve.cpp | 2 +- src/libtomahawk/database/DatabaseImpl.cpp | 3 --- src/libtomahawk/playlist/ColumnItemDelegate.cpp | 2 +- src/libtomahawk/playlist/PlayableModel.cpp | 8 +------- src/libtomahawk/playlist/PlayableProxyModel.cpp | 4 ++-- src/libtomahawk/resolvers/ScriptAccount.cpp | 2 +- src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp | 1 - src/libtomahawk/utils/TomahawkUtilsGui.cpp | 2 +- src/libtomahawk/viewpages/SearchViewPage.cpp | 4 ++-- 14 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/libtomahawk-playdarapi/Api_v1_5.cpp b/src/libtomahawk-playdarapi/Api_v1_5.cpp index d7bff50ae..b8e43e162 100644 --- a/src/libtomahawk-playdarapi/Api_v1_5.cpp +++ b/src/libtomahawk-playdarapi/Api_v1_5.cpp @@ -105,7 +105,7 @@ Api_v1_5::playback( QxtWebRequestEvent* event, const QString& command ) } else { trackInfo.insert( "resolvedBy", "" ); } - trackInfo.insert( "score", currentTrack->score() ); +//FIXME? trackInfo.insert( "score", currentTrack->score() ); trackInfo.insert( "album", currentTrack->track()->album() ); trackInfo.insert( "albumpos", currentTrack->track()->albumpos() ); trackInfo.insert( "artist", currentTrack->track()->artist() ); diff --git a/src/libtomahawk/Pipeline.cpp b/src/libtomahawk/Pipeline.cpp index f170fb5cb..4d3496f5d 100644 --- a/src/libtomahawk/Pipeline.cpp +++ b/src/libtomahawk/Pipeline.cpp @@ -387,8 +387,7 @@ Pipeline::addResultsToQuery( const query_ptr& query, const QList< result_ptr >& QList< result_ptr > cleanResults; foreach ( const result_ptr& r, results ) { - r->setScore( query->howSimilar( r ) ); - if ( !query->isFullTextQuery() && r->score() < MINSCORE ) + if ( !query->isFullTextQuery() && query->howSimilar( r ) < MINSCORE ) continue; cleanResults << r; diff --git a/src/libtomahawk/Query_p.h b/src/libtomahawk/Query_p.h index ef00b9efd..635c8bbc6 100644 --- a/src/libtomahawk/Query_p.h +++ b/src/libtomahawk/Query_p.h @@ -39,6 +39,8 @@ private: QList< Tomahawk::artist_ptr > artists; QList< Tomahawk::album_ptr > albums; QList< Tomahawk::result_ptr > results; + + float score; bool solved; bool playable; bool resolveFinished; diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index f2ccf0167..0f6e88822 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -866,7 +866,7 @@ AudioEngine::play( const QUrl& url ) result->setMimetype( tags["mimetype"].toString() ); } - result->setScore( 1.0 ); +// result->setScore( 1.0 ); result->setResolvedByCollection( SourceList::instance()->getLocal()->collections().first(), false ); // Tomahawk::query_ptr qry = Tomahawk::Query::get( t ); diff --git a/src/libtomahawk/database/DatabaseCommand_AllTracks.cpp b/src/libtomahawk/database/DatabaseCommand_AllTracks.cpp index 866f5153a..e1767020c 100644 --- a/src/libtomahawk/database/DatabaseCommand_AllTracks.cpp +++ b/src/libtomahawk/database/DatabaseCommand_AllTracks.cpp @@ -161,7 +161,6 @@ DatabaseCommand_AllTracks::exec( DatabaseImpl* dbi ) result->setBitrate( bitrate ); result->setModificationTime( modificationTime ); result->setMimetype( mimetype ); - result->setScore( 1.0f ); result->setResolvedByCollection( s->dbCollection(), false ); ql << Tomahawk::Query::getFixed( t, result ); diff --git a/src/libtomahawk/database/DatabaseCommand_Resolve.cpp b/src/libtomahawk/database/DatabaseCommand_Resolve.cpp index 80ccfd20f..d6223d604 100644 --- a/src/libtomahawk/database/DatabaseCommand_Resolve.cpp +++ b/src/libtomahawk/database/DatabaseCommand_Resolve.cpp @@ -283,7 +283,7 @@ DatabaseCommand_Resolve::fullTextResolve( DatabaseImpl* lib ) { if ( trackPairs.at( k ).first == (int)track->trackId() ) { - result->setScore( trackPairs.at( k ).second ); + //FIXME: result->setScore( trackPairs.at( k ).second ); break; } } diff --git a/src/libtomahawk/database/DatabaseImpl.cpp b/src/libtomahawk/database/DatabaseImpl.cpp index 1ca1de283..447b8e977 100644 --- a/src/libtomahawk/database/DatabaseImpl.cpp +++ b/src/libtomahawk/database/DatabaseImpl.cpp @@ -323,7 +323,6 @@ Tomahawk::DatabaseImpl::file( int fid ) r->setMimetype( query.value( 4 ).toString() ); r->setBitrate( query.value( 6 ).toUInt() ); r->setResolvedByCollection( s->dbCollection() ); - r->setScore( 1.0 ); r->setFileId( fid ); } @@ -642,7 +641,6 @@ Tomahawk::DatabaseImpl::resultFromHint( const Tomahawk::query_ptr& origquery ) // Return http resulthint directly res = Tomahawk::Result::get( url, track ); res->setRID( uuid() ); - res->setScore( 1.0 ); const QUrl u = QUrl::fromUserInput( url ); res->setFriendlySource( u.host() ); @@ -722,7 +720,6 @@ Tomahawk::DatabaseImpl::resultFromHint( const Tomahawk::query_ptr& origquery ) res->setSize( query.value( 2 ).toUInt() ); res->setMimetype( query.value( 4 ).toString() ); res->setBitrate( query.value( 6 ).toInt() ); - res->setScore( 1.0 ); res->setRID( uuid() ); res->setResolvedByCollection( s->dbCollection() ); } diff --git a/src/libtomahawk/playlist/ColumnItemDelegate.cpp b/src/libtomahawk/playlist/ColumnItemDelegate.cpp index 109331bb1..b38a2ded4 100644 --- a/src/libtomahawk/playlist/ColumnItemDelegate.cpp +++ b/src/libtomahawk/playlist/ColumnItemDelegate.cpp @@ -103,7 +103,7 @@ ColumnItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option } else if ( !item->result().isNull() || !item->query().isNull() ) { - float opacity = item->result() && item->result()->isOnline() ? item->result()->score() : 0.0; + float opacity = item->query() && item->result()->isOnline() ? item->query()->score() : 0.0; opacity = qMax( (float)0.3, opacity ); QColor textColor = TomahawkUtils::alphaBlend( option.palette.color( QPalette::Foreground ), option.palette.color( QPalette::Background ), opacity ); diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index 71e2b4e0c..732aad5c2 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -286,13 +286,7 @@ PlayableModel::queryData( const query_ptr& query, int column, int role ) const case Score: { - float score; - if ( query->results().first()->isOnline() ) - score = query->results().first()->score(); - else - score = 0.0; - - return scoreText( score ); + return scoreText( query->score() ); break; } diff --git a/src/libtomahawk/playlist/PlayableProxyModel.cpp b/src/libtomahawk/playlist/PlayableProxyModel.cpp index eb238a560..1ea7cb728 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModel.cpp @@ -470,7 +470,7 @@ PlayableProxyModel::lessThan( int column, const Tomahawk::query_ptr& q1, const T mtime1 = r->modificationTime(); size1 = r->size(); year1 = r->track()->year(); - score1 = r->score(); + score1 = q1->score(); origin1 = r->friendlySource().toLower(); } if ( !q2->results().isEmpty() ) @@ -480,7 +480,7 @@ PlayableProxyModel::lessThan( int column, const Tomahawk::query_ptr& q1, const T mtime2 = r->modificationTime(); size2 = r->size(); year2 = r->track()->year(); - score2 = r->score(); + score2 = q2->score(); origin2 = r->friendlySource().toLower(); } diff --git a/src/libtomahawk/resolvers/ScriptAccount.cpp b/src/libtomahawk/resolvers/ScriptAccount.cpp index 3d4ca231b..248c78ef3 100644 --- a/src/libtomahawk/resolvers/ScriptAccount.cpp +++ b/src/libtomahawk/resolvers/ScriptAccount.cpp @@ -294,7 +294,7 @@ ScriptAccount::parseResultVariantList( const QVariantList& reslist ) rp->setRID( uuid() ); rp->setPurchaseUrl( m.value( "purchaseUrl" ).toString() ); rp->setLinkUrl( m.value( "linkUrl" ).toString() ); - rp->setScore( m.value( "score" ).toFloat() ); +//FIXME? rp->setScore( m.value( "score" ).toFloat() ); rp->setChecked( m.value( "checked" ).toBool() ); //FIXME diff --git a/src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp b/src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp index 0315fc04e..85e8398ab 100644 --- a/src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp +++ b/src/libtomahawk/resolvers/ScriptCommand_AllTracks.cpp @@ -122,7 +122,6 @@ ScriptCommand_AllTracks::onTracksJobDone( const QVariantMap& result ) QList< Tomahawk::query_ptr > queries; foreach ( const Tomahawk::result_ptr& result, t ) { - result->setScore( 1.0 ); result->setResolvedByCollection( m_collection ); queries.append( result->toQuery() ); } diff --git a/src/libtomahawk/utils/TomahawkUtilsGui.cpp b/src/libtomahawk/utils/TomahawkUtilsGui.cpp index 81c413dcd..95841c91d 100644 --- a/src/libtomahawk/utils/TomahawkUtilsGui.cpp +++ b/src/libtomahawk/utils/TomahawkUtilsGui.cpp @@ -835,7 +835,7 @@ prepareStyleOption( QStyleOptionViewItemV4* option, const QModelIndex& index, Pl { float opacity = 0.0; if ( item->query() && !item->query()->results().isEmpty() && item->query()->results().first()->isOnline() ) - opacity = item->query()->results().first()->score(); + opacity = item->query()->score(); opacity = qMax( (float)0.3, opacity ); QColor textColor = alphaBlend( option->palette.color( QPalette::Text ), option->palette.color( QPalette::BrightText ), opacity ); diff --git a/src/libtomahawk/viewpages/SearchViewPage.cpp b/src/libtomahawk/viewpages/SearchViewPage.cpp index d1247eb53..00ee9c031 100644 --- a/src/libtomahawk/viewpages/SearchViewPage.cpp +++ b/src/libtomahawk/viewpages/SearchViewPage.cpp @@ -324,7 +324,7 @@ SearchWidget::onResultsFound( const QList& results ) if ( !found ) { - m_results.insert( query, result->score() ); + m_results.insert( query, /*FIXME*/ query->score() ); queries << query; } @@ -344,7 +344,7 @@ SearchWidget::onResultsFound( const QList& results ) PlayableItem* item = m_resultsModel->itemFromIndex( m_resultsModel->index( i, 0, QModelIndex() ) ); if ( item && item->query() && item->query()->numResults( true ) ) { - if ( item->query()->results().first()->score() < q->results().first()->score() ) + if ( item->query()->score() < q->score() ) { m_resultsModel->insertQuery( q, i ); done = true; From 6245f9d789204a2bd2a25ac3be49019f55fd4062 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 4 Apr 2015 14:54:01 +0200 Subject: [PATCH 3/9] If a Query gets created with result attached, manually set the score to 1.0. --- src/libtomahawk/Query.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/libtomahawk/Query.cpp b/src/libtomahawk/Query.cpp index dfd5236e4..773a83011 100644 --- a/src/libtomahawk/Query.cpp +++ b/src/libtomahawk/Query.cpp @@ -122,6 +122,7 @@ Query::Query( const track_ptr& track, const result_ptr& result ) d->results << result; d->playable = result->playable(); d->solved = true; + d->score = 1.0; connect( result.data(), SIGNAL( statusChanged() ), SLOT( onResultStatusChanged() ) ); } From c855ff9575445418b7fe30bd8a294e145c0017c7 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 4 Apr 2015 14:54:21 +0200 Subject: [PATCH 4/9] Remove obsolete Query::setScore(). --- src/libtomahawk/Query.h | 1 - 1 file changed, 1 deletion(-) diff --git a/src/libtomahawk/Query.h b/src/libtomahawk/Query.h index 0e27fdf1e..c24d27f1e 100644 --- a/src/libtomahawk/Query.h +++ b/src/libtomahawk/Query.h @@ -80,7 +80,6 @@ public: bool playable() const; float score() const; - void setScore( float score ); Tomahawk::Resolver* currentResolver() const; QList< QPointer< Tomahawk::Resolver > > resolvedBy() const; From 80202694e3ee122f7317e46773b438c2b57069c6 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 4 Apr 2015 14:54:47 +0200 Subject: [PATCH 5/9] Removed checked FIXMEs. --- src/libtomahawk/Result.cpp | 6 ++---- src/libtomahawk/audio/AudioEngine.cpp | 1 - 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libtomahawk/Result.cpp b/src/libtomahawk/Result.cpp index 81665c20c..7305cc728 100644 --- a/src/libtomahawk/Result.cpp +++ b/src/libtomahawk/Result.cpp @@ -199,10 +199,8 @@ Result::playable() const { return resolvedByCollection()->isOnline(); } - else - { - return true; //FIXME - } + + return true; } diff --git a/src/libtomahawk/audio/AudioEngine.cpp b/src/libtomahawk/audio/AudioEngine.cpp index 0f6e88822..9877d6adf 100644 --- a/src/libtomahawk/audio/AudioEngine.cpp +++ b/src/libtomahawk/audio/AudioEngine.cpp @@ -866,7 +866,6 @@ AudioEngine::play( const QUrl& url ) result->setMimetype( tags["mimetype"].toString() ); } -// result->setScore( 1.0 ); result->setResolvedByCollection( SourceList::instance()->getLocal()->collections().first(), false ); // Tomahawk::query_ptr qry = Tomahawk::Query::get( t ); From ac7401e235bd2917e504b6d07d6702941388feb3 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 4 Apr 2015 14:55:07 +0200 Subject: [PATCH 6/9] Fixed opacity in ColumnItemDelegate for online results. --- src/libtomahawk/playlist/ColumnItemDelegate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libtomahawk/playlist/ColumnItemDelegate.cpp b/src/libtomahawk/playlist/ColumnItemDelegate.cpp index b38a2ded4..b27ae6f41 100644 --- a/src/libtomahawk/playlist/ColumnItemDelegate.cpp +++ b/src/libtomahawk/playlist/ColumnItemDelegate.cpp @@ -103,7 +103,7 @@ ColumnItemDelegate::paint( QPainter* painter, const QStyleOptionViewItem& option } else if ( !item->result().isNull() || !item->query().isNull() ) { - float opacity = item->query() && item->result()->isOnline() ? item->query()->score() : 0.0; + float opacity = item->result() && item->result()->isOnline() ? 1.0 : 0.0; opacity = qMax( (float)0.3, opacity ); QColor textColor = TomahawkUtils::alphaBlend( option.palette.color( QPalette::Foreground ), option.palette.color( QPalette::Background ), opacity ); From e41a1014f9a34032140af8716ac3f99043f0300a Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 4 Apr 2015 17:15:07 +0200 Subject: [PATCH 7/9] Reset a query's score when all results vanished. --- src/libtomahawk/Query.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/libtomahawk/Query.cpp b/src/libtomahawk/Query.cpp index 773a83011..42ec57171 100644 --- a/src/libtomahawk/Query.cpp +++ b/src/libtomahawk/Query.cpp @@ -515,6 +515,11 @@ Query::checkResults() { d->score = howSimilar( d->results.first() ); } + else + { + d->score = 0.0; + } + bool playable = false; bool solved = false; From 95a2d26618ccf7de852da07853a5abf2bdcff563 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sat, 4 Apr 2015 17:15:31 +0200 Subject: [PATCH 8/9] Don't abuse score when doing fulltext-resolving. --- .../database/DatabaseCommand_Resolve.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/src/libtomahawk/database/DatabaseCommand_Resolve.cpp b/src/libtomahawk/database/DatabaseCommand_Resolve.cpp index d6223d604..96532bdf7 100644 --- a/src/libtomahawk/database/DatabaseCommand_Resolve.cpp +++ b/src/libtomahawk/database/DatabaseCommand_Resolve.cpp @@ -83,7 +83,7 @@ DatabaseCommand_Resolve::resolve( DatabaseImpl* lib ) // STEP 1 QList< QPair > tracks = lib->search( m_query ); - if ( tracks.length() == 0 ) + if ( tracks.isEmpty() ) { qDebug() << "No candidates found in first pass, aborting resolve" << m_query->queryTrack()->toString(); emit results( m_query->id(), res ); @@ -202,7 +202,7 @@ DatabaseCommand_Resolve::fullTextResolve( DatabaseImpl* lib ) emit albums( m_query->id(), albumList ); } - if ( trackPairs.length() == 0 ) + if ( trackPairs.isEmpty() ) { qDebug() << "No candidates found in first pass, aborting resolve" << m_query->fullTextQuery(); emit results( m_query->id(), res ); @@ -279,15 +279,6 @@ DatabaseCommand_Resolve::fullTextResolve( DatabaseImpl* lib ) result->setRID( uuid() ); result->setResolvedByCollection( s->dbCollection() ); - for ( int k = 0; k < trackPairs.count(); k++ ) - { - if ( trackPairs.at( k ).first == (int)track->trackId() ) - { - //FIXME: result->setScore( trackPairs.at( k ).second ); - break; - } - } - res << result; } From ec650a634dff0fa81309d87186df24f1e0b17b7d Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Sun, 5 Apr 2015 01:49:00 +0200 Subject: [PATCH 9/9] Fixed scoring fulltext searches. --- src/libtomahawk/viewpages/SearchViewPage.cpp | 20 ++++++++------------ src/libtomahawk/viewpages/SearchViewPage.h | 2 +- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/libtomahawk/viewpages/SearchViewPage.cpp b/src/libtomahawk/viewpages/SearchViewPage.cpp index 00ee9c031..a2a2f7e8e 100644 --- a/src/libtomahawk/viewpages/SearchViewPage.cpp +++ b/src/libtomahawk/viewpages/SearchViewPage.cpp @@ -1,6 +1,6 @@ /* === This file is part of Tomahawk Player - === * - * Copyright 2010-2014, Christian Muehlhaeuser + * Copyright 2010-2015, Christian Muehlhaeuser * Copyright 2012 Leo Franchi * * Tomahawk is free software: you can redistribute it and/or modify @@ -230,15 +230,11 @@ SearchWidget::SearchWidget( const QString& search, QWidget* parent ) m_albumsModel->startLoading(); m_resultsModel->startLoading(); - m_queries << Tomahawk::Query::get( search, uuid() ); - - foreach ( const Tomahawk::query_ptr& query, m_queries ) - { - connect( query.data(), SIGNAL( artistsAdded( QList ) ), SLOT( onArtistsFound( QList ) ) ); - connect( query.data(), SIGNAL( albumsAdded( QList ) ), SLOT( onAlbumsFound( QList ) ) ); - connect( query.data(), SIGNAL( resultsAdded( QList ) ), SLOT( onResultsFound( QList ) ) ); - connect( query.data(), SIGNAL( resolvingFinished( bool ) ), SLOT( onQueryFinished() ) ); - } + m_query = Tomahawk::Query::get( search, uuid() ); + connect( m_query.data(), SIGNAL( artistsAdded( QList ) ), SLOT( onArtistsFound( QList ) ) ); + connect( m_query.data(), SIGNAL( albumsAdded( QList ) ), SLOT( onAlbumsFound( QList ) ) ); + connect( m_query.data(), SIGNAL( resultsAdded( QList ) ), SLOT( onResultsFound( QList ) ) ); + connect( m_query.data(), SIGNAL( resolvingFinished( bool ) ), SLOT( onQueryFinished() ) ); TomahawkUtils::fixMargins( this ); } @@ -335,7 +331,7 @@ SearchWidget::onResultsFound( const QList& results ) while ( queries.count() ) { query_ptr q = queries.takeFirst(); - if ( !q->results().count() ) + if ( q->results().isEmpty() ) continue; bool done = false; @@ -344,7 +340,7 @@ SearchWidget::onResultsFound( const QList& results ) PlayableItem* item = m_resultsModel->itemFromIndex( m_resultsModel->index( i, 0, QModelIndex() ) ); if ( item && item->query() && item->query()->numResults( true ) ) { - if ( item->query()->score() < q->score() ) + if ( m_query->howSimilar( item->query()->results().first() ) < m_query->howSimilar( q->results().first() ) ) { m_resultsModel->insertQuery( q, i ); done = true; diff --git a/src/libtomahawk/viewpages/SearchViewPage.h b/src/libtomahawk/viewpages/SearchViewPage.h index d7fdfe325..700e3d8f5 100644 --- a/src/libtomahawk/viewpages/SearchViewPage.h +++ b/src/libtomahawk/viewpages/SearchViewPage.h @@ -91,7 +91,7 @@ private: PlayableModel* m_resultsModel; Tomahawk::playlistinterface_ptr m_plInterface; - QList< Tomahawk::query_ptr > m_queries; + Tomahawk::query_ptr m_query; QMap< Tomahawk::artist_ptr, float > m_artists; QMap< Tomahawk::album_ptr, float > m_albums; QMap< Tomahawk::query_ptr, float > m_results;