1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-24 01:39:42 +01:00

Fix for local xspf dropjob, also allow remotes

This commit is contained in:
Hugo Lindström 2011-11-19 22:29:39 +01:00
parent 42f5ef4bc9
commit 302bdd4c6d

View File

@ -68,7 +68,8 @@ DropJob::mimeTypes()
<< "application/tomahawk.metadata.artist"
<< "application/tomahawk.metadata.album"
<< "application/tomahawk.mixed"
<< "text/plain";
<< "text/plain"
<< "text/uri-list";
return mimeTypes;
}
@ -77,6 +78,7 @@ bool
DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType, DropJob::DropAction acceptedAction )
{
Q_UNUSED( acceptedAction );
if ( data->hasFormat( "application/tomahawk.query.list" )
|| data->hasFormat( "application/tomahawk.plentry.list" )
|| data->hasFormat( "application/tomahawk.result.list" )
@ -89,14 +91,14 @@ DropJob::acceptsMimeData( const QMimeData* data, DropJob::DropTypes acceptedType
}
// check plain text url types
if ( !data->hasFormat( "text/plain" ) )
if ( !data->hasFormat( "text/plain" ) || !data->hasFormat( "text/uri-list" ) )
return false;
const QString url = data->data( "text/plain" );
if ( acceptedType.testFlag( Playlist ) )
{
if( url.contains( "xspf" ) )
if( url.contains( "xspf" ) || data->data( "text/uri-list" ).contains( "xspf" ) )
return true;
// Not the most elegant
@ -151,7 +153,7 @@ DropJob::isDropType( DropJob::DropType desired, const QMimeData* data )
const QString url = data->data( "text/plain" );
if ( desired == Playlist )
{
if( url.contains( "xspf" ) )
if( url.contains( "xspf" ) || data->data( "text/uri-list").contains( "xspf" ) )
return true;
// Not the most elegant
@ -222,10 +224,15 @@ DropJob::parseMimeData( const QMimeData *data )
results = tracksFromArtistMetaData( data );
else if ( data->hasFormat( "application/tomahawk.mixed" ) )
tracksFromMixedData( data );
else if ( data->hasFormat( "text/plain" ) )
else if ( data->hasFormat( "text/plain" ) && !data->data( "text/plain" ).isEmpty() )
{
const QString plainData = QString::fromUtf8( data->data( "text/plain" ) );
handleAllUrls( plainData );
}else if ( data->hasFormat( "text/uri-list" ) )
{
const QString plainData = QString::fromUtf8( data->data( "text/uri-list" ).trimmed() );
handleAllUrls( plainData );
}
m_resultList.append( results );
@ -419,16 +426,23 @@ DropJob::handleXspfs( const QString& fileUrls )
foreach ( const QString& url, urls )
{
QFile xspfFile( QUrl::fromUserInput( url ).toLocalFile() );
QFile xspfFile( QUrl::fromUserInput( url ).toLocalFile() );
if ( xspfFile.exists() )
{
XSPFLoader* l = new XSPFLoader( true, this );
tDebug( LOGINFO ) << "Loading local xspf " << xspfFile.fileName();
l->load( xspfFile );
}
else if( QUrl( url ).isValid() )
{
XSPFLoader* l = new XSPFLoader( true, this );
tDebug( LOGINFO ) << "Loading remote xspf " << url;
l->load( QUrl( url ) );
}
else
tLog( LOGINFO ) << "Error Loading local xspf " << xspfFile.fileName();
tLog() << "Failed to load or parse dropped XSPF";
}
}