mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-15 18:44:30 +02:00
Move score-keeping from Result to Query.
This commit is contained in:
@@ -151,6 +151,7 @@ Query::init()
|
|||||||
d->solved = false;
|
d->solved = false;
|
||||||
d->playable = false;
|
d->playable = false;
|
||||||
d->saveResultHint = false;
|
d->saveResultHint = false;
|
||||||
|
d->score = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -196,7 +197,7 @@ Query::addResults( const QList< Tomahawk::result_ptr >& newresults )
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
d->results << 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
|
// hook up signals, and check solved status
|
||||||
foreach( const result_ptr& rp, newresults )
|
foreach( const result_ptr& rp, newresults )
|
||||||
@@ -265,8 +266,8 @@ Query::onResultStatusChanged()
|
|||||||
{
|
{
|
||||||
Q_D( Query );
|
Q_D( Query );
|
||||||
QMutexLocker lock( &d->mutex );
|
QMutexLocker lock( &d->mutex );
|
||||||
if ( d->results.count() )
|
if ( !d->results.isEmpty() )
|
||||||
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 ) );
|
||||||
}
|
}
|
||||||
|
|
||||||
checkResults();
|
checkResults();
|
||||||
@@ -404,8 +405,8 @@ Query::id() const
|
|||||||
bool
|
bool
|
||||||
Query::resultSorter( const result_ptr& left, const result_ptr& right )
|
Query::resultSorter( const result_ptr& left, const result_ptr& right )
|
||||||
{
|
{
|
||||||
const float ls = left->isOnline() ? left->score() : 0.0;
|
const float ls = left->isOnline() ? howSimilar( left ) : 0.0;
|
||||||
const float rs = right->isOnline() ? right->score() : 0.0;
|
const float rs = right->isOnline() ? howSimilar( right ) : 0.0;
|
||||||
|
|
||||||
if ( ls == rs )
|
if ( ls == rs )
|
||||||
{
|
{
|
||||||
@@ -509,6 +510,10 @@ void
|
|||||||
Query::checkResults()
|
Query::checkResults()
|
||||||
{
|
{
|
||||||
Q_D( Query );
|
Q_D( Query );
|
||||||
|
if ( !d->results.isEmpty() )
|
||||||
|
{
|
||||||
|
d->score = howSimilar( d->results.first() );
|
||||||
|
}
|
||||||
bool playable = false;
|
bool playable = false;
|
||||||
bool solved = false;
|
bool solved = false;
|
||||||
|
|
||||||
@@ -521,7 +526,7 @@ Query::checkResults()
|
|||||||
if ( rp->playable() )
|
if ( rp->playable() )
|
||||||
playable = true;
|
playable = true;
|
||||||
|
|
||||||
if ( rp->isOnline() && rp->score() > 0.99 )
|
if ( rp->isOnline() && howSimilar( rp ) > 0.99 )
|
||||||
{
|
{
|
||||||
solved = true;
|
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)
|
// TODO make clever (ft. featuring live (stuff) etc)
|
||||||
float
|
float
|
||||||
Query::howSimilar( const Tomahawk::result_ptr& r )
|
Query::howSimilar( const Tomahawk::result_ptr& r )
|
||||||
@@ -716,4 +729,3 @@ Query::setWeakRef( QWeakPointer<Query> weakRef )
|
|||||||
Q_D( Query );
|
Q_D( Query );
|
||||||
d->ownRef = weakRef;
|
d->ownRef = weakRef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -79,6 +79,9 @@ public:
|
|||||||
/// true when any result has been found (score may be less than 1.0)
|
/// true when any result has been found (score may be less than 1.0)
|
||||||
bool playable() const;
|
bool playable() const;
|
||||||
|
|
||||||
|
float score() const;
|
||||||
|
void setScore( float score );
|
||||||
|
|
||||||
Tomahawk::Resolver* currentResolver() const;
|
Tomahawk::Resolver* currentResolver() const;
|
||||||
QList< QPointer< Tomahawk::Resolver > > resolvedBy() const;
|
QList< QPointer< Tomahawk::Resolver > > resolvedBy() const;
|
||||||
|
|
||||||
@@ -109,7 +112,7 @@ public:
|
|||||||
void setWeakRef( QWeakPointer< Tomahawk::Query > weakRef );
|
void setWeakRef( QWeakPointer< Tomahawk::Query > weakRef );
|
||||||
|
|
||||||
/// sorter for list of results
|
/// 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:
|
signals:
|
||||||
void resultsAdded( const QList<Tomahawk::result_ptr>& );
|
void resultsAdded( const QList<Tomahawk::result_ptr>& );
|
||||||
|
@@ -102,7 +102,6 @@ Result::Result( const QString& url, const track_ptr& track )
|
|||||||
, m_bitrate( 0 )
|
, m_bitrate( 0 )
|
||||||
, m_size( 0 )
|
, m_size( 0 )
|
||||||
, m_modtime( 0 )
|
, m_modtime( 0 )
|
||||||
, m_score( 0 )
|
|
||||||
, m_fileId( 0 )
|
, m_fileId( 0 )
|
||||||
, m_track( track )
|
, m_track( track )
|
||||||
{
|
{
|
||||||
@@ -169,13 +168,6 @@ Result::mimetype() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
float
|
|
||||||
Result::score() const
|
|
||||||
{
|
|
||||||
return m_score;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
RID
|
RID
|
||||||
Result::id() const
|
Result::id() const
|
||||||
{
|
{
|
||||||
@@ -209,7 +201,7 @@ Result::playable() const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return score() > 0.0;
|
return true; //FIXME
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -226,7 +218,7 @@ Result::toVariant() const
|
|||||||
m.insert( "size", size() );
|
m.insert( "size", size() );
|
||||||
m.insert( "bitrate", bitrate() );
|
m.insert( "bitrate", bitrate() );
|
||||||
m.insert( "duration", m_track->duration() );
|
m.insert( "duration", m_track->duration() );
|
||||||
m.insert( "score", score() );
|
// m.insert( "score", score() );
|
||||||
m.insert( "sid", id() );
|
m.insert( "sid", id() );
|
||||||
m.insert( "discnumber", m_track->discnumber() );
|
m.insert( "discnumber", m_track->discnumber() );
|
||||||
m.insert( "albumpos", m_track->albumpos() );
|
m.insert( "albumpos", m_track->albumpos() );
|
||||||
@@ -243,9 +235,8 @@ Result::toString() const
|
|||||||
{
|
{
|
||||||
if ( m_track )
|
if ( m_track )
|
||||||
{
|
{
|
||||||
return QString( "Result(%1, score: %2) %3 - %4%5 (%6)" )
|
return QString( "Result(%1) %2 - %3%4 (%5)" )
|
||||||
.arg( id() )
|
.arg( id() )
|
||||||
.arg( m_score )
|
|
||||||
.arg( m_track->artist() )
|
.arg( m_track->artist() )
|
||||||
.arg( m_track->track() )
|
.arg( m_track->track() )
|
||||||
.arg( m_track->album().isEmpty() ? QString() : QString( " on %1" ).arg( m_track->album() ) )
|
.arg( m_track->album().isEmpty() ? QString() : QString( " on %1" ).arg( m_track->album() ) )
|
||||||
@@ -253,9 +244,8 @@ Result::toString() const
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return QString( "Result(%1, score: %2) (%3)" )
|
return QString( "Result(%1) (%2)" )
|
||||||
.arg( id() )
|
.arg( id() )
|
||||||
.arg( m_score )
|
|
||||||
.arg( m_url );
|
.arg( m_url );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -478,13 +468,6 @@ Result::modificationTime() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
Result::setScore( float score )
|
|
||||||
{
|
|
||||||
m_score = score;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
Result::setFileId( unsigned int id )
|
Result::setFileId( unsigned int id )
|
||||||
{
|
{
|
||||||
|
@@ -89,7 +89,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
ResultProvider* resolvedBy() const;
|
ResultProvider* resolvedBy() const;
|
||||||
|
|
||||||
float score() const;
|
|
||||||
RID id() const;
|
RID id() const;
|
||||||
bool isOnline() const;
|
bool isOnline() const;
|
||||||
bool playable() const;
|
bool playable() const;
|
||||||
@@ -112,7 +111,6 @@ public:
|
|||||||
unsigned int size() const;
|
unsigned int size() const;
|
||||||
unsigned int modificationTime() const;
|
unsigned int modificationTime() const;
|
||||||
|
|
||||||
void setScore( float score );
|
|
||||||
void setFileId( unsigned int id );
|
void setFileId( unsigned int id );
|
||||||
void setRID( RID id ) { m_rid = id; }
|
void setRID( RID id ) { m_rid = id; }
|
||||||
|
|
||||||
@@ -174,8 +172,6 @@ private:
|
|||||||
unsigned int m_bitrate;
|
unsigned int m_bitrate;
|
||||||
unsigned int m_size;
|
unsigned int m_size;
|
||||||
unsigned int m_modtime;
|
unsigned int m_modtime;
|
||||||
float m_score;
|
|
||||||
|
|
||||||
unsigned int m_fileId;
|
unsigned int m_fileId;
|
||||||
|
|
||||||
track_ptr m_track;
|
track_ptr m_track;
|
||||||
|
Reference in New Issue
Block a user