44 * Copyright 2011, Leo Franchi <[email protected] > 55 * Copyright 2011-2012, Jeff Mitchell <[email protected] > 66 * Copyright 2011-2012, Christian Muehlhaeuser <[email protected] > 7+ * Copyright 2016, Dominik Schmidt <[email protected] > 78 *
89 * Tomahawk is free software: you can redistribute it and/or modify
910 * it under the terms of the GNU General Public License as published by
3536#include " utils/Logger.h"
3637#include " utils/TomahawkUtils.h"
3738#include " utils/XspfLoader.h"
39+ #include " utils/LinkParser.h"
3840
3941#include " Artist.h"
4042#include " Album.h"
@@ -172,12 +174,7 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
172174 if ( url.contains ( " grooveshark.com" ) && url.contains ( " playlist" ) )
173175 return true ;
174176
175- // Check Scriptresolvers
176- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
177- {
178- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypePlaylist ) )
179- return true ;
180- }
177+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypePlaylist );
181178 }
182179
183180 if ( acceptedType.testFlag ( Track ) )
@@ -198,12 +195,7 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
198195 || url.contains ( " playlists" ) ) ) )
199196 return true ;
200197
201- // Check Scriptresolvers
202- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
203- {
204- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypeTrack ) )
205- return true ;
206- }
198+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypeTrack );
207199 }
208200
209201 if ( acceptedType.testFlag ( Album ) )
@@ -215,12 +207,7 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
215207 if ( url.contains ( " rdio.com" ) && ( url.contains ( " artist" ) && url.contains ( " album" ) && !url.contains ( " track" ) ) )
216208 return true ;
217209
218- // Check Scriptresolvers
219- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
220- {
221- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypeAlbum ) )
222- return true ;
223- }
210+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypeAlbum );
224211 }
225212
226213 if ( acceptedType.testFlag ( Artist ) )
@@ -232,12 +219,7 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
232219 if ( url.contains ( " rdio.com" ) && ( url.contains ( " artist" ) && !url.contains ( " album" ) && !url.contains ( " track" ) ) )
233220 return true ;
234221
235- // Check Scriptresolvers
236- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
237- {
238- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypeArtist ) )
239- return true ;
240- }
222+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypeArtist );
241223 }
242224
243225 // We whitelist certain url-shorteners since they do some link checking. Often playable (e.g. spotify) links hide behind them,
@@ -303,15 +285,7 @@ DropJob::isDropType( DropJob::DropType desired, const QMimeData* data )
303285 if ( ShortenedLinkParser::handlesUrl ( url ) )
304286 return true ;
305287
306- // Check Scriptresolvers
307- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
308- {
309- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypePlaylist ) )
310- {
311- tLog ( LOGVERBOSE ) << Q_FUNC_INFO << " Accepting current drop as a playlist" << resolver->name ();
312- return true ;
313- }
314- }
288+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypePlaylist );
315289
316290 }
317291
@@ -761,16 +735,12 @@ DropJob::handleTrackUrls( const QString& urls )
761735
762736 foreach ( QString track, tracks )
763737 {
764- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
738+ QList< QSharedPointer< Utils::LinkParserPlugin > > parserPlugins = Utils::LinkParser::instance ()->parserPluginsForUrl ( track, Utils::UrlTypeAny );
739+ if ( !parserPlugins.isEmpty () )
765740 {
766- if ( resolver->canParseUrl ( track, ExternalResolver::UrlTypeAny ) )
767- {
768- ScriptCommand_LookupUrl* cmd = new ScriptCommand_LookupUrl ( resolver, track );
769- connect ( cmd, SIGNAL ( information ( QString, QSharedPointer<QObject> ) ), this , SLOT ( informationForUrl ( QString, QSharedPointer<QObject> ) ) );
770- cmd->enqueue ();
771- m_queryCount++;
772- break ;
773- }
741+ Tomahawk::Utils::LinkParser::instance ()->lookupUrl ( track, parserPlugins );
742+ connect ( Tomahawk::Utils::LinkParser::instance (), SIGNAL ( informationFound ( QString, QSharedPointer<QObject> ) ), this , SLOT ( informationForUrl ( QString, QSharedPointer<QObject> ) ) );
743+ m_queryCount++;
774744 }
775745 }
776746 }
0 commit comments