void LastFmAccount::authenticate() { if ( !AtticaManager::instance()->resolversLoaded() ) { // If we're still waiting to load, wait for the attica resolvers to come down the pipe connect( AtticaManager::instance(), SIGNAL(resolversLoaded(Attica::Content::List)), this, SLOT( atticaLoaded( Attica::Content::List ) ), Qt::UniqueConnection ); return; } const Attica::Content res = AtticaManager::instance()->resolverForId( "lastfm" ); const AtticaManager::ResolverState state = AtticaManager::instance()->resolverState( res ); qDebug() << "Last.FM account authenticating..."; if ( m_resolver.isNull() && state == AtticaManager::Installed ) { hookupResolver(); } else if ( m_resolver.isNull() ) { qDebug() << "Got null resolver but asked to authenticate, so installing i we have one from attica:" << res.isValid() << res.id(); if ( res.isValid() && !res.id().isEmpty() ) AtticaManager::instance()->installResolver( res, false ); } else { m_resolver.data()->start(); } emit connectionStateChanged( connectionState() ); }
void LastFmAccount::hookupResolver() { // If there is a last.fm resolver from attica installed, create the corresponding ExternalResolver* and hook up to it const Attica::Content res = AtticaManager::instance()->resolverForId( "lastfm" ); const AtticaManager::ResolverState state = AtticaManager::instance()->resolverState( res ); Q_ASSERT( state == AtticaManager::Installed ); Q_UNUSED( state ); const AtticaManager::Resolver data = AtticaManager::instance()->resolverData( res.id() ); m_resolver = QWeakPointer< ExternalResolverGui >( qobject_cast< ExternalResolverGui* >( Pipeline::instance()->addScriptResolver( data.scriptPath ) ) ); connect( m_resolver.data(), SIGNAL( changed() ), this, SLOT( resolverChanged() ) ); }
void SpotifyAccount::authenticate() { if ( !AtticaManager::instance()->resolversLoaded() ) { // If we're still waiting to load, wait for the attica resolvers to come down the pipe connect( AtticaManager::instance(), SIGNAL( resolversLoaded( Attica::Content::List ) ), this, SLOT( atticaLoaded( Attica::Content::List ) ), Qt::UniqueConnection ); return; } const Attica::Content res = AtticaManager::instance()->resolverForId( s_resolverId ); const AtticaManager::ResolverState state = AtticaManager::instance()->resolverState( res ); qDebug() << "Spotify account authenticating..."; const QString path = configuration().value( "path" ).toString(); const QFileInfo info( path ); const bool manualResolverRemoved = !path.isEmpty() && !info.exists(); if ( m_spotifyResolver.isNull() && state == AtticaManager::Installed ) { // We don;t have the resolver but it has been installed via attica already, so lets just turn it on qDebug() << "No valid spotify resolver running, but attica reports it is installed, so start it up"; hookupResolver(); } else if ( m_spotifyResolver.isNull() || manualResolverRemoved ) { qDebug() << "Got null resolver but asked to authenticate, so installing if we have one from attica:" << res.isValid() << res.id(); if ( res.isValid() && !res.id().isEmpty() ) AtticaManager::instance()->installResolver( res, false ); else { #ifdef Q_OS_LINUX m_preventEnabling = true; #endif } } else if ( !m_spotifyResolver.data()->running() ) { qDebug() << "Spotify resolver exists but stopped, starting"; m_spotifyResolver.data()->start(); } else { qDebug() << "Spotify resolver exists and is running, ignore authentication attempt"; } emit connectionStateChanged( connectionState() ); }
void GameDetailsJob::processFetchedGameDetails( Attica::BaseJob* job ) { qDebug() << "Game list successfully fetched from the server!"; Attica::ItemJob<Attica::Content> *contentJob = static_cast<Attica::ItemJob<Attica::Content> *>( job ); if( contentJob->metadata().error() == Attica::Metadata::NoError ) { Attica::Content content = contentJob->result(); d->gameDetails = new GameDetailItem( content.name(), content.description(), content.version(), content.summary(), content.previewPicture(), content.attribute("typeid"), content.attribute("typename"), content.homePageEntry( 0 ).url().toString(), content.license(), content.changelog(), "", "", QStringList(), content.rating(), GameDetailItem::Downloadable, content.id() ); emitSucceeded(); } else { emitFailed(); } }
void SpotifyAccount::hookupResolver() { // initialize the resolver itself. this is called if the account actually has an installed spotify resolver, // as it might not. // If there is a spotify resolver from attica installed, create the corresponding ExternalResolver* and hook up to it QString path = configuration().value( "path" ).toString(); if ( path.isEmpty() ) { const Attica::Content res = AtticaManager::instance()->resolverForId( s_resolverId ); const AtticaManager::ResolverState state = AtticaManager::instance()->resolverState( res ); Q_ASSERT( state == AtticaManager::Installed ); Q_UNUSED( state ); const AtticaManager::Resolver data = AtticaManager::instance()->resolverData( res.id() ); path = data.scriptPath; } qDebug() << "Starting spotify resolver with path:" << path; if ( !m_spotifyResolver.isNull() ) { delete m_spotifyResolver.data(); } if ( !QFile::exists( path ) ) { qWarning() << "Asked to hook up spotify resolver but it doesn't exist, ignoring"; return; } // HACK // Since the resolver in 0.4.x used an incompatible version of kdsingleappguard, we can't auto-kill old resolvers on the // 0.4.x->0.5.x upgrade. So we do it manually for a while killExistingResolvers(); m_spotifyResolver = QPointer< ScriptResolver >( qobject_cast< ScriptResolver* >( Pipeline::instance()->addScriptResolver( path ) ) ); m_spotifyResolver.data()->setIcon( TomahawkUtils::defaultPixmap( TomahawkUtils::SpotifyIcon ) ); connect( m_spotifyResolver.data(), SIGNAL( changed() ), this, SLOT( resolverChanged() ) ); connect( m_spotifyResolver.data(), SIGNAL( customMessage( QString,QVariantMap ) ), this, SLOT( resolverMessage( QString, QVariantMap ) ) ); // Always get logged in status QVariantMap msg; msg[ "_msgtype" ] = "getCredentials"; m_spotifyResolver.data()->sendMessage( msg ); }
void SpotifyAccount::hookupResolver() { // initialize the resolver itself. this is called if the account actually has an installed spotify resolver, // as it might not. // If there is a spotify resolver from attica installed, create the corresponding ExternalResolver* and hook up to it QString path = configuration().value( "path" ).toString(); if ( path.isEmpty() ) { const Attica::Content res = AtticaManager::instance()->resolverForId( s_resolverId ); const AtticaManager::ResolverState state = AtticaManager::instance()->resolverState( res ); Q_ASSERT( state == AtticaManager::Installed ); Q_UNUSED( state ); const AtticaManager::Resolver data = AtticaManager::instance()->resolverData( res.id() ); path = data.scriptPath; } qDebug() << "Starting spotify resolver with path:" << path; m_spotifyResolver = QWeakPointer< ScriptResolver >( qobject_cast< ScriptResolver* >( Pipeline::instance()->addScriptResolver( path ) ) ); connect( m_spotifyResolver.data(), SIGNAL( changed() ), this, SLOT( resolverChanged() ) ); connect( m_spotifyResolver.data(), SIGNAL( customMessage( QString,QVariantMap ) ), this, SLOT( resolverMessage( QString, QVariantMap ) ) ); const bool hasMigrated = configuration().value( "hasMigrated" ).toBool(); if ( !hasMigrated ) { qDebug() << "Getting credentials from spotify resolver to migrate to in-app config"; QVariantMap msg; msg[ "_msgtype" ] = "getCredentials"; m_spotifyResolver.data()->sendMessage( msg ); } }