diff --git a/include/tomahawk/query.h b/include/tomahawk/query.h index 3bb42424e..04c2af790 100644 --- a/include/tomahawk/query.h +++ b/include/tomahawk/query.h @@ -24,10 +24,10 @@ public: { // ensure a QID is present: QVariantMap m = m_v.toMap(); - if( !m.contains("qid") ) - m.insert( "qid", uuid() ); - m_v = m; + m_artist = m.value( "artist" ).toString(); + m_album = m.value( "album" ).toString(); + m_track = m.value( "track" ).toString(); } QVariant toVariant() const { return m_v; } @@ -55,9 +55,9 @@ public: return QString( "Query(%1, %2 - %3)" ).arg( id() ).arg( artist() ).arg( track() ); } - QString artist() const { return m_v.toMap().value( "artist" ).toString(); } - QString album() const { return m_v.toMap().value( "album" ).toString(); } - QString track() const { return m_v.toMap().value( "track" ).toString(); } + QString artist() const { return m_artist; } + QString album() const { return m_album; } + QString track() const { return m_track; } signals: void resultsAdded( const QList& ); @@ -74,11 +74,15 @@ private slots: private: mutable QMutex m_mut; - QVariant m_v; + mutable QVariant m_v; QList< Tomahawk::result_ptr > m_results; bool m_solved; mutable QID m_qid; unsigned int m_lastpipelineweight; + + QString m_artist; + QString m_album; + QString m_track; }; }; //ns diff --git a/include/tomahawk/result.h b/include/tomahawk/result.h index b1b936805..fa826d720 100644 --- a/include/tomahawk/result.h +++ b/include/tomahawk/result.h @@ -15,23 +15,23 @@ class Result : public QObject Q_OBJECT public: - explicit Result( QVariant v, collection_ptr collection ); + explicit Result( const QVariant& v, const collection_ptr& collection ); QVariant toVariant() const { return m_v; } float score() const; RID id() const; collection_ptr collection() const { return m_collection; } - QString artist() const { return m_v.toMap().value( "artist" ).toString(); } - QString album() const { return m_v.toMap().value( "album" ).toString(); } - QString track() const { return m_v.toMap().value( "track" ).toString(); } - QString url() const { return m_v.toMap().value( "url" ).toString(); } - QString mimetype() const { return m_v.toMap().value( "mimetype" ).toString(); } + QString artist() const { return m_artist; } + QString album() const { return m_album; } + QString track() const { return m_track; } + QString url() const { return m_url; } + QString mimetype() const { return m_mimetype; } - unsigned int duration() const { return m_v.toMap().value( "duration" ).toUInt(); } - unsigned int bitrate() const { return m_v.toMap().value( "bitrate" ).toUInt(); } - unsigned int size() const { return m_v.toMap().value( "size" ).toUInt(); } - unsigned int albumpos() const { return m_v.toMap().value( "albumpos" ).toUInt(); } + unsigned int duration() const { return m_duration; } + unsigned int bitrate() const { return m_bitrate; } + unsigned int size() const { return m_size; } + unsigned int albumpos() const { return m_albumpos; } // for debug output: QString toString() const @@ -47,6 +47,16 @@ private: QVariant m_v; mutable RID m_rid; collection_ptr m_collection; + + QString m_artist; + QString m_album; + QString m_track; + QString m_url; + QString m_mimetype; + unsigned int m_duration; + unsigned int m_bitrate; + unsigned int m_size; + unsigned int m_albumpos; }; }; //ns diff --git a/src/query.cpp b/src/query.cpp index 11d68a5c8..d04c2fcb3 100644 --- a/src/query.cpp +++ b/src/query.cpp @@ -32,7 +32,7 @@ Query::addResults( const QList< Tomahawk::result_ptr >& newresults ) void Query::resultUnavailable() { - Result * result = (Result*) sender(); + Result* result = (Result*) sender(); Q_ASSERT( result ); for(int i = 0; i < m_results.length(); ++i ) @@ -83,8 +83,12 @@ QID Query::id() const { if ( m_qid.isEmpty() ) { - m_qid = m_v.toMap().value( "qid" ).toString(); - Q_ASSERT( !m_qid.isEmpty() ); + m_qid = uuid(); + + QVariantMap m = m_v.toMap(); + m.insert( "qid", m_qid ); + + m_v = m; } return m_qid; } diff --git a/src/result.cpp b/src/result.cpp index 27adab0a7..88021446f 100644 --- a/src/result.cpp +++ b/src/result.cpp @@ -3,10 +3,23 @@ using namespace Tomahawk; -Result::Result( QVariant v, collection_ptr collection ) +Result::Result( const QVariant& v, const collection_ptr& collection ) : m_v( v ) , m_collection( collection ) { + QVariantMap m = m_v.toMap(); + + m_artist = m.value( "artist" ).toString(); + m_album = m.value( "album" ).toString(); + m_track = m.value( "track" ).toString(); + m_url = m.value( "url" ).toString(); + m_mimetype = m.value( "mimetype" ).toString(); + + m_duration = m.value( "duration" ).toUInt(); + m_bitrate = m.value( "bitrate" ).toUInt(); + m_size = m.value( "size" ).toUInt(); + m_albumpos = m.value( "albumpos" ).toUInt(); + if ( !m_collection.isNull() ) connect( m_collection->source().data(), SIGNAL( offline() ), SIGNAL( becomingUnavailable() ), Qt::QueuedConnection ); }