1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-04 13:17:34 +02:00

Add migration from pre-accounts to accounts, and fix twitter in various places

This commit is contained in:
Leo Franchi
2012-01-07 12:49:37 -05:00
parent 811b6842c5
commit a78ef004f0
12 changed files with 102 additions and 20 deletions

View File

@@ -59,7 +59,7 @@ TwitterSipPlugin::TwitterSipPlugin( Tomahawk::Accounts::Account* account )
connect( account, SIGNAL( nowAuthenticated( const QWeakPointer< TomahawkOAuthTwitter > &, const QTweetUser & ) ), SLOT( accountAuthenticated( const QWeakPointer< TomahawkOAuthTwitter > &, const QTweetUser & ) ) ); connect( account, SIGNAL( nowAuthenticated( const QWeakPointer< TomahawkOAuthTwitter > &, const QTweetUser & ) ), SLOT( accountAuthenticated( const QWeakPointer< TomahawkOAuthTwitter > &, const QTweetUser & ) ) );
if ( Database::instance()->dbid() != m_configuration[ "saveddbid" ].toString() ) if ( Database::instance()->dbid() != m_account->configuration()[ "saveddbid" ].toString() )
{ {
m_configuration[ "cachedpeers" ] = QVariantHash(); m_configuration[ "cachedpeers" ] = QVariantHash();
m_configuration[ "saveddbid" ] = Database::instance()->dbid(); m_configuration[ "saveddbid" ] = Database::instance()->dbid();
@@ -158,7 +158,7 @@ TwitterSipPlugin::accountAuthenticated( const QWeakPointer< TomahawkOAuthTwitter
{ {
Q_UNUSED( user ); Q_UNUSED( user );
if ( !isValid() ) if ( !m_account->enabled() || !m_account->isAuthenticated() )
return; return;
m_cachedTwitterAuth = twitterAuth; m_cachedTwitterAuth = twitterAuth;
@@ -702,3 +702,11 @@ TwitterSipPlugin::configurationChanged()
m_account->deauthenticate(); m_account->deauthenticate();
connectPlugin(); connectPlugin();
} }
void
TwitterSipPlugin::syncConfig()
{
m_account->setConfiguration( m_configuration );
m_account->sync();
}

View File

@@ -97,7 +97,7 @@ private slots:
void profilePicReply(); void profilePicReply();
private: private:
inline void syncConfig() { m_account->setCredentials( m_credentials ); m_account->setConfiguration( m_configuration ); m_account->sync(); } void syncConfig();
bool refreshTwitterAuth(); bool refreshTwitterAuth();
void parseGotTomahawk( const QRegExp &regex, const QString &screenName, const QString &text ); void parseGotTomahawk( const QRegExp &regex, const QString &screenName, const QString &text );
@@ -110,7 +110,6 @@ private:
QWeakPointer< QTweetDirectMessageDestroy > m_directMessageDestroy; QWeakPointer< QTweetDirectMessageDestroy > m_directMessageDestroy;
QVariantHash m_configuration; QVariantHash m_configuration;
QVariantHash m_credentials;
QTimer m_checkTimer; QTimer m_checkTimer;
QTimer m_connectTimer; QTimer m_connectTimer;

View File

@@ -47,12 +47,8 @@ TwitterAccount::TwitterAccount( const QString &accountId )
: Account( accountId ) : Account( accountId )
, m_isAuthenticated( false ) , m_isAuthenticated( false )
{ {
loadFromConfig( accountId );
setAccountServiceName( "Twitter" ); setAccountServiceName( "Twitter" );
QSet< AccountType > types; setTypes( QSet< AccountType >() << InfoType << SipType );
types << InfoType << SipType;
setTypes( types );
m_configWidget = QWeakPointer< TwitterConfigWidget >( new TwitterConfigWidget( this, 0 ) ); m_configWidget = QWeakPointer< TwitterConfigWidget >( new TwitterConfigWidget( this, 0 ) );
connect( m_configWidget.data(), SIGNAL( twitterAuthed( bool ) ), SLOT( configDialogAuthedSignalSlot( bool ) ) ); connect( m_configWidget.data(), SIGNAL( twitterAuthed( bool ) ), SLOT( configDialogAuthedSignalSlot( bool ) ) );
@@ -167,6 +163,10 @@ TwitterAccount::connectAuthVerifyReply( const QTweetUser &user )
config[ "screenname" ] = user.screenName(); config[ "screenname" ] = user.screenName();
setConfiguration( config ); setConfiguration( config );
sync(); sync();
sipPlugin()->connectPlugin();
m_isAuthenticated = true;
emit nowAuthenticated( m_twitterAuth, user ); emit nowAuthenticated( m_twitterAuth, user );
} }
} }

View File

@@ -37,7 +37,7 @@ public:
virtual ~GoogleWrapperFactory() {} virtual ~GoogleWrapperFactory() {}
virtual QString prettyName() const { return "Google"; } virtual QString prettyName() const { return "Google"; }
virtual QString factoryId() const { return "sipgoogle"; } virtual QString factoryId() const { return "googleaccount"; }
virtual QIcon icon() const; virtual QIcon icon() const;
virtual Account* createAccount( const QString& pluginId ); virtual Account* createAccount( const QString& pluginId );
}; };

View File

@@ -40,8 +40,6 @@ XmppAccountFactory::createAccount( const QString& accountId )
XmppAccount::XmppAccount( const QString &accountId ) XmppAccount::XmppAccount( const QString &accountId )
: Account( accountId ) : Account( accountId )
{ {
loadFromConfig( accountId );
setAccountServiceName( "XMPP (Jabber)" ); setAccountServiceName( "XMPP (Jabber)" );
QSet< AccountType > types; QSet< AccountType > types;
types << SipType; types << SipType;

View File

@@ -65,6 +65,8 @@ ZeroconfAccount::ZeroconfAccount( const QString& accountId )
{ {
setAccountServiceName( "Local Network" ); setAccountServiceName( "Local Network" );
setAccountFriendlyName( "Local Network" ); setAccountFriendlyName( "Local Network" );
setTypes( QSet< AccountType >() << SipType );
} }
ZeroconfAccount::~ZeroconfAccount() ZeroconfAccount::~ZeroconfAccount()

View File

@@ -33,6 +33,8 @@ Account::Account( const QString& accountId )
{ {
connect( this, SIGNAL( error( int, QString ) ), this, SLOT( onError( int,QString ) ) ); connect( this, SIGNAL( error( int, QString ) ), this, SLOT( onError( int,QString ) ) );
connect( this, SIGNAL( connectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ) , this, SLOT( onConnectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ) ); connect( this, SIGNAL( connectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ) , this, SLOT( onConnectionStateChanged( Tomahawk::Accounts::Account::ConnectionState ) ) );
loadFromConfig( accountId );
} }
QWidget* QWidget*
@@ -77,8 +79,10 @@ Account::isAuthenticated() const
void void
Account::onError(int errorCode, const QString& error ) Account::onError( int errorCode, const QString& error )
{ {
Q_UNUSED( errorCode );
QMutexLocker locker( &m_mutex ); QMutexLocker locker( &m_mutex );
m_cachedError = error; m_cachedError = error;
} }

View File

@@ -78,7 +78,7 @@ public slots:
virtual void setShuffled( bool enabled ) = 0; virtual void setShuffled( bool enabled ) = 0;
signals: signals:
void repeatModeChanged( PlaylistInterface::RepeatMode mode ); void repeatModeChanged( Tomahawk::PlaylistInterface::RepeatMode mode );
void shuffleModeChanged( bool enabled ); void shuffleModeChanged( bool enabled );
void trackCountChanged( unsigned int tracks ); void trackCountChanged( unsigned int tracks );
void sourceTrackCountChanged( unsigned int tracks ); void sourceTrackCountChanged( unsigned int tracks );

View File

@@ -1,6 +1,7 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === /* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
* *
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> * Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2010-2011 Leo Franchi <lfranchi@kde.org>
* *
* Tomahawk is free software: you can redistribute it and/or modify * Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@@ -29,7 +30,7 @@
#include "database/databasecommand_updatesearchindex.h" #include "database/databasecommand_updatesearchindex.h"
#include "database/database.h" #include "database/database.h"
#define VERSION 5 #define VERSION 6
using namespace Tomahawk; using namespace Tomahawk;
@@ -111,7 +112,7 @@ TomahawkSettings::doUpgrade( int oldVersion, int newVersion )
setValue( QString( "%1_legacy/username" ).arg( sipName ), value( "jabber/username" ) ); setValue( QString( "%1_legacy/username" ).arg( sipName ), value( "jabber/username" ) );
setValue( QString( "%1_legacy/password" ).arg( sipName ), value( "jabber/password" ) ); setValue( QString( "%1_legacy/password" ).arg( sipName ), value( "jabber/password" ) );
setValue( QString( "%1r_legacy/autoconnect" ).arg( sipName ), value( "jabber/autoconnect" ) ); setValue( QString( "%1_legacy/autoconnect" ).arg( sipName ), value( "jabber/autoconnect" ) );
setValue( QString( "%1_legacy/port" ).arg( sipName ), value( "jabber/port" ) ); setValue( QString( "%1_legacy/port" ).arg( sipName ), value( "jabber/port" ) );
setValue( QString( "%1_legacy/server" ).arg( sipName ), value( "jabber/server" ) ); setValue( QString( "%1_legacy/server" ).arg( sipName ), value( "jabber/server" ) );
@@ -187,6 +188,75 @@ TomahawkSettings::doUpgrade( int oldVersion, int newVersion )
{ {
// 0.3.0 contained a bug which prevent indexing local files. Force a reindex. // 0.3.0 contained a bug which prevent indexing local files. Force a reindex.
QTimer::singleShot( 0, this, SLOT( updateIndex() ) ); QTimer::singleShot( 0, this, SLOT( updateIndex() ) );
} else if ( oldVersion == 5 )
{
// Migrate to accounts from sipplugins.
// collect old connected and enabled sip plugins
const QStringList allSip = sipPlugins();
const QStringList enabledSip = enabledSipPlugins();
QStringList accounts;
foreach ( const QString& sipPlugin, allSip )
{
const QStringList parts = sipPlugin.split( "_" );
Q_ASSERT( parts.size() == 2 );
const QString pluginName = parts[ 0 ];
const QString pluginId = parts[ 1 ];
// new key, <plugin>account_<id>
QString rawpluginname = pluginName;
rawpluginname.replace( "sip", "" );
if ( rawpluginname.contains( "jabber" ) )
rawpluginname.replace( "jabber", "xmpp" );
QString accountKey = QString( "%1account_%2" ).arg( rawpluginname ).arg( pluginId );
accounts << accountKey;
beginGroup( "accounts/" + accountKey );
setValue( "enabled", enabledSip.contains( sipPlugin ) == true );
setValue( "autoconnect", true );
setValue( "configuration", QVariantHash() );
setValue( "acl", QVariantMap() );
setValue( "types", QStringList() << "SipType" );
endGroup();
if ( pluginName == "sipjabber" || pluginName == "sipgoogle" )
{
QVariantHash credentials;
credentials[ "username" ] = value( sipPlugin + "/username" );
credentials[ "password" ] = value( sipPlugin + "/password" );
credentials[ "port" ] = value( sipPlugin + "/port" );
credentials[ "server" ] = value( sipPlugin + "/server" );
setValue( QString( "accounts/%1/credentials" ).arg( accountKey ), credentials );
setValue( QString( "accounts/%1/accountfriendlyname" ).arg( accountKey ), value( sipPlugin + "/username" ) );
}
else if ( pluginName == "siptwitter" )
{
QVariantHash credentials;
credentials[ "cachedfriendssinceid" ] = value( sipPlugin + "/cachedfriendssinceid" );
credentials[ "cacheddirectmessagessinceid" ] = value( sipPlugin + "/cacheddirectmessagessinceid" );
credentials[ "cachedpeers" ] = value( sipPlugin + "/cachedpeers" );
credentials[ "oauthtoken" ] = value( sipPlugin + "/oauthtoken" );
credentials[ "oauthtokensecret" ] = value( sipPlugin + "/oauthtokensecret" );
credentials[ "cachedmentionssinceid" ] = value( sipPlugin + "/cachedmentionssinceid" );
credentials[ "username" ] = value( sipPlugin + "/screenname" );
credentials[ "saveddbid" ] = value( sipPlugin + "/saveddbid" );
setValue( QString( "accounts/%1/credentials" ).arg( accountKey ), credentials );
setValue( QString( "accounts/%1/accountfriendlyname" ).arg( accountKey ), "@" + value( sipPlugin + "/screenname" ).toString() );
}
else if ( pluginName == "sipzeroconf" )
{
setValue( QString( "accounts/%1/accountfriendlyname" ).arg( accountKey ), "Local Network" );
}
remove( sipPlugin );
}
setValue( "accounts/allaccounts", accounts );
remove( "sip" );
} }
} }

View File

@@ -1,6 +1,7 @@
/* === This file is part of Tomahawk Player - <http://tomahawk-player.org> === /* === This file is part of Tomahawk Player - <http://tomahawk-player.org> ===
* *
* Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org> * Copyright 2010-2011, Christian Muehlhaeuser <muesli@tomahawk-player.org>
* Copyright 2010-2011 Leo Franchi <lfranchi@kde.org>
* *
* Tomahawk is free software: you can redistribute it and/or modify * Tomahawk is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by