1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-07-31 11:20:22 +02:00

Rework some scriptresolver/pipeline interaction now that we haev accounts

This commit is contained in:
Leo Franchi
2012-02-18 18:14:00 -05:00
parent 8cdce8e1ca
commit 443c554b36
6 changed files with 27 additions and 75 deletions

View File

@@ -409,7 +409,6 @@ AtticaManager::payloadFetched()
m_resolverStates[ resolverId ].scriptPath = resolverPath; m_resolverStates[ resolverId ].scriptPath = resolverPath;
// Do the install / add to tomahawk // Do the install / add to tomahawk
Tomahawk::Pipeline::instance()->addScriptResolver( resolverPath, true );
Tomahawk::Accounts::Account* resolver = Tomahawk::Accounts::ResolverAccountFactory::createFromPath( resolverPath, true ); Tomahawk::Accounts::Account* resolver = Tomahawk::Accounts::ResolverAccountFactory::createFromPath( resolverPath, true );
Tomahawk::Accounts::AccountManager::instance()->addAccount( resolver ); Tomahawk::Accounts::AccountManager::instance()->addAccount( resolver );
@@ -547,7 +546,6 @@ AtticaManager::uninstallResolver( const Content& resolver )
} }
} }
Tomahawk::Pipeline::instance()->removeScriptResolver( pathFromId( resolver.id() ) );
doResolverRemove( resolver.id() ); doResolverRemove( resolver.id() );
} }

View File

@@ -86,20 +86,24 @@ ResolverAccount::ResolverAccount( const QString& accountId, const QString& path
setConfiguration( configuration ); setConfiguration( configuration );
setEnabled( true ); setEnabled( true );
m_resolver = qobject_cast< ExternalResolverGui* >( Pipeline::instance()->addScriptResolver( path, true ) ); m_resolver = QWeakPointer< ExternalResolverGui >( qobject_cast< ExternalResolverGui* >( Pipeline::instance()->addScriptResolver( path, true ) ) );
connect( m_resolver, SIGNAL( changed() ), this, SLOT( resolverChanged() ) ); connect( m_resolver.data(), SIGNAL( changed() ), this, SLOT( resolverChanged() ) );
// What resolver do we have here? Should only be types that are 'real' resolvers // What resolver do we have here? Should only be types that are 'real' resolvers
Q_ASSERT ( m_resolver ); Q_ASSERT ( m_resolver.data() );
setAccountFriendlyName( m_resolver->name() ); setAccountFriendlyName( m_resolver.data()->name() );
setTypes( AccountType( ResolverType ) ); setTypes( AccountType( ResolverType ) );
} }
ResolverAccount::~ResolverAccount() ResolverAccount::~ResolverAccount()
{ {
delete m_resolver; if ( m_resolver.isNull() )
return;
Pipeline::instance()->removeScriptResolver( m_resolver.data()->filePath() );
delete m_resolver.data();
} }
@@ -107,11 +111,11 @@ ResolverAccount::~ResolverAccount()
void void
ResolverAccount::authenticate() ResolverAccount::authenticate()
{ {
Q_ASSERT( !m_resolver.isNull() );
qDebug() << Q_FUNC_INFO << "Authenticating/starting resolver, exists?" << m_resolver; qDebug() << Q_FUNC_INFO << "Authenticating/starting resolver, exists?" << m_resolver;
Q_ASSERT( m_resolver );
if ( !m_resolver->running() ) if ( !m_resolver.data()->running() )
m_resolver->start(); m_resolver.data()->start();
emit connectionStateChanged( connectionState() ); emit connectionStateChanged( connectionState() );
} }
@@ -120,15 +124,15 @@ ResolverAccount::authenticate()
bool bool
ResolverAccount::isAuthenticated() const ResolverAccount::isAuthenticated() const
{ {
return m_resolver->running(); return m_resolver.data()->running();
} }
void void
ResolverAccount::deauthenticate() ResolverAccount::deauthenticate()
{ {
if ( m_resolver->running() ) if ( m_resolver.data()->running() )
m_resolver->stop(); m_resolver.data()->stop();
emit connectionStateChanged( connectionState() ); emit connectionStateChanged( connectionState() );
@@ -138,7 +142,7 @@ ResolverAccount::deauthenticate()
Account::ConnectionState Account::ConnectionState
ResolverAccount::connectionState() const ResolverAccount::connectionState() const
{ {
if ( m_resolver->running() ) if ( m_resolver.data()->running() )
return Connected; return Connected;
else else
return Disconnected; return Disconnected;
@@ -148,7 +152,7 @@ ResolverAccount::connectionState() const
QWidget* QWidget*
ResolverAccount::configurationWidget() ResolverAccount::configurationWidget()
{ {
return m_resolver->configUI(); return m_resolver.data()->configUI();
} }
@@ -172,21 +176,21 @@ ResolverAccount::removeFromConfig()
void ResolverAccount::saveConfig() void ResolverAccount::saveConfig()
{ {
Account::saveConfig(); Account::saveConfig();
m_resolver->saveConfig(); m_resolver.data()->saveConfig();
} }
QString QString
ResolverAccount::path() const ResolverAccount::path() const
{ {
return m_resolver->filePath(); return m_resolver.data()->filePath();
} }
void void
ResolverAccount::resolverChanged() ResolverAccount::resolverChanged()
{ {
setAccountFriendlyName( m_resolver->name() ); setAccountFriendlyName( m_resolver.data()->name() );
emit connectionStateChanged( connectionState() ); emit connectionStateChanged( connectionState() );
} }
@@ -220,7 +224,7 @@ AtticaResolverAccount::~AtticaResolverAccount()
void void
AtticaResolverAccount::loadIcon() AtticaResolverAccount::loadIcon()
{ {
const QFileInfo fi( m_resolver->filePath() ); const QFileInfo fi( m_resolver.data()->filePath() );
QDir codeDir = fi.absoluteDir(); QDir codeDir = fi.absoluteDir();
codeDir.cd( "../images" ); codeDir.cd( "../images" );

View File

@@ -85,7 +85,7 @@ private slots:
protected: protected:
// Created by factory, when user installs a new resolver // Created by factory, when user installs a new resolver
ResolverAccount( const QString& accountId, const QString& path ); ResolverAccount( const QString& accountId, const QString& path );
ExternalResolverGui* m_resolver; QWeakPointer<ExternalResolverGui> m_resolver;
friend class ResolverAccountFactory; friend class ResolverAccountFactory;
}; };

View File

@@ -156,8 +156,8 @@ TomahawkSettings::doUpgrade( int oldVersion, int newVersion )
QStringList toremove; QStringList toremove;
QStringList resolvers = resolverDir.entryList( QDir::Dirs | QDir::NoDotAndDotDot ); QStringList resolvers = resolverDir.entryList( QDir::Dirs | QDir::NoDotAndDotDot );
QStringList listedResolvers = allScriptResolvers(); QStringList listedResolvers = value( "script/resolvers" ).toStringList();
QStringList enabledResolvers = enabledScriptResolvers(); QStringList enabledResolvers = value( "script/loadedresolvers" ).toStringList();
foreach ( const QString& resolver, resolvers ) foreach ( const QString& resolver, resolvers )
{ {
foreach ( const QString& r, listedResolvers ) foreach ( const QString& r, listedResolvers )
@@ -177,8 +177,8 @@ TomahawkSettings::doUpgrade( int oldVersion, int newVersion )
} }
} }
} }
setAllScriptResolvers( listedResolvers ); setValue( "script/resolvers", listedResolvers );
setEnabledScriptResolvers( enabledResolvers ); setValue( "script/loadedresolvers", enabledResolvers );
tDebug() << "UPGRADING AND DELETING:" << resolverDir.absolutePath(); tDebug() << "UPGRADING AND DELETING:" << resolverDir.absolutePath();
TomahawkUtils::removeDirectory( resolverDir.absolutePath() ); TomahawkUtils::removeDirectory( resolverDir.absolutePath() );
} }
@@ -1004,41 +1004,6 @@ TomahawkSettings::setXmppBotPort( const int port )
} }
void
TomahawkSettings::addScriptResolver(const QString& resolver)
{
setValue( "script/resolvers", allScriptResolvers() << resolver );
}
QStringList
TomahawkSettings::allScriptResolvers() const
{
return value( "script/resolvers" ).toStringList();
}
void
TomahawkSettings::setAllScriptResolvers( const QStringList& resolver )
{
setValue( "script/resolvers", resolver );
}
QStringList
TomahawkSettings::enabledScriptResolvers() const
{
return value( "script/loadedresolvers" ).toStringList();
}
void
TomahawkSettings::setEnabledScriptResolvers( const QStringList& resolvers )
{
setValue( "script/loadedresolvers", resolvers );
}
QString QString
TomahawkSettings::scriptDefaultPath() const TomahawkSettings::scriptDefaultPath() const
{ {

View File

@@ -191,14 +191,6 @@ public:
int xmppBotPort() const; int xmppBotPort() const;
void setXmppBotPort( const int port ); void setXmppBotPort( const int port );
/// Script resolver settings
QStringList allScriptResolvers() const;
void setAllScriptResolvers( const QStringList& resolvers );
void addScriptResolver( const QString& resolver );
QStringList enabledScriptResolvers() const;
void setEnabledScriptResolvers( const QStringList& resolvers );
QString scriptDefaultPath() const; QString scriptDefaultPath() const;
void setScriptDefaultPath( const QString& path ); void setScriptDefaultPath( const QString& path );
QString playlistDefaultPath() const; QString playlistDefaultPath() const;

View File

@@ -423,7 +423,7 @@ TomahawkApp::registerMetaTypes()
qRegisterMetaType< Tomahawk::InfoSystem::InfoRequestData >( "Tomahawk::InfoSystem::InfoRequestData" ); qRegisterMetaType< Tomahawk::InfoSystem::InfoRequestData >( "Tomahawk::InfoSystem::InfoRequestData" );
qRegisterMetaType< Tomahawk::InfoSystem::InfoSystemCache* >( "Tomahawk::InfoSystem::InfoSystemCache*" ); qRegisterMetaType< Tomahawk::InfoSystem::InfoSystemCache* >( "Tomahawk::InfoSystem::InfoSystemCache*" );
qRegisterMetaType< QList< Tomahawk::InfoSystem::InfoStringHash > >("QList< Tomahawk::InfoSystem::InfoStringHash > "); qRegisterMetaType< QList< Tomahawk::InfoSystem::InfoStringHash > >("QList< Tomahawk::InfoSystem::InfoStringHash > ");
qRegisterMetaTypeStreamOperators< QList< Tomahawk::InfoSystem::InfoStringHash > >("QList< Tomahawk::InfoSystem::InfoStringHash > "); qRegisterMetaTypeStreamOperators< QList< Tomahawk::InfoSystem::InfoStringHash > >("QList< Tomahawk::InfoSystem::InfoStringHash > ");
qRegisterMetaType< QPersistentModelIndex >( "QPersistentModelIndex" ); qRegisterMetaType< QPersistentModelIndex >( "QPersistentModelIndex" );
@@ -471,13 +471,6 @@ TomahawkApp::initPipeline()
{ {
// setup resolvers for local content, and (cached) remote collection content // setup resolvers for local content, and (cached) remote collection content
Pipeline::instance()->addResolver( new DatabaseResolver( 100 ) ); Pipeline::instance()->addResolver( new DatabaseResolver( 100 ) );
// load script resolvers
QStringList enabled = TomahawkSettings::instance()->enabledScriptResolvers();
foreach ( QString resolver, TomahawkSettings::instance()->allScriptResolvers() )
{
const bool enable = enabled.contains( resolver );
Pipeline::instance()->addScriptResolver( resolver, enable );
}
} }