From 057cb04e9cec5edbfada86b6ac2e30378b7d839c Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Mar 2011 01:48:26 +0100 Subject: [PATCH] * Show proper origin name for script-resolved results. --- src/audiocontrols.cpp | 2 +- src/libtomahawk/playlist/trackmodel.cpp | 2 +- src/libtomahawk/result.cpp | 22 ++++++++++++++++++++-- src/libtomahawk/result.h | 7 +++++-- src/scriptresolver.cpp | 2 +- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/audiocontrols.cpp b/src/audiocontrols.cpp index fe7229587..1587b06e6 100644 --- a/src/audiocontrols.cpp +++ b/src/audiocontrols.cpp @@ -236,7 +236,7 @@ AudioControls::onPlaybackLoading( const Tomahawk::result_ptr& result ) ui->artistTrackLabel->setResult( result ); ui->albumLabel->setResult( result ); - ui->ownerLabel->setText( result->collection()->source()->friendlyName() ); + ui->ownerLabel->setText( result->friendlySource() ); ui->coverImage->setPixmap( m_defaultCover ); if ( ui->timeLabel->text().isEmpty() ) diff --git a/src/libtomahawk/playlist/trackmodel.cpp b/src/libtomahawk/playlist/trackmodel.cpp index a39eecc76..f071ea92d 100644 --- a/src/libtomahawk/playlist/trackmodel.cpp +++ b/src/libtomahawk/playlist/trackmodel.cpp @@ -176,7 +176,7 @@ TrackModel::data( const QModelIndex& index, int role ) const break; case Origin: - return query->results().first()->collection()->source()->friendlyName(); + return query->results().first()->friendlySource(); break; } } diff --git a/src/libtomahawk/result.cpp b/src/libtomahawk/result.cpp index 88311d322..6cdbfb510 100644 --- a/src/libtomahawk/result.cpp +++ b/src/libtomahawk/result.cpp @@ -46,12 +46,18 @@ Result::collection() const float Result::score() const { - if ( collection()->source()->isOnline() ) + if ( !collection().isNull() && collection()->source()->isOnline() ) { return m_score; } else - return 0.0; + { + // check if this a valid collection-less result (e.g. from youtube, but ignore offline sources still) + if ( collection().isNull() ) + return m_score; + else + return 0.0; + } } @@ -144,3 +150,15 @@ Result::setCollection( const Tomahawk::collection_ptr& collection ) connect( m_collection->source().data(), SIGNAL( online() ), SLOT( onOnline() ), Qt::QueuedConnection ); connect( m_collection->source().data(), SIGNAL( offline() ), SLOT( onOffline() ), Qt::QueuedConnection ); } + + +QString +Result::friendlySource() const +{ + if ( collection().isNull() ) + { + return m_friendlySource; + } + else + return collection()->source()->friendlyName(); +} diff --git a/src/libtomahawk/result.h b/src/libtomahawk/result.h index 5cc5ef63c..4b62f662f 100644 --- a/src/libtomahawk/result.h +++ b/src/libtomahawk/result.h @@ -43,6 +43,7 @@ public: QString track() const { return m_track; } QString url() const { return m_url; } QString mimetype() const { return m_mimetype; } + QString friendlySource() const; unsigned int duration() const { return m_duration; } unsigned int bitrate() const { return m_bitrate; } @@ -55,6 +56,7 @@ public: void setId( unsigned int id ) { m_id = id; } void setRID( RID id ) { m_rid = id; } void setCollection( const Tomahawk::collection_ptr& collection ); + void setFriendlySource( const QString& s ) { m_friendlySource = s; } void setArtist( const Tomahawk::artist_ptr& artist ); void setAlbum( const Tomahawk::album_ptr& album ); void setTrack( const QString& track ) { m_track = track; } @@ -65,7 +67,7 @@ public: void setSize( unsigned int size ) { m_size = size; } void setAlbumPos( unsigned int albumpos ) { m_albumpos = albumpos; } void setModificationTime( unsigned int modtime ) { m_modtime = modtime; } - + QVariantMap attributes() const { return m_attributes; } void setAttributes( const QVariantMap& map ) { m_attributes = map; updateAttributes(); } @@ -74,7 +76,7 @@ public: signals: // emitted when the collection this result comes from is going offline/online: void statusChanged(); - + private slots: void onOffline(); void onOnline(); @@ -90,6 +92,7 @@ private: QString m_track; QString m_url; QString m_mimetype; + QString m_friendlySource; unsigned int m_duration; unsigned int m_bitrate; diff --git a/src/scriptresolver.cpp b/src/scriptresolver.cpp index 272a4810f..949ac68aa 100644 --- a/src/scriptresolver.cpp +++ b/src/scriptresolver.cpp @@ -134,7 +134,7 @@ ScriptResolver::handleMsg( const QByteArray& msg ) rp->setSize( m.value( "size" ).toUInt() ); rp->setScore( m.value( "score" ).toFloat() * ( (float)weight() / 100.0 ) ); rp->setRID( uuid() ); - rp->setCollection( coll ); + rp->setFriendlySource( m_name ); results << rp; }