diff --git a/src/libtomahawk/dropjob.cpp b/src/libtomahawk/dropjob.cpp index 4a557a6f5..6108b79ee 100644 --- a/src/libtomahawk/dropjob.cpp +++ b/src/libtomahawk/dropjob.cpp @@ -103,19 +103,18 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType const QString url = data->data( "text/plain" ); - if ( acceptedType.testFlag( Playlist ) ) { - if( url.contains( "xspf" ) ) + if ( url.contains( "xspf" ) ) return true; - if( url.contains( "m3u" ) ) + if ( url.contains( "m3u" ) ) return true; - if( data->data( "text/uri-list" ).contains( "xspf" ) ) + if ( data->data( "text/uri-list" ).contains( "xspf" ) ) return true; - if( data->data( "text/uri-list" ).contains( "m3u" ) ) + if ( data->data( "text/uri-list" ).contains( "m3u" ) ) return true; // Not the most elegant @@ -125,10 +124,10 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType if ( acceptedType.testFlag( Track ) ) { - if( url.contains( "m3u" ) ) + if ( url.contains( "m3u" ) ) return true; - if( data->data( "text/uri-list" ).contains( "m3u" ) ) + if ( data->data( "text/uri-list" ).contains( "m3u" ) ) return true; if ( url.contains( "itunes" ) && url.contains( "album" ) ) // YES itunes is fucked up and song links have album/ in the url. @@ -466,6 +465,7 @@ DropJob::handleM3u( const QString& fileUrls ) tDebug() << Q_FUNC_INFO << "Trying to append contents from" << urls; connect( m, SIGNAL( tracks( QList ) ), this, SLOT( onTracksAdded( QList< Tomahawk::query_ptr > ) ) ); } + m->parse(); m_queryCount++; } @@ -556,7 +556,6 @@ DropJob::handleRdioUrls( const QString& urlsRaw ) m_queryCount++; rdio->setCreatePlaylist( dropAction() == Create ); rdio->parse( urls ); - } @@ -785,5 +784,4 @@ DropJob::getTopTen( const QString &artist ) Tomahawk::InfoSystem::InfoSystem::instance()->getInfo( requestData ); m_queryCount++; - } diff --git a/src/libtomahawk/utils/m3uloader.cpp b/src/libtomahawk/utils/m3uloader.cpp index 855ab8e92..3ec53f131 100644 --- a/src/libtomahawk/utils/m3uloader.cpp +++ b/src/libtomahawk/utils/m3uloader.cpp @@ -1,6 +1,7 @@ /* === This file is part of Tomahawk Player - === * * Copyright 2010-2011, Hugo Lindström + * Copyright 2011, Christian Muehlhaeuser * * Tomahawk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -22,46 +23,55 @@ #include "query.h" #include "sourcelist.h" -//#include -#include #include "playlist.h" - #include "dropjob.h" -#include + +#include +#include + /* taglib */ #include #include using namespace Tomahawk; -M3uLoader::M3uLoader( const QStringList& Urls, bool createNewPlaylist, QObject* parent ) - : QObject ( parent ) + +M3uLoader::M3uLoader( const QStringList& urls, bool createNewPlaylist, QObject* parent ) + : QObject( parent ) , m_single( false ) , m_trackMode( true ) , m_createNewPlaylist( createNewPlaylist ) - + , m_urls( urls ) { - foreach ( const QString& url, Urls ) - parseM3u( url ); } -M3uLoader::M3uLoader( const QString& Url, bool createNewPlaylist, QObject* parent ) - : QObject ( parent ) + +M3uLoader::M3uLoader( const QString& url, bool createNewPlaylist, QObject* parent ) + : QObject( parent ) , m_single( false ) , m_trackMode( true ) , m_createNewPlaylist( createNewPlaylist ) + , m_urls( url ) { - parseM3u( Url ); } + M3uLoader::~M3uLoader() { } + +void +M3uLoader::parse() +{ + foreach ( const QString& url, m_urls ) + parseM3u( url ); +} + + void M3uLoader::getTags( const QFileInfo& info ) { - QByteArray fileName = QFile::encodeName( info.canonicalFilePath() ); const char *encodedName = fileName.constData(); @@ -83,9 +93,9 @@ M3uLoader::getTags( const QFileInfo& info ) Tomahawk::query_ptr q = Tomahawk::Query::get( artist, track, album, uuid(), !m_createNewPlaylist ); m_tracks << q; } - } + void M3uLoader::parseM3u( const QString& fileLink ) { @@ -94,22 +104,19 @@ M3uLoader::parseM3u( const QString& fileLink ) if ( !file.open( QIODevice::ReadOnly | QIODevice::Text ) ) { - qDebug() << "Error" << file.errorString(); + tDebug() << "Error opening m3u:" << file.errorString(); return; } m_title = fileInfo.baseName(); - while ( !file.atEnd() ) { - QByteArray line = file.readLine(); /// If anyone wants to take on the regex for parsing EXT, go ahead /// But the notion that users does not tag by a common rule. that seems hard - if( line.contains("EXT") ) + if ( line.contains( "EXT" ) ) continue; - qDebug() << line.simplified(); QFileInfo tmpFile( QUrl::fromUserInput( QString( line.simplified() ) ).toLocalFile() ); if( tmpFile.exists() ) @@ -117,21 +124,17 @@ M3uLoader::parseM3u( const QString& fileLink ) else { QFileInfo tmpFile( QUrl::fromUserInput( QString( fileInfo.canonicalPath() + "/" + line.simplified() ) ).toLocalFile() ); - if( tmpFile.exists() ) + if ( tmpFile.exists() ) getTags( tmpFile ); } - } - - if( m_tracks.isEmpty() ) + if ( m_tracks.isEmpty() ) { - - qDebug() << Q_FUNC_INFO << "Coulnt parse M3U!"; + tDebug() << Q_FUNC_INFO << "Could not parse M3U!"; return; } - if ( m_createNewPlaylist ) { m_playlist = Playlist::create( SourceList::instance()->getLocal(), @@ -143,14 +146,10 @@ M3uLoader::parseM3u( const QString& fileLink ) m_tracks ); connect( m_playlist.data(), SIGNAL( revisionLoaded( Tomahawk::PlaylistRevision ) ), this, SLOT( playlistCreated() ) ); - } else emit tracks( m_tracks ); - m_tracks.clear(); file.deleteLater(); - } - diff --git a/src/libtomahawk/utils/m3uloader.h b/src/libtomahawk/utils/m3uloader.h index f10ad859e..f9e9bf0c1 100644 --- a/src/libtomahawk/utils/m3uloader.h +++ b/src/libtomahawk/utils/m3uloader.h @@ -1,6 +1,7 @@ /* === This file is part of Tomahawk Player - === * - * Copyright 2011-2012, Hugo Lindström + * Copyright 2010-2011, Hugo Lindström + * Copyright 2011, Christian Muehlhaeuser * * Tomahawk is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -37,11 +38,15 @@ namespace Tomahawk class DLLEXPORT M3uLoader : public QObject { Q_OBJECT + public: - explicit M3uLoader( const QString& trackUrl, bool createNewPlaylist = false, QObject* parent = 0 ); - explicit M3uLoader( const QStringList& trackUrls, bool createNewPlaylist = false, QObject* parent = 0 ); + explicit M3uLoader( const QString& url, bool createNewPlaylist = false, QObject* parent = 0 ); + explicit M3uLoader( const QStringList& urls, bool createNewPlaylist = false, QObject* parent = 0 ); virtual ~M3uLoader(); +public slots: + void parse(); + signals: void track( const Tomahawk::query_ptr& track ); void tracks( const QList< Tomahawk::query_ptr > tracks ); @@ -55,7 +60,7 @@ private: bool m_trackMode; bool m_createNewPlaylist; playlist_ptr m_playlist; - + QStringList m_urls; }; }