1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-01 20:00:13 +02:00

* Use native data-types instead of a QVariantMap to store Query / Result related information.

* Don't generate uuids for Queries before we actually need them.
This commit is contained in:
Christian Muehlhaeuser
2010-10-17 06:16:33 +02:00
parent 1f592fbbd9
commit 38b907fe38
4 changed files with 52 additions and 21 deletions

View File

@@ -24,10 +24,10 @@ public:
{ {
// ensure a QID is present: // ensure a QID is present:
QVariantMap m = m_v.toMap(); 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; } QVariant toVariant() const { return m_v; }
@@ -55,9 +55,9 @@ public:
return QString( "Query(%1, %2 - %3)" ).arg( id() ).arg( artist() ).arg( track() ); return QString( "Query(%1, %2 - %3)" ).arg( id() ).arg( artist() ).arg( track() );
} }
QString artist() const { return m_v.toMap().value( "artist" ).toString(); } QString artist() const { return m_artist; }
QString album() const { return m_v.toMap().value( "album" ).toString(); } QString album() const { return m_album; }
QString track() const { return m_v.toMap().value( "track" ).toString(); } QString track() const { return m_track; }
signals: signals:
void resultsAdded( const QList<Tomahawk::result_ptr>& ); void resultsAdded( const QList<Tomahawk::result_ptr>& );
@@ -74,11 +74,15 @@ private slots:
private: private:
mutable QMutex m_mut; mutable QMutex m_mut;
QVariant m_v; mutable QVariant m_v;
QList< Tomahawk::result_ptr > m_results; QList< Tomahawk::result_ptr > m_results;
bool m_solved; bool m_solved;
mutable QID m_qid; mutable QID m_qid;
unsigned int m_lastpipelineweight; unsigned int m_lastpipelineweight;
QString m_artist;
QString m_album;
QString m_track;
}; };
}; //ns }; //ns

View File

@@ -15,23 +15,23 @@ class Result : public QObject
Q_OBJECT Q_OBJECT
public: public:
explicit Result( QVariant v, collection_ptr collection ); explicit Result( const QVariant& v, const collection_ptr& collection );
QVariant toVariant() const { return m_v; } QVariant toVariant() const { return m_v; }
float score() const; float score() const;
RID id() const; RID id() const;
collection_ptr collection() const { return m_collection; } collection_ptr collection() const { return m_collection; }
QString artist() const { return m_v.toMap().value( "artist" ).toString(); } QString artist() const { return m_artist; }
QString album() const { return m_v.toMap().value( "album" ).toString(); } QString album() const { return m_album; }
QString track() const { return m_v.toMap().value( "track" ).toString(); } QString track() const { return m_track; }
QString url() const { return m_v.toMap().value( "url" ).toString(); } QString url() const { return m_url; }
QString mimetype() const { return m_v.toMap().value( "mimetype" ).toString(); } QString mimetype() const { return m_mimetype; }
unsigned int duration() const { return m_v.toMap().value( "duration" ).toUInt(); } unsigned int duration() const { return m_duration; }
unsigned int bitrate() const { return m_v.toMap().value( "bitrate" ).toUInt(); } unsigned int bitrate() const { return m_bitrate; }
unsigned int size() const { return m_v.toMap().value( "size" ).toUInt(); } unsigned int size() const { return m_size; }
unsigned int albumpos() const { return m_v.toMap().value( "albumpos" ).toUInt(); } unsigned int albumpos() const { return m_albumpos; }
// for debug output: // for debug output:
QString toString() const QString toString() const
@@ -47,6 +47,16 @@ private:
QVariant m_v; QVariant m_v;
mutable RID m_rid; mutable RID m_rid;
collection_ptr m_collection; 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 }; //ns

View File

@@ -32,7 +32,7 @@ Query::addResults( const QList< Tomahawk::result_ptr >& newresults )
void void
Query::resultUnavailable() Query::resultUnavailable()
{ {
Result * result = (Result*) sender(); Result* result = (Result*) sender();
Q_ASSERT( result ); Q_ASSERT( result );
for(int i = 0; i < m_results.length(); ++i ) for(int i = 0; i < m_results.length(); ++i )
@@ -83,8 +83,12 @@ QID Query::id() const
{ {
if ( m_qid.isEmpty() ) if ( m_qid.isEmpty() )
{ {
m_qid = m_v.toMap().value( "qid" ).toString(); m_qid = uuid();
Q_ASSERT( !m_qid.isEmpty() );
QVariantMap m = m_v.toMap();
m.insert( "qid", m_qid );
m_v = m;
} }
return m_qid; return m_qid;
} }

View File

@@ -3,10 +3,23 @@
using namespace Tomahawk; using namespace Tomahawk;
Result::Result( QVariant v, collection_ptr collection ) Result::Result( const QVariant& v, const collection_ptr& collection )
: m_v( v ) : m_v( v )
, m_collection( collection ) , 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() ) if ( !m_collection.isNull() )
connect( m_collection->source().data(), SIGNAL( offline() ), SIGNAL( becomingUnavailable() ), Qt::QueuedConnection ); connect( m_collection->source().data(), SIGNAL( offline() ), SIGNAL( becomingUnavailable() ), Qt::QueuedConnection );
} }