From 837505b1b11cf1f261c471f4d2ab5e2b6c4d6f0e Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 25 Mar 2015 00:17:20 +0100 Subject: [PATCH] Prepare querying the script collection for a download url --- src/libtomahawk/DownloadJob.cpp | 29 +++++++++++++++++++++++++++-- src/libtomahawk/DownloadJob.h | 5 ++++- src/libtomahawk/Result.cpp | 8 +++++++- 3 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/libtomahawk/DownloadJob.cpp b/src/libtomahawk/DownloadJob.cpp index 854d38519..57d82acbe 100644 --- a/src/libtomahawk/DownloadJob.cpp +++ b/src/libtomahawk/DownloadJob.cpp @@ -19,12 +19,17 @@ #include "DownloadJob.h" #include "Track.h" +#include "Result.h" +#include "resolvers/ScriptResolver.h" +#include "resolvers/ScriptCollection.h" +#include "resolvers/ScriptObject.h" +#include "resolvers/ScriptJob.h" #include "TomahawkSettings.h" #include "utils/NetworkAccessManager.h" #include "utils/Logger.h" -DownloadJob::DownloadJob( const Tomahawk::track_ptr& track, DownloadFormat format, bool tryResuming, DownloadJob::TrackState state ) +DownloadJob::DownloadJob( const Tomahawk::result_ptr& result, DownloadFormat format, bool tryResuming, DownloadJob::TrackState state ) : m_state( state ) , m_retries( 0 ) , m_tryResuming( tryResuming ) @@ -35,9 +40,29 @@ DownloadJob::DownloadJob( const Tomahawk::track_ptr& track, DownloadFormat forma , m_rcvdSize( 0 ) , m_fileSize( 0 ) , m_format( format ) - , m_track( track ) + , m_track( result->track() ) { m_finished = ( state == Finished ); + + if (result->resolvedByCollection()) + { + Tomahawk::ScriptCollection* collection = qobject_cast( result->resolvedByCollection().data() ); + if(collection) + { + QVariantMap arguments; + arguments[ "url" ] = format.url; + + // HACK: *shrug* WIP. + Tomahawk::ScriptJob* job = collection->scriptObject()->invoke("getStreamUrlPromise", arguments); + connect( job, SIGNAL( done(QVariantMap) ), SLOT( onUrlRetrieved(QVariantMap) ) ); + job->start(); + } + } +} + +void DownloadJob::onUrlRetrieved(const QVariantMap& data) +{ + tLog() << Q_FUNC_INFO << data; } diff --git a/src/libtomahawk/DownloadJob.h b/src/libtomahawk/DownloadJob.h index 32f76e92c..eadc556d6 100644 --- a/src/libtomahawk/DownloadJob.h +++ b/src/libtomahawk/DownloadJob.h @@ -45,7 +45,7 @@ public: enum TrackState { Waiting = 0, Running, Paused, Failed, Finished, Aborted, Any }; - DownloadJob( const Tomahawk::track_ptr& track, DownloadFormat format, bool tryResuming = false, DownloadJob::TrackState state = Waiting ); + DownloadJob( const Tomahawk::result_ptr& result, DownloadFormat format, bool tryResuming = false, DownloadJob::TrackState state = Waiting ); ~DownloadJob(); QString toString() const; @@ -85,6 +85,9 @@ private slots: void onDownloadProgress( qint64, qint64 ); void onDownloadFinished(); + + void onUrlRetrieved( const QVariantMap& data ); + private: void storeState(); QString safeEncode( const QString& filename, bool removeTrailingDots = false ) const; diff --git a/src/libtomahawk/Result.cpp b/src/libtomahawk/Result.cpp index c9816ce1b..31a0c6609 100644 --- a/src/libtomahawk/Result.cpp +++ b/src/libtomahawk/Result.cpp @@ -511,6 +511,12 @@ Result::setResolvedByResolver( Tomahawk::Resolver* resolver ) } +QPointer< Resolver > Result::resolvedByResolver() const +{ + return m_resolver; +} + + void Result::doneEditing() { @@ -531,7 +537,7 @@ Result::toDownloadJob( const DownloadFormat& format ) { if ( !m_downloadJob ) { - m_downloadJob = downloadjob_ptr( new DownloadJob( track(), format ) ); + m_downloadJob = downloadjob_ptr( new DownloadJob( weakRef().toStrongRef(), format ) ); connect( m_downloadJob.data(), SIGNAL( progress( int ) ), SIGNAL( updated() ) ); }