mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-08-02 20:28:14 +02:00
TWK-936: Allow loading playlists with new open/playlist tomahawk link
This commit is contained in:
@@ -495,6 +495,23 @@ GlobalActionManager::handleOpenTrack( const query_ptr& q )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
GlobalActionManager::handleOpenTracks( const QList< query_ptr >& queries )
|
||||||
|
{
|
||||||
|
if ( queries.isEmpty() )
|
||||||
|
return;
|
||||||
|
|
||||||
|
ViewManager::instance()->queue()->model()->append( queries );
|
||||||
|
ViewManager::instance()->showQueue();
|
||||||
|
|
||||||
|
if ( !AudioEngine::instance()->isPlaying() && !AudioEngine::instance()->isPaused() )
|
||||||
|
{
|
||||||
|
connect( queries.first().data(), SIGNAL( resolvingFinished( bool ) ), this, SLOT( waitingForResolved( bool ) ) );
|
||||||
|
m_waitingToPlay = queries.first();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
GlobalActionManager::handlePlayTrack( const query_ptr& qry )
|
GlobalActionManager::handlePlayTrack( const query_ptr& qry )
|
||||||
{
|
{
|
||||||
@@ -591,6 +608,43 @@ GlobalActionManager::doQueueAdd( const QStringList& parts, const QList< QPair< Q
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if ( parts.size() && parts[ 0 ] == "playlist" )
|
||||||
|
{
|
||||||
|
QString xspfUrl, jspfUrl;
|
||||||
|
for ( int i = 0; i < queryItems.size(); i++ )
|
||||||
|
{
|
||||||
|
const QPair< QString, QString > queryItem = queryItems.at( i );
|
||||||
|
if ( queryItem.first == "xspf" )
|
||||||
|
{
|
||||||
|
xspfUrl = queryItem.second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if ( queryItem.first == "jspf" )
|
||||||
|
{
|
||||||
|
jspfUrl = queryItem.second;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !xspfUrl.isEmpty() )
|
||||||
|
{
|
||||||
|
XSPFLoader* loader = new XSPFLoader( false, false, this );
|
||||||
|
connect( loader, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( handleOpenTracks( QList< Tomahawk::query_ptr > ) ) );
|
||||||
|
loader->load( QUrl( xspfUrl ) );
|
||||||
|
loader->setAutoDelete( true );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if ( !jspfUrl.isEmpty() )
|
||||||
|
{
|
||||||
|
JSPFLoader* loader = new JSPFLoader( false, this );
|
||||||
|
connect( loader, SIGNAL( tracks( QList<Tomahawk::query_ptr> ) ), this, SLOT( handleOpenTracks( QList< Tomahawk::query_ptr > ) ) );
|
||||||
|
loader->load( QUrl( jspfUrl ) );
|
||||||
|
loader->setAutoDelete( true );
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1225,7 +1279,8 @@ GlobalActionManager::waitingForResolved( bool /* success */ )
|
|||||||
ViewManager::instance()->queue()->model()->append( m_waitingToPlay );
|
ViewManager::instance()->queue()->model()->append( m_waitingToPlay );
|
||||||
AudioEngine::instance()->play();
|
AudioEngine::instance()->play();
|
||||||
}
|
}
|
||||||
} else
|
}
|
||||||
|
else
|
||||||
AudioEngine::instance()->play();
|
AudioEngine::instance()->play();
|
||||||
|
|
||||||
m_waitingToPlay.clear();
|
m_waitingToPlay.clear();
|
||||||
|
@@ -67,6 +67,8 @@ public slots:
|
|||||||
Tomahawk::dynplaylist_ptr loadDynamicPlaylist( const QUrl& url, bool station );
|
Tomahawk::dynplaylist_ptr loadDynamicPlaylist( const QUrl& url, bool station );
|
||||||
|
|
||||||
void handleOpenTrack( const Tomahawk::query_ptr& qry );
|
void handleOpenTrack( const Tomahawk::query_ptr& qry );
|
||||||
|
void handleOpenTracks( const QList< Tomahawk::query_ptr >& queries );
|
||||||
|
|
||||||
void handlePlayTrack( const Tomahawk::query_ptr& qry );
|
void handlePlayTrack( const Tomahawk::query_ptr& qry );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@@ -37,6 +37,7 @@ using namespace Tomahawk;
|
|||||||
JSPFLoader::JSPFLoader( bool autoCreate, QObject *parent )
|
JSPFLoader::JSPFLoader( bool autoCreate, QObject *parent )
|
||||||
: QObject( parent )
|
: QObject( parent )
|
||||||
, m_autoCreate( autoCreate )
|
, m_autoCreate( autoCreate )
|
||||||
|
, m_autoDelete( true )
|
||||||
{}
|
{}
|
||||||
|
|
||||||
JSPFLoader::~JSPFLoader()
|
JSPFLoader::~JSPFLoader()
|
||||||
@@ -87,6 +88,8 @@ void
|
|||||||
JSPFLoader::reportError()
|
JSPFLoader::reportError()
|
||||||
{
|
{
|
||||||
emit failed();
|
emit failed();
|
||||||
|
|
||||||
|
if ( m_autoDelete )
|
||||||
deleteLater();
|
deleteLater();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -180,7 +183,6 @@ JSPFLoader::gotBody()
|
|||||||
if ( m_autoCreate )
|
if ( m_autoCreate )
|
||||||
{
|
{
|
||||||
QMessageBox::critical( 0, tr( "XSPF Error" ), tr( "This is not a valid XSPF playlist." ) );
|
QMessageBox::critical( 0, tr( "XSPF Error" ), tr( "This is not a valid XSPF playlist." ) );
|
||||||
deleteLater();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -200,8 +202,10 @@ JSPFLoader::gotBody()
|
|||||||
false,
|
false,
|
||||||
m_entries );
|
m_entries );
|
||||||
|
|
||||||
deleteLater();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit ok( m_playlist );
|
emit ok( m_playlist );
|
||||||
|
|
||||||
|
if ( m_autoDelete )
|
||||||
|
deleteLater();
|
||||||
}
|
}
|
||||||
|
@@ -45,6 +45,8 @@ public:
|
|||||||
QList< Tomahawk::query_ptr > entries() const;
|
QList< Tomahawk::query_ptr > entries() const;
|
||||||
void setOverrideTitle( const QString& newTitle ) { m_overrideTitle = newTitle; }
|
void setOverrideTitle( const QString& newTitle ) { m_overrideTitle = newTitle; }
|
||||||
|
|
||||||
|
void setAutoDelete( bool autoDelete ) { m_autoDelete = autoDelete; }
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void failed();
|
void failed();
|
||||||
void ok( const Tomahawk::playlist_ptr& );
|
void ok( const Tomahawk::playlist_ptr& );
|
||||||
@@ -61,7 +63,7 @@ private:
|
|||||||
void reportError();
|
void reportError();
|
||||||
void gotBody();
|
void gotBody();
|
||||||
|
|
||||||
bool m_autoCreate;
|
bool m_autoCreate, m_autoDelete;
|
||||||
QList< Tomahawk::query_ptr > m_entries;
|
QList< Tomahawk::query_ptr > m_entries;
|
||||||
QString m_title, m_info, m_creator, m_overrideTitle;
|
QString m_title, m_info, m_creator, m_overrideTitle;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user