1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-17 19:37:09 +02:00

Add getStreamUrl translation step in AudioEngine

This commit is contained in:
Dominik Schmidt
2015-11-17 03:12:12 +01:00
parent 64f71fe453
commit 30789bcb9b
4 changed files with 36 additions and 3 deletions

View File

@@ -17,8 +17,24 @@
*/ */
#include "ResultProvider.h" #include "ResultProvider.h"
#include "Result.h"
#include "resolvers/SyncScriptJob.h"
using namespace Tomahawk; using namespace Tomahawk;
ResultProvider::~ResultProvider() ResultProvider::~ResultProvider()
{ {
} }
ScriptJob*
ResultProvider::getStreamUrl( const result_ptr& result )
{
QUrl url = result->url();
QVariantMap data;
data[ "result" ] = QVariant::fromValue( result );
data[ "url" ] = url;
return new SyncScriptJob( data );
}

View File

@@ -20,6 +20,7 @@
#define TOMAHAWK_RESULTPROVIDER_H #define TOMAHAWK_RESULTPROVIDER_H
#include "DllMacro.h" #include "DllMacro.h"
#include "Typedefs.h"
class QPixmap; class QPixmap;
class QString; class QString;
@@ -27,6 +28,7 @@ class QSize;
namespace Tomahawk namespace Tomahawk
{ {
class ScriptJob;
class DLLEXPORT ResultProvider class DLLEXPORT ResultProvider
{ {
@@ -35,6 +37,8 @@ public:
virtual QString name() const = 0; virtual QString name() const = 0;
virtual QPixmap icon( const QSize& size ) const = 0; virtual QPixmap icon( const QSize& size ) const = 0;
virtual ScriptJob* getStreamUrl( const result_ptr& result );
}; };
} }

View File

@@ -40,6 +40,7 @@
#include "SourceList.h" #include "SourceList.h"
#include "TomahawkSettings.h" #include "TomahawkSettings.h"
#include "UrlHandler.h" #include "UrlHandler.h"
#include "resolvers/ScriptJob.h"
#include <QDir> #include <QDir>
@@ -574,10 +575,21 @@ AudioEngine::loadTrack( const Tomahawk::result_ptr& result )
setCurrentTrack( result ); setCurrentTrack( result );
if ( !TomahawkUtils::isLocalResult( d->currentTrack->url() ) && !TomahawkUtils::isHttpResult( d->currentTrack->url() ) ScriptJob* job = result->resolvedBy()->getStreamUrl( result );
&& !TomahawkUtils::isRtmpResult( d->currentTrack->url() ) ) connect( job, SIGNAL( done( QVariantMap ) ), SLOT( gotStreamUrl( QVariantMap ) ) );
job->start();
}
void
AudioEngine::gotStreamUrl( const QVariantMap& data )
{
QString url = data[ "url" ].toString();
result_ptr result = data[ "result" ].value<result_ptr>();
if ( !TomahawkUtils::isLocalResult( url ) && !TomahawkUtils::isHttpResult( url )
&& !TomahawkUtils::isRtmpResult( url ) )
{ {
performLoadIODevice( d->currentTrack, d->currentTrack->url() ); performLoadIODevice( result, url );
} }
else else
{ {

View File

@@ -180,6 +180,7 @@ signals:
private slots: private slots:
void loadTrack( const Tomahawk::result_ptr& result ); //async! void loadTrack( const Tomahawk::result_ptr& result ); //async!
void gotStreamUrl( const QVariantMap& data );
void performLoadIODevice( const Tomahawk::result_ptr& result, const QString& url ); //only call from loadTrack kthxbi void performLoadIODevice( const Tomahawk::result_ptr& result, const QString& url ); //only call from loadTrack kthxbi
void performLoadTrack( const Tomahawk::result_ptr result, const QString url, QSharedPointer< QIODevice > io ); //only call from loadTrack or performLoadIODevice kthxbi void performLoadTrack( const Tomahawk::result_ptr result, const QString url, QSharedPointer< QIODevice > io ); //only call from loadTrack or performLoadIODevice kthxbi
void loadPreviousTrack(); void loadPreviousTrack();