1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-07-31 03:10:12 +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:
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<Tomahawk::result_ptr>& );
@@ -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

View File

@@ -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

View File

@@ -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;
}

View File

@@ -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 );
}