diff --git a/src/libtomahawk/AtticaManager.cpp b/src/libtomahawk/AtticaManager.cpp index c6f2d95f4..450676e27 100644 --- a/src/libtomahawk/AtticaManager.cpp +++ b/src/libtomahawk/AtticaManager.cpp @@ -35,6 +35,7 @@ #include "accounts/ResolverAccount.h" #include "accounts/AccountManager.h" #include "utils/BinaryInstallerHelper.h" +#include "utils/Closure.h" using namespace Attica; @@ -48,7 +49,11 @@ AtticaManager::AtticaManager( QObject* parent ) connect( &m_manager, SIGNAL( providerAdded( Attica::Provider ) ), this, SLOT( providerAdded( Attica::Provider ) ) ); // resolvers - m_manager.addProviderFile( QUrl( "http://bakery.tomahawk-player.org/resolvers/providers.xml" ) ); +// m_manager.addProviderFile( QUrl( "http://bakery.tomahawk-player.org/resolvers/providers.xml" ) ); + QNetworkReply* reply = TomahawkUtils::nam()->get( QNetworkRequest( QUrl( "http://bakery.tomahawk-player.org/resolvers/providers.xml" ) ) ); + NewClosure( reply, SIGNAL( finished() ), this, SLOT( providerFetched( QNetworkReply* ) ), reply ); + connect( reply, SIGNAL( error( QNetworkReply::NetworkError ) ), this, SLOT( providerError( QNetworkReply::NetworkError ) ) ); + // m_manager.addProviderFile( QUrl( "http://lycophron/resolvers/providers.xml" ) ); qRegisterMetaType< Attica::Content >( "Attica::Content" ); @@ -243,6 +248,25 @@ AtticaManager::resolverData(const QString &atticaId) const } +void +AtticaManager::providerError( QNetworkReply::NetworkError err ) +{ + // So those who care know + emit resolversLoaded( Content::List() ); +} + + +void +AtticaManager::providerFetched( QNetworkReply* reply ) +{ + Q_ASSERT( reply ); + if ( !reply ) + return; + + m_manager.addProviderFromXml( reply->readAll() ); +} + + void AtticaManager::providerAdded( const Provider& provider ) { diff --git a/src/libtomahawk/AtticaManager.h b/src/libtomahawk/AtticaManager.h index b6b206069..bca1d7440 100644 --- a/src/libtomahawk/AtticaManager.h +++ b/src/libtomahawk/AtticaManager.h @@ -24,6 +24,7 @@ #include #include #include +#include #include "DllMacro.h" #include "accounts/Account.h" @@ -124,7 +125,10 @@ signals: void resolverInstallationFailed( const QString& resolverId ); void startedInstalling( const QString& resolverId ); + private slots: + void providerFetched( QNetworkReply* reply ); + void providerError( QNetworkReply::NetworkError ); void providerAdded( const Attica::Provider& ); void categoriesReturned( Attica::BaseJob* ); void resolversList( Attica::BaseJob* ); @@ -139,7 +143,6 @@ private slots: void syncServerData(); private: - QString extractPayload( const QString& filename, const QString& resolverId ) const; void doResolverRemove( const QString& id ) const; void doInstallResolver( const Attica::Content& resolver, bool autoCreate, Tomahawk::Accounts::AtticaResolverAccount* handler ); @@ -171,5 +174,5 @@ protected: }; Q_DECLARE_METATYPE( Attica::Content ); - +Q_DECLARE_METATYPE( QNetworkReply* ); #endif // ATTICAMANAGER_H