From ebd59307816023fa7e2a3fa62b2cc06808b35063 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 16 Mar 2011 07:17:04 +0100 Subject: [PATCH] * Fixed sometimes not loading existing playlists. * Got rid of the collection relation in Artist & Album. --- src/libtomahawk/album.cpp | 9 +++-- src/libtomahawk/album.h | 6 ++-- src/libtomahawk/artist.cpp | 16 +++------ src/libtomahawk/artist.h | 7 ++-- .../database/databasecommand_addfiles.cpp | 4 +-- .../database/databasecommand_allalbums.cpp | 4 +-- .../database/databasecommand_alltracks.cpp | 36 +++++++++++++------ .../database/databasecommand_alltracks.h | 2 +- .../databasecommand_loadallplaylists.cpp | 2 +- .../databasecommand_loadplaylistentries.cpp | 4 ++- .../databasecommand_loadplaylistentries.h | 2 +- .../database/databasecommand_resolve.cpp | 4 +-- src/libtomahawk/database/databaseimpl.cpp | 18 +++++----- src/libtomahawk/database/databaseworker.cpp | 4 +-- src/libtomahawk/playlist.cpp | 8 ++--- src/libtomahawk/playlist/playlistmodel.cpp | 4 ++- src/scriptresolver.cpp | 5 ++- 17 files changed, 70 insertions(+), 65 deletions(-) diff --git a/src/libtomahawk/album.cpp b/src/libtomahawk/album.cpp index 625aedfa5..43744aae5 100644 --- a/src/libtomahawk/album.cpp +++ b/src/libtomahawk/album.cpp @@ -10,7 +10,7 @@ using namespace Tomahawk; album_ptr -Album::get( unsigned int id, const QString& name, const Tomahawk::artist_ptr& artist, const Tomahawk::collection_ptr& collection ) +Album::get( unsigned int id, const QString& name, const Tomahawk::artist_ptr& artist ) { static QHash< unsigned int, album_ptr > s_albums; static QMutex s_mutex; @@ -21,19 +21,18 @@ Album::get( unsigned int id, const QString& name, const Tomahawk::artist_ptr& ar return s_albums.value( id ); } - album_ptr a = album_ptr( new Album( id, name, artist, collection ) ); + album_ptr a = album_ptr( new Album( id, name, artist ) ); s_albums.insert( id, a ); return a; } -Album::Album( unsigned int id, const QString& name, const Tomahawk::artist_ptr& artist, const Tomahawk::collection_ptr& collection ) +Album::Album( unsigned int id, const QString& name, const Tomahawk::artist_ptr& artist ) : PlaylistInterface( this ) , m_id( id ) , m_name( name ) , m_artist( artist ) - , m_collection( collection ) , m_currentTrack( 0 ) { } @@ -71,7 +70,7 @@ Album::tracks() { if ( m_queries.isEmpty() ) { - DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection ); + DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks(); cmd->setAlbum( this ); cmd->setSortOrder( DatabaseCommand_AllTracks::AlbumPosition ); diff --git a/src/libtomahawk/album.h b/src/libtomahawk/album.h index e11521b81..35f4b48e2 100644 --- a/src/libtomahawk/album.h +++ b/src/libtomahawk/album.h @@ -19,15 +19,14 @@ class DLLEXPORT Album : public QObject, public PlaylistInterface Q_OBJECT public: - static album_ptr get( unsigned int id, const QString& name, const Tomahawk::artist_ptr& artist, const Tomahawk::collection_ptr& collection ); + static album_ptr get( unsigned int id, const QString& name, const Tomahawk::artist_ptr& artist ); - Album( unsigned int id, const QString& name, const Tomahawk::artist_ptr& artist, const Tomahawk::collection_ptr& collection ); + Album( unsigned int id, const QString& name, const Tomahawk::artist_ptr& artist ); unsigned int id() const { return m_id; } QString name() const { return m_name; } artist_ptr artist() const { return m_artist; } - Tomahawk::collection_ptr collection() const { return m_collection; } QList tracks(); virtual int trackCount() const { return m_queries.count(); } @@ -60,7 +59,6 @@ private: artist_ptr m_artist; QList m_queries; - Tomahawk::collection_ptr m_collection; unsigned int m_currentTrack; }; diff --git a/src/libtomahawk/artist.cpp b/src/libtomahawk/artist.cpp index c44aa8ce1..38fc1b691 100644 --- a/src/libtomahawk/artist.cpp +++ b/src/libtomahawk/artist.cpp @@ -13,7 +13,7 @@ Artist::Artist() {} Artist::~Artist() {} artist_ptr -Artist::get( unsigned int id, const QString& name, const Tomahawk::collection_ptr& collection ) +Artist::get( unsigned int id, const QString& name ) { static QHash< unsigned int, artist_ptr > s_artists; static QMutex s_mutex; @@ -24,7 +24,7 @@ Artist::get( unsigned int id, const QString& name, const Tomahawk::collection_pt return s_artists.value( id ); } - artist_ptr a = artist_ptr( new Artist( id, name, collection ) ); + artist_ptr a = artist_ptr( new Artist( id, name ) ); if ( id > 0 ) s_artists.insert( id, a ); @@ -33,23 +33,15 @@ Artist::get( unsigned int id, const QString& name, const Tomahawk::collection_pt } -Artist::Artist( unsigned int id, const QString& name, const Tomahawk::collection_ptr& collection ) +Artist::Artist( unsigned int id, const QString& name ) : PlaylistInterface( this ) , m_id( id ) , m_name( name ) , m_currentTrack( 0 ) - , m_collection( collection ) { } -Tomahawk::collection_ptr -Artist::collection() const -{ - return m_collection; -} - - void Artist::onTracksAdded( const QList& tracks ) { @@ -82,7 +74,7 @@ Artist::tracks() { if ( m_queries.isEmpty() ) { - DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks( m_collection ); + DatabaseCommand_AllTracks* cmd = new DatabaseCommand_AllTracks(); cmd->setArtist( this ); cmd->setSortOrder( DatabaseCommand_AllTracks::Album ); diff --git a/src/libtomahawk/artist.h b/src/libtomahawk/artist.h index a1f7c0457..455b09918 100644 --- a/src/libtomahawk/artist.h +++ b/src/libtomahawk/artist.h @@ -18,8 +18,8 @@ class DLLEXPORT Artist : public QObject, public PlaylistInterface Q_OBJECT public: - static artist_ptr get( unsigned int id, const QString& name, const Tomahawk::collection_ptr& collection ); - Artist( unsigned int id, const QString& name, const Tomahawk::collection_ptr& collection ); + static artist_ptr get( unsigned int id, const QString& name ); + Artist( unsigned int id, const QString& name ); Artist(); virtual ~Artist(); @@ -27,8 +27,6 @@ public: unsigned int id() const { return m_id; } QString name() const { return m_name; } - Tomahawk::collection_ptr collection() const; - virtual QList tracks(); virtual int trackCount() const { return 0; } @@ -61,7 +59,6 @@ private: QList m_queries; unsigned int m_currentTrack; - Tomahawk::collection_ptr m_collection; }; }; // ns diff --git a/src/libtomahawk/database/databasecommand_addfiles.cpp b/src/libtomahawk/database/databasecommand_addfiles.cpp index 0026c1f13..10c1ee429 100644 --- a/src/libtomahawk/database/databasecommand_addfiles.cpp +++ b/src/libtomahawk/database/databasecommand_addfiles.cpp @@ -166,8 +166,8 @@ DatabaseCommand_AddFiles::exec( DatabaseImpl* dbi ) Tomahawk::query_ptr query = Tomahawk::Query::get( artist, track, album ); attr["releaseyear"] = m.value( "year" ); - Tomahawk::artist_ptr artistptr = Tomahawk::Artist::get( artistid, artist, source()->collection() ); - Tomahawk::album_ptr albumptr = Tomahawk::Album::get( albumid, album, artistptr, source()->collection() ); + Tomahawk::artist_ptr artistptr = Tomahawk::Artist::get( artistid, artist ); + Tomahawk::album_ptr albumptr = Tomahawk::Album::get( albumid, album, artistptr ); Tomahawk::result_ptr result = Tomahawk::result_ptr( new Tomahawk::Result() ); result->setModificationTime( mtime ); result->setSize( size ); diff --git a/src/libtomahawk/database/databasecommand_allalbums.cpp b/src/libtomahawk/database/databasecommand_allalbums.cpp index 446c7be4f..56aba5672 100644 --- a/src/libtomahawk/database/databasecommand_allalbums.cpp +++ b/src/libtomahawk/database/databasecommand_allalbums.cpp @@ -41,8 +41,8 @@ DatabaseCommand_AllAlbums::exec( DatabaseImpl* dbi ) while( query.next() ) { - Tomahawk::artist_ptr artist = Tomahawk::Artist::get( query.value( 2 ).toUInt(), query.value( 3 ).toString(), m_collection ); - Tomahawk::album_ptr album = Tomahawk::Album::get( query.value( 0 ).toUInt(), query.value( 1 ).toString(), artist, m_collection ); + Tomahawk::artist_ptr artist = Tomahawk::Artist::get( query.value( 2 ).toUInt(), query.value( 3 ).toString() ); + Tomahawk::album_ptr album = Tomahawk::Album::get( query.value( 0 ).toUInt(), query.value( 1 ).toString(), artist ); al << album; } diff --git a/src/libtomahawk/database/databasecommand_alltracks.cpp b/src/libtomahawk/database/databasecommand_alltracks.cpp index cc9ed161c..cb89505d3 100644 --- a/src/libtomahawk/database/databasecommand_alltracks.cpp +++ b/src/libtomahawk/database/databasecommand_alltracks.cpp @@ -5,17 +5,16 @@ #include "databaseimpl.h" #include "artist.h" #include "album.h" +#include "sourcelist.h" void DatabaseCommand_AllTracks::exec( DatabaseImpl* dbi ) { - Q_ASSERT( !m_collection->source().isNull() ); - TomahawkSqlQuery query = dbi->newquery(); QList ql; - QString m_orderToken; + QString m_orderToken, sourceToken; switch ( m_sortOrder ) { case 0: @@ -34,6 +33,10 @@ DatabaseCommand_AllTracks::exec( DatabaseImpl* dbi ) break; } + + if ( !m_collection.isNull() ) + sourceToken = QString( "AND file.source %1" ).arg( m_collection->source()->isLocal() ? "IS NULL" : QString( "= %1" ).arg( m_collection->source()->id() ) ); + QString sql = QString( "SELECT file.id, artist.name, album.name, track.name, file.size, " "file.duration, file.bitrate, file.url, file.source, file.mtime, file.mimetype, file_join.albumpos, artist.id, album.id, track.id " @@ -43,10 +46,10 @@ DatabaseCommand_AllTracks::exec( DatabaseImpl* dbi ) "WHERE file.id = file_join.file " "AND file_join.artist = artist.id " "AND file_join.track = track.id " - "AND file.source %1 " + "%1 " "%2 %3 " "%4 %5 %6" - ).arg( m_collection->source()->isLocal() ? "IS NULL" : QString( "= %1" ).arg( m_collection->source()->id() ) ) + ).arg( sourceToken ) .arg( !m_artist ? QString() : QString( "AND artist.id = %1" ).arg( m_artist->id() ) ) .arg( !m_album ? QString() : QString( "AND album.id = %1" ).arg( m_album->id() ) ) .arg( m_sortOrder > 0 ? QString( "ORDER BY %1" ).arg( m_orderToken ) : QString() ) @@ -63,11 +66,24 @@ DatabaseCommand_AllTracks::exec( DatabaseImpl* dbi ) QVariantMap attr; TomahawkSqlQuery attrQuery = dbi->newquery(); + Tomahawk::source_ptr s; - if( m_collection->source()->isLocal() ) + if( query.value( 8 ).toUInt() == 0 ) + { + s = SourceList::instance()->getLocal(); result->setUrl( query.value( 7 ).toString() ); + } else - result->setUrl( QString( "servent://%1\t%2" ).arg( m_collection->source()->userName() ).arg( query.value( 7 ).toString() ) ); + { + s = SourceList::instance()->get( query.value( 8 ).toUInt() ); + if( s.isNull() ) + { + Q_ASSERT( false ); + continue; + } + + result->setUrl( QString( "servent://%1\t%2" ).arg( s->userName() ).arg( query.value( 7 ).toString() ) ); + } QString artist, track, album; artist = query.value( 1 ).toString(); @@ -75,8 +91,8 @@ DatabaseCommand_AllTracks::exec( DatabaseImpl* dbi ) track = query.value( 3 ).toString(); Tomahawk::query_ptr qry = Tomahawk::Query::get( artist, track, album ); - Tomahawk::artist_ptr artistptr = Tomahawk::Artist::get( query.value( 12 ).toUInt(), artist, m_collection ); - Tomahawk::album_ptr albumptr = Tomahawk::Album::get( query.value( 13 ).toUInt(), album, artistptr, m_collection ); + Tomahawk::artist_ptr artistptr = Tomahawk::Artist::get( query.value( 12 ).toUInt(), artist ); + Tomahawk::album_ptr albumptr = Tomahawk::Album::get( query.value( 13 ).toUInt(), album, artistptr ); result->setId( query.value( 14 ).toUInt() ); result->setArtist( artistptr ); @@ -89,7 +105,7 @@ DatabaseCommand_AllTracks::exec( DatabaseImpl* dbi ) result->setMimetype( query.value( 10 ).toString() ); result->setAlbumPos( query.value( 11 ).toUInt() ); result->setScore( 1.0 ); - result->setCollection( m_collection ); + result->setCollection( s->collection() ); attrQuery.prepare( "SELECT k, v FROM track_attributes WHERE id = ?" ); attrQuery.bindValue( 0, result->dbid() ); diff --git a/src/libtomahawk/database/databasecommand_alltracks.h b/src/libtomahawk/database/databasecommand_alltracks.h index 50df59aa3..5eea1c55c 100644 --- a/src/libtomahawk/database/databasecommand_alltracks.h +++ b/src/libtomahawk/database/databasecommand_alltracks.h @@ -22,7 +22,7 @@ public: AlbumPosition = 3 }; - explicit DatabaseCommand_AllTracks( const Tomahawk::collection_ptr& collection, QObject* parent = 0 ) + explicit DatabaseCommand_AllTracks( const Tomahawk::collection_ptr& collection = Tomahawk::collection_ptr(), QObject* parent = 0 ) : DatabaseCommand( parent ) , m_collection( collection ) , m_artist( 0 ) diff --git a/src/libtomahawk/database/databasecommand_loadallplaylists.cpp b/src/libtomahawk/database/databasecommand_loadallplaylists.cpp index 576e04801..d742c6c91 100644 --- a/src/libtomahawk/database/databasecommand_loadallplaylists.cpp +++ b/src/libtomahawk/database/databasecommand_loadallplaylists.cpp @@ -15,7 +15,7 @@ void DatabaseCommand_LoadAllPlaylists::exec( DatabaseImpl* dbi ) query.exec( QString( "SELECT guid, title, info, creator, lastmodified, shared, currentrevision " "FROM playlist WHERE source %1 AND dynplaylist = 'false'" ) .arg( source()->isLocal() ? "IS NULL" : - QString( "=%1" ).arg( source()->id() ) + QString( "= %1" ).arg( source()->id() ) ) ); QList plists; diff --git a/src/libtomahawk/database/databasecommand_loadplaylistentries.cpp b/src/libtomahawk/database/databasecommand_loadplaylistentries.cpp index f81c03980..0e47ee26a 100644 --- a/src/libtomahawk/database/databasecommand_loadplaylistentries.cpp +++ b/src/libtomahawk/database/databasecommand_loadplaylistentries.cpp @@ -16,7 +16,9 @@ DatabaseCommand_LoadPlaylistEntries::exec( DatabaseImpl* dbi ) emit done( m_revguid, m_guids, m_oldentries, m_islatest, m_entrymap, true ); } -void DatabaseCommand_LoadPlaylistEntries::generateEntries( DatabaseImpl* dbi ) + +void +DatabaseCommand_LoadPlaylistEntries::generateEntries( DatabaseImpl* dbi ) { TomahawkSqlQuery query_entries = dbi->newquery(); query_entries.prepare("SELECT entries, playlist, author, timestamp, previous_revision " diff --git a/src/libtomahawk/database/databasecommand_loadplaylistentries.h b/src/libtomahawk/database/databasecommand_loadplaylistentries.h index 4ddc6f0af..5f672749e 100644 --- a/src/libtomahawk/database/databasecommand_loadplaylistentries.h +++ b/src/libtomahawk/database/databasecommand_loadplaylistentries.h @@ -15,7 +15,7 @@ Q_OBJECT public: explicit DatabaseCommand_LoadPlaylistEntries( QString revision_guid, QObject* parent = 0 ) - : DatabaseCommand( parent ), m_revguid( revision_guid ) + : DatabaseCommand( parent ), m_revguid( revision_guid ), m_islatest( true ) {} virtual void exec( DatabaseImpl* ); diff --git a/src/libtomahawk/database/databasecommand_resolve.cpp b/src/libtomahawk/database/databasecommand_resolve.cpp index 85c6cabaf..74c2742e4 100644 --- a/src/libtomahawk/database/databasecommand_resolve.cpp +++ b/src/libtomahawk/database/databasecommand_resolve.cpp @@ -108,8 +108,8 @@ DatabaseCommand_Resolve::exec( DatabaseImpl* lib ) result->setUrl( QString( "servent://%1\t%2" ).arg( s->userName() ).arg( url_str ) ); } - Tomahawk::artist_ptr artist = Tomahawk::Artist::get( files_query.value( 15 ).toUInt(), files_query.value( 10 ).toString(), s->collection() ); - Tomahawk::album_ptr album = Tomahawk::Album::get( files_query.value( 16 ).toUInt(), files_query.value( 11 ).toString(), artist, s->collection() ); + Tomahawk::artist_ptr artist = Tomahawk::Artist::get( files_query.value( 15 ).toUInt(), files_query.value( 10 ).toString() ); + Tomahawk::album_ptr album = Tomahawk::Album::get( files_query.value( 16 ).toUInt(), files_query.value( 11 ).toString(), artist ); result->setModificationTime( files_query.value( 1 ).toUInt() ); result->setSize( files_query.value( 2 ).toUInt() ); diff --git a/src/libtomahawk/database/databaseimpl.cpp b/src/libtomahawk/database/databaseimpl.cpp index d60f82258..30002466b 100644 --- a/src/libtomahawk/database/databaseimpl.cpp +++ b/src/libtomahawk/database/databaseimpl.cpp @@ -187,12 +187,12 @@ DatabaseImpl::file( int fid ) { return r; } - + r->setUrl( QString( "servent://%1\t%2" ).arg( s->userName() ).arg( url_str ) ); } - Tomahawk::artist_ptr artist = Tomahawk::Artist::get( query.value( 7 ).toUInt(), query.value( 10 ).toString(), s->collection() ); - Tomahawk::album_ptr album = Tomahawk::Album::get( query.value( 8 ).toUInt(), query.value( 11 ).toString(), artist, s->collection() ); + Tomahawk::artist_ptr artist = Tomahawk::Artist::get( query.value( 7 ).toUInt(), query.value( 10 ).toString() ); + Tomahawk::album_ptr album = Tomahawk::Album::get( query.value( 8 ).toUInt(), query.value( 11 ).toString(), artist ); r->setUrl( query.value( 0 ).toString() ); r->setModificationTime( query.value( 1 ).toUInt() ); @@ -512,7 +512,7 @@ DatabaseImpl::result( const QString& url ) if( query.next() ) { Tomahawk::source_ptr s; - + const QString url_str = query.value( 0 ).toString(); if ( query.value( 13 ).toUInt() == 0 ) { @@ -526,13 +526,13 @@ DatabaseImpl::result( const QString& url ) { return res; } - + res->setUrl( QString( "servent://%1\t%2" ).arg( s->userName() ).arg( url_str ) ); } - - Tomahawk::artist_ptr artist = Tomahawk::Artist::get( query.value( 15 ).toUInt(), query.value( 10 ).toString(), s->collection() ); - Tomahawk::album_ptr album = Tomahawk::Album::get( query.value( 16 ).toUInt(), query.value( 11 ).toString(), artist, s->collection() ); - + + Tomahawk::artist_ptr artist = Tomahawk::Artist::get( query.value( 15 ).toUInt(), query.value( 10 ).toString() ); + Tomahawk::album_ptr album = Tomahawk::Album::get( query.value( 16 ).toUInt(), query.value( 11 ).toString(), artist ); + res->setModificationTime( query.value( 1 ).toUInt() ); res->setSize( query.value( 2 ).toUInt() ); res->setMimetype( query.value( 4 ).toString() ); diff --git a/src/libtomahawk/database/databaseworker.cpp b/src/libtomahawk/database/databaseworker.cpp index f24fe99a6..e8efedf91 100644 --- a/src/libtomahawk/database/databaseworker.cpp +++ b/src/libtomahawk/database/databaseworker.cpp @@ -50,9 +50,8 @@ DatabaseWorker::enqueue( const QSharedPointer& cmd ) return; } - m_outstanding++; - QMutexLocker lock( &m_mut ); + m_outstanding++; m_commands << cmd; if ( m_outstanding == 1 ) @@ -176,6 +175,7 @@ DatabaseWorker::doWork() cmd->emitFinished(); + QMutexLocker lock( &m_mut ); m_outstanding--; if ( m_outstanding > 0 ) QTimer::singleShot( 0, this, SLOT( doWork() ) ); diff --git a/src/libtomahawk/playlist.cpp b/src/libtomahawk/playlist.cpp index 7ce3c795d..13128baa8 100644 --- a/src/libtomahawk/playlist.cpp +++ b/src/libtomahawk/playlist.cpp @@ -120,9 +120,9 @@ Playlist::Playlist( const source_ptr& author, void -Playlist::init() +Playlist::init() { - m_locallyChanged = false; + m_locallyChanged = false; connect( Pipeline::instance(), SIGNAL( idle() ), SLOT( onResolvingFinished() ) ); } @@ -217,7 +217,7 @@ Playlist::reportDeleted( const Tomahawk::playlist_ptr& self ) void Playlist::loadRevision( const QString& rev ) { - qDebug() << Q_FUNC_INFO; + qDebug() << Q_FUNC_INFO << currentrevision() << rev << m_title; DatabaseCommand_LoadPlaylistEntries* cmd = new DatabaseCommand_LoadPlaylistEntries( rev.isEmpty() ? currentrevision() : rev ); @@ -314,7 +314,7 @@ Playlist::setNewRevision( const QString& rev, bool is_newest_rev, const QMap< QString, Tomahawk::plentry_ptr >& addedmap ) { - + qDebug() << Q_FUNC_INFO << rev << is_newest_rev << m_title << addedmap.count() << neworderedguids.count() << oldorderedguids.count(); // build up correctly ordered new list of plentry_ptrs from // existing ones, and the ones that have been added QMap entriesmap; diff --git a/src/libtomahawk/playlist/playlistmodel.cpp b/src/libtomahawk/playlist/playlistmodel.cpp index 6f6359537..2a72cb683 100644 --- a/src/libtomahawk/playlist/playlistmodel.cpp +++ b/src/libtomahawk/playlist/playlistmodel.cpp @@ -72,7 +72,7 @@ PlaylistModel::loadPlaylist( const Tomahawk::playlist_ptr& playlist, bool loadEn if ( !loadEntries ) return; - + PlItem* plitem; QList entries = playlist->entries(); if ( entries.count() ) @@ -94,6 +94,8 @@ PlaylistModel::loadPlaylist( const Tomahawk::playlist_ptr& playlist, bool loadEn emit endInsertRows(); } + else + qDebug() << "Playlist seems empty:" << playlist->title(); emit loadingFinished(); emit trackCountChanged( rowCount( QModelIndex() ) ); diff --git a/src/scriptresolver.cpp b/src/scriptresolver.cpp index 4f6b43526..5c5a3786a 100644 --- a/src/scriptresolver.cpp +++ b/src/scriptresolver.cpp @@ -117,7 +117,6 @@ ScriptResolver::handleMsg( const QByteArray& msg ) QList< Tomahawk::result_ptr > results; const QVariantList reslist = m.value( "results" ).toList(); - Tomahawk::collection_ptr coll = SourceList::instance()->getLocal()->collection(); foreach( const QVariant& rv, reslist ) { @@ -125,9 +124,9 @@ ScriptResolver::handleMsg( const QByteArray& msg ) qDebug() << "RES" << m; Tomahawk::result_ptr rp( new Tomahawk::Result() ); - Tomahawk::artist_ptr ap = Tomahawk::Artist::get( 0, m.value( "artist" ).toString(), coll ); + Tomahawk::artist_ptr ap = Tomahawk::Artist::get( 0, m.value( "artist" ).toString() ); rp->setArtist( ap ); - rp->setAlbum( Tomahawk::Album::get( 0, m.value( "album" ).toString(), ap, coll ) ); + rp->setAlbum( Tomahawk::Album::get( 0, m.value( "album" ).toString(), ap ) ); rp->setTrack( m.value( "track" ).toString() ); rp->setDuration( m.value( "duration" ).toUInt() ); rp->setBitrate( m.value( "bitrate" ).toUInt() );