1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-08 07:07:05 +02:00

Massive code cleanup, and hopefully functional fixes too!

This commit is contained in:
Jeff Mitchell
2011-02-12 22:53:50 -05:00
parent feaf5caa22
commit f62d2dacab
2 changed files with 81 additions and 79 deletions

View File

@@ -23,6 +23,7 @@ TwitterPlugin::TwitterPlugin()
, m_cachedMentionsSinceId( 0 )
, m_cachedDirectMessagesSinceId( 0 )
, m_cachedPeers()
, m_keyCache()
, m_finishedFriends( false )
, m_finishedMentions( false )
{
@@ -64,7 +65,7 @@ TwitterPlugin::connectPlugin( bool /*startup*/ )
foreach( QString screenName, peerlist )
{
QHash< QString, QVariant > cachedPeer = m_cachedPeers[screenName].toHash();
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&cachedPeer ), Q_ARG( bool, false ) );
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&cachedPeer ) );
}
if ( settings->twitterOAuthToken().isEmpty() || settings->twitterOAuthTokenSecret().isEmpty() )
@@ -160,7 +161,6 @@ TwitterPlugin::connectTimerFired()
if ( !isValid() || m_cachedPeers.isEmpty() )
return;
bool peersChanged = false;
QString myScreenName = TomahawkSettings::instance()->twitterScreenName();
QList<QString> peerlist = m_cachedPeers.keys();
qStableSort( peerlist.begin(), peerlist.end() );
@@ -171,24 +171,8 @@ TwitterPlugin::connectTimerFired()
if ( !peerData.contains( "host" ) || !peerData.contains( "port" ) || !peerData.contains( "pkey" ) )
continue;
if ( !peerData.contains( "ohst" ) || !peerData.contains( "oprt" ) ||
peerData["ohst"].toString() != Servent::instance()->externalAddress() ||
peerData["oprt"].toInt() != Servent::instance()->externalPort()
)
{
peerData["ohst"] = QVariant::fromValue< QString >( Servent::instance()->externalAddress() );
peerData["oprt"] = QVariant::fromValue< int >( Servent::instance()->externalPort() );
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ), Q_ARG( bool, true ) );
m_cachedPeers[screenName] = QVariant::fromValue< QHash< QString, QVariant > >( peerData );
peersChanged = true;
}
else
QMetaObject::invokeMethod( this, "makeConnection", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) );
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) );
}
if ( peersChanged )
TomahawkSettings::instance()->setTwitterCachedPeers( m_cachedPeers );
}
void
@@ -196,7 +180,6 @@ TwitterPlugin::friendsTimelineStatuses( const QList< QTweetStatus > &statuses )
{
qDebug() << Q_FUNC_INFO;
QRegExp regex( QString( "^(@[a-zA-Z0-9]+ )?Got Tomahawk\\?(.*)$" ) );
bool peersChanged = false;
QString myScreenName = TomahawkSettings::instance()->twitterScreenName();
foreach( QTweetStatus status, statuses )
{
@@ -210,21 +193,12 @@ TwitterPlugin::friendsTimelineStatuses( const QList< QTweetStatus > &statuses )
if ( !m_cachedPeers.contains( status.user().screenName() ) )
{
QHash< QString, QVariant > peerData;
QString okey = QUuid::createUuid().toString().split( '-' ).last();
okey.chop( 1 );
peerData["okey"] = QVariant::fromValue< QString >( okey );
peerData["ohst"] = QVariant::fromValue< QString >( Servent::instance()->externalAddress() );
peerData["oprt"] = QVariant::fromValue< int >( Servent::instance()->externalPort() );
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, status.user().screenName() ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ), Q_ARG( bool, true ) );
m_cachedPeers[status.user().screenName()] = QVariant::fromValue< QHash< QString, QVariant > >( peerData );
peersChanged = true;
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, status.user().screenName() ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) );
}
}
}
TomahawkSettings::instance()->setTwitterCachedFriendsSinceId( m_cachedFriendsSinceId );
if ( peersChanged )
TomahawkSettings::instance()->setTwitterCachedPeers( m_cachedPeers );
m_finishedFriends = true;
QMetaObject::invokeMethod( this, "pollDirectMessages", Qt::AutoConnection );
@@ -235,7 +209,6 @@ TwitterPlugin::mentionsStatuses( const QList< QTweetStatus > &statuses )
{
qDebug() << Q_FUNC_INFO;
QRegExp regex( QString( "^(@[a-zA-Z0-9]+ )?Got Tomahawk\\?(.*)$" ) );
bool peersChanged = false;
QString myScreenName = TomahawkSettings::instance()->twitterScreenName();
foreach( QTweetStatus status, statuses )
{
@@ -249,21 +222,12 @@ TwitterPlugin::mentionsStatuses( const QList< QTweetStatus > &statuses )
if ( !m_cachedPeers.contains( status.user().screenName() ) )
{
QHash< QString, QVariant > peerData;
QString okey = QUuid::createUuid().toString().split( '-' ).last();
okey.chop( 1 );
peerData["okey"] = QVariant::fromValue< QString >( okey );
peerData["ohst"] = QVariant::fromValue< QString >( Servent::instance()->externalAddress() );
peerData["oprt"] = QVariant::fromValue< int >( Servent::instance()->externalPort() );
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, status.user().screenName() ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ), Q_ARG( bool, true ) );
m_cachedPeers[status.user().screenName()] = QVariant::fromValue< QHash< QString, QVariant > >( peerData );
peersChanged = true;
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, status.user().screenName() ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) );
}
}
}
TomahawkSettings::instance()->setTwitterCachedMentionsSinceId( m_cachedMentionsSinceId );
if ( peersChanged )
TomahawkSettings::instance()->setTwitterCachedPeers( m_cachedPeers );
m_finishedMentions = true;
QMetaObject::invokeMethod( this, "pollDirectMessages", Qt::AutoConnection );
@@ -317,24 +281,91 @@ TwitterPlugin::directMessages( const QList< QTweetDMStatus > &messages )
QString pkey = splitList[3].mid( 5 );
qDebug() << "TwitterPlugin found a peerstart message from " << status.senderScreenName() << " with host " << host << " and port " << port << " and pkey " << pkey;
QHash< QString, QVariant > peerData;
if ( m_cachedPeers.contains( status.senderScreenName() ) )
peerData = m_cachedPeers[status.senderScreenName()].toHash();
QHash< QString, QVariant > peerData = ( m_cachedPeers.contains( status.senderScreenName() ) ) ?
m_cachedPeers[status.senderScreenName()].toHash() :
QHash< QString, QVariant >();
peerData["host"] = QVariant::fromValue< QString >( host );
peerData["port"] = QVariant::fromValue< int >( port );
peerData["pkey"] = QVariant::fromValue< QString >( pkey );
m_cachedPeers[status.senderScreenName()] = QVariant::fromValue< QHash< QString, QVariant > >( peerData );
peersChanged = true;
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, status.senderScreenName() ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ), Q_ARG( bool, true ) );
QMetaObject::invokeMethod( this, "registerOffer", Q_ARG( QString, status.senderScreenName() ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) );
if ( !m_directMessageDestroy.isNull() )
m_directMessageDestroy.data()->destroyMessage( status.id() );
}
TomahawkSettings::instance()->setTwitterCachedDirectMessagesSinceId( m_cachedDirectMessagesSinceId );
if ( peersChanged )
TomahawkSettings::instance()->setTwitterCachedPeers( m_cachedPeers );
TomahawkSettings::instance()->setTwitterCachedDirectMessagesSinceId( m_cachedDirectMessagesSinceId );
}
void
TwitterPlugin::registerOffer( const QString &screenName, const QHash< QString, QVariant > &peerData )
{
qDebug() << Q_FUNC_INFO;
QString node = QString( '@' + screenName );
bool peersChanged = false;
QHash< QString, QVariant > _peerData = peerData;
bool needToSend = false;
bool needToAddToCache = false;
if ( !_peerData.contains( "okey" ) )
{
QString okey = QUuid::createUuid().toString().split( '-' ).last();
okey.chop( 1 );
_peerData["okey"] = QVariant::fromValue< QString >( okey );
peersChanged = true;
needToAddToCache = true;
needToSend = true;
}
if ( !m_keyCache.contains( _peerData["okey"].toString() ) )
needToAddToCache = true;
if ( !_peerData.contains( "ohst" ) || !_peerData.contains( "oprt" ) ||
_peerData["ohst"].toString() != Servent::instance()->externalAddress() ||
_peerData["oprt"].toInt() != Servent::instance()->externalPort()
)
needToSend = true;
if( needToAddToCache )
{
qDebug() << "TwitterPlugin registering offer to " << node << " with node " << node << " and offeredkey " << _peerData["okey"].toString();
m_keyCache << Servent::instance()->createConnectionKey( node, node, _peerData["okey"].toString() );
}
if( needToSend )
{
_peerData["ohst"] = QVariant::fromValue< QString >( Servent::instance()->externalAddress() );
_peerData["oprt"] = QVariant::fromValue< int >( Servent::instance()->externalPort() );
m_cachedPeers[screenName] = QVariant::fromValue< QHash< QString, QVariant > >( _peerData );
peersChanged = true;
QMetaObject::invokeMethod( this, "sendOffer", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&_peerData ) );
}
if ( _peerData.contains( "host" ) && _peerData.contains( "port" ) && _peerData.contains( "pkey" ) )
QMetaObject::invokeMethod( this, "makeConnection", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&_peerData ) );
if ( peersChanged )
TomahawkSettings::instance()->setTwitterCachedPeers( m_cachedPeers );
}
void
TwitterPlugin::sendOffer( const QString &screenName, const QHash< QString, QVariant > &peerData )
{
qDebug() << Q_FUNC_INFO;
QString offerString = QString( "TOMAHAWKPEER:Host=%1:Port=%2:PKey=%3" ).arg( peerData["ohst"].toString() )
.arg( peerData["oprt"].toString() )
.arg( peerData["okey"].toString() );
qDebug() << "TwitterPlugin sending message to " << screenName << ": " << offerString;
if( !m_directMessageNew.isNull() )
m_directMessageNew.data()->post( screenName, offerString );
}
void
@@ -355,37 +386,6 @@ TwitterPlugin::makeConnection( const QString &screenName, const QHash< QString,
node );
}
void
TwitterPlugin::registerOffer( const QString &screenName, const QHash< QString, QVariant > &peerData, bool sendOffer )
{
qDebug() << Q_FUNC_INFO;
QString node = QString( '@' + screenName );
if ( !peerData.contains( "okey" ) )
{
if ( !peerData.contains( "okey" ) )
qDebug() << "TwitterPlugin could not find okey to register offer for peer " << screenName;
return;
}
qDebug() << "TwitterPlugin registering offer to " << node << " with node " << node << " and offeredkey " << peerData["okey"].toString();
Servent::instance()->createConnectionKey( node, node, peerData["okey"].toString() );
if ( sendOffer )
QMetaObject::invokeMethod( this, "sendOffer", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) );
if ( peerData.contains( "host" ) && peerData.contains( "port" ) && peerData.contains( "pkey" ) )
QMetaObject::invokeMethod( this, "makeConnection", Q_ARG( QString, screenName ), QGenericArgument( "QHash< QString, QVariant >", (const void*)&peerData ) );
}
void
TwitterPlugin::sendOffer( const QString &screenName, const QHash< QString, QVariant > &peerData )
{
qDebug() << Q_FUNC_INFO;
QString offerString = QString( "TOMAHAWKPEER:Host=%1:Port=%2:PKey=%3" ).arg( peerData["ohst"].toString() )
.arg( peerData["oprt"].toString() )
.arg( peerData["okey"].toString() );
qDebug() << "TwitterPlugin sending message to " << screenName << ": " << offerString;
if( !m_directMessageNew.isNull() )
m_directMessageNew.data()->post( screenName, offerString );
}
void
TwitterPlugin::directMessagePosted( const QTweetDMStatus& message )
{

View File

@@ -3,6 +3,7 @@
#include <QTimer>
#include <QWeakPointer>
#include <QSet>
#include <qtweetuser.h>
#include <qtweetnetbase.h>
@@ -60,7 +61,7 @@ private slots:
void directMessagePosted( const QTweetDMStatus &message );
void directMessagePostError( QTweetNetBase::ErrorCode errorCode, const QString &message );
void directMessageDestroyed( const QTweetDMStatus &message );
void registerOffer( const QString &screenName, const QHash< QString, QVariant > &peerdata, bool sendOffer );
void registerOffer( const QString &screenName, const QHash< QString, QVariant > &peerdata );
void sendOffer( const QString &screenName, const QHash< QString, QVariant > &peerdata );
void makeConnection( const QString &screenName, const QHash< QString, QVariant > &peerdata );
@@ -78,6 +79,7 @@ private:
qint64 m_cachedMentionsSinceId;
qint64 m_cachedDirectMessagesSinceId;
QHash< QString, QVariant > m_cachedPeers;
QSet<QString> m_keyCache;
bool m_finishedFriends;
bool m_finishedMentions;
};