3535#include " utils/Logger.h"
3636#include " utils/TomahawkUtils.h"
3737#include " utils/XspfLoader.h"
38+ #include " utils/LinkParser.h"
3839
3940#include " Artist.h"
4041#include " Album.h"
@@ -172,12 +173,7 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
172173 if ( url.contains ( " grooveshark.com" ) && url.contains ( " playlist" ) )
173174 return true ;
174175
175- // Check Scriptresolvers
176- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
177- {
178- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypePlaylist ) )
179- return true ;
180- }
176+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypePlaylist );
181177 }
182178
183179 if ( acceptedType.testFlag ( Track ) )
@@ -198,12 +194,7 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
198194 || url.contains ( " playlists" ) ) ) )
199195 return true ;
200196
201- // Check Scriptresolvers
202- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
203- {
204- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypeTrack ) )
205- return true ;
206- }
197+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypeTrack );
207198 }
208199
209200 if ( acceptedType.testFlag ( Album ) )
@@ -215,12 +206,7 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
215206 if ( url.contains ( " rdio.com" ) && ( url.contains ( " artist" ) && url.contains ( " album" ) && !url.contains ( " track" ) ) )
216207 return true ;
217208
218- // Check Scriptresolvers
219- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
220- {
221- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypeAlbum ) )
222- return true ;
223- }
209+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypeAlbum );
224210 }
225211
226212 if ( acceptedType.testFlag ( Artist ) )
@@ -232,12 +218,7 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
232218 if ( url.contains ( " rdio.com" ) && ( url.contains ( " artist" ) && !url.contains ( " album" ) && !url.contains ( " track" ) ) )
233219 return true ;
234220
235- // Check Scriptresolvers
236- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
237- {
238- if ( resolver->canParseUrl ( url, ExternalResolver::UrlTypeArtist ) )
239- return true ;
240- }
221+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypeArtist );
241222 }
242223
243224 // We whitelist certain url-shorteners since they do some link checking. Often playable (e.g. spotify) links hide behind them,
@@ -303,15 +284,7 @@ DropJob::isDropType( DropJob::DropType desired, const QMimeData* data )
303284 if ( ShortenedLinkParser::handlesUrl ( url ) )
304285 return true ;
305286
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- }
287+ return Tomahawk::Utils::LinkParser::instance ()->canParseUrl ( url, Tomahawk::Utils::UrlTypePlaylist );
315288
316289 }
317290
@@ -761,16 +734,12 @@ DropJob::handleTrackUrls( const QString& urls )
761734
762735 foreach ( QString track, tracks )
763736 {
764- foreach ( QPointer<ExternalResolver> resolver, Pipeline::instance ()->scriptResolvers () )
737+ QList< QSharedPointer< Utils::LinkParserPlugin > > parserPlugins = Utils::LinkParser::instance ()->parserPluginsForUrl ( track, Utils::UrlTypeAny );
738+ if ( !parserPlugins.isEmpty () )
765739 {
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- }
740+ Tomahawk::Utils::LinkParser::instance ()->lookupUrl ( track, parserPlugins );
741+ connect ( Tomahawk::Utils::LinkParser::instance (), SIGNAL ( informationFound ( QString, QSharedPointer<QObject> ) ), this , SLOT ( informationForUrl ( QString, QSharedPointer<QObject> ) ) );
742+ m_queryCount++;
774743 }
775744 }
776745 }
0 commit comments