diff --git a/src/libtomahawk/dropjob.cpp b/src/libtomahawk/dropjob.cpp index 530ad5f74..12432e682 100644 --- a/src/libtomahawk/dropjob.cpp +++ b/src/libtomahawk/dropjob.cpp @@ -112,7 +112,8 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType if ( url.contains( "spotify" ) && url.contains( "track" ) ) return true; - if ( url.contains( "rdio.com" ) && ( url.contains( "track" ) || /*url.contains( "artist" ) ||*/ url.contains( "album" ) || url.contains( "playlists" ) ) ) + if ( url.contains( "rdio.com" ) && ( ( ( url.contains( "track" ) && url.contains( "artist" ) && url.contains( "album" ) ) + || url.contains( "playlists" ) ) ) ) return true; } @@ -122,6 +123,8 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType return true; if ( url.contains( "spotify" ) && url.contains( "album" ) ) return true; + if ( url.contains( "rdio.com" ) && ( url.contains( "artist" ) && url.contains( "album" ) && !url.contains( "track" ) ) ) + return true; } if ( acceptedType.testFlag( Artist ) ) @@ -130,6 +133,8 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType return true; if ( url.contains( "spotify" ) && url.contains( "artist" ) ) return true; + if ( url.contains( "rdio.com" ) && ( url.contains( "artist" ) && !url.contains( "album" ) && !url.contains( "track" ) ) ) + return true; } // We whitelist t.co and bit.ly (and j.mp) since they do some link checking. Often playable (e.g. spotify..) links hide behind them, @@ -463,16 +468,11 @@ DropJob::handleRdioUrls( const QString& urlsRaw ) setDropAction( Create ); RdioParser* rdio = new RdioParser( this ); + connect( rdio, SIGNAL( tracks( QList ) ), this, SLOT( onTracksAdded( QList< Tomahawk::query_ptr > ) ) ); + rdio->setCreatePlaylist( dropAction() == Create ); rdio->parse( urls ); - /// This currently supports draging and dropping a spotify playlist and artist - if ( dropAction() == Append ) - { - tDebug() << Q_FUNC_INFO << "Asking for spotify browse contents from" << urls; - connect( rdio, SIGNAL( tracks( QList ) ), this, SLOT( onTracksAdded( QList< Tomahawk::query_ptr > ) ) ); - } - m_queryCount++; } diff --git a/src/libtomahawk/utils/rdioparser.cpp b/src/libtomahawk/utils/rdioparser.cpp index c16db62bc..7e7d2e28f 100644 --- a/src/libtomahawk/utils/rdioparser.cpp +++ b/src/libtomahawk/utils/rdioparser.cpp @@ -236,7 +236,7 @@ RdioParser::parseTrack( const QString& origUrl ) query_ptr q = Query::get( artist, trk, album, uuid(), !m_createPlaylist ); m_count++; - m_queries << q; + m_tracks << q; checkFinished(); } @@ -334,6 +334,7 @@ RdioParser::checkFinished() m_tracks ); connect( m_playlist.data(), SIGNAL( revisionLoaded( Tomahawk::PlaylistRevision ) ), this, SLOT( playlistCreated() ) ); + return; } else @@ -342,6 +343,8 @@ RdioParser::checkFinished() emit track( m_tracks.first() ); else if ( m_multi && m_count == m_total ) emit tracks( m_tracks ); + + m_tracks.clear(); } deleteLater(); diff --git a/src/libtomahawk/utils/rdioparser.h b/src/libtomahawk/utils/rdioparser.h index 23b5dfab7..3302b4715 100644 --- a/src/libtomahawk/utils/rdioparser.h +++ b/src/libtomahawk/utils/rdioparser.h @@ -82,7 +82,6 @@ private: bool m_multi; int m_count, m_total; - QList< query_ptr > m_queries; QSet< QNetworkReply* > m_reqQueries; DropJobNotifier* m_browseJob;