diff --git a/src/libtomahawk/tomahawksettings.cpp b/src/libtomahawk/tomahawksettings.cpp index 8f2f86941..bd0363e6d 100644 --- a/src/libtomahawk/tomahawksettings.cpp +++ b/src/libtomahawk/tomahawksettings.cpp @@ -426,6 +426,20 @@ TomahawkSettings::setLastFmUsername( const QString& username ) setValue( "lastfm/username", username ); } +QString +TomahawkSettings::twitterScreenName() const +{ + QMutexLocker locker( m_safety ); + return value( "twitter/ScreenName" ).toString(); +} + +void +TomahawkSettings::setTwitterScreenName( const QString& screenName ) +{ + QMutexLocker locker( m_safety ); + setValue( "twitter/ScreenName", screenName ); +} + QString TomahawkSettings::twitterOAuthToken() const { diff --git a/src/libtomahawk/tomahawksettings.h b/src/libtomahawk/tomahawksettings.h index f08b3be0c..249495026 100644 --- a/src/libtomahawk/tomahawksettings.h +++ b/src/libtomahawk/tomahawksettings.h @@ -97,6 +97,9 @@ public: void setLastFmSessionKey( const QByteArray& key ); /// Twitter settings + QString twitterScreenName() const; + void setTwitterScreenName( const QString& screenName ); + QString twitterOAuthToken() const; void setTwitterOAuthToken( const QString& oauthtoken ); diff --git a/src/settingsdialog.cpp b/src/settingsdialog.cpp index 8b7ebc466..b6b90aa2e 100644 --- a/src/settingsdialog.cpp +++ b/src/settingsdialog.cpp @@ -345,6 +345,7 @@ SettingsDialog::postGotTomahawkStatusAuthVerifyReply( const QTweetUser &user ) return; } TomahawkSettings* s = TomahawkSettings::instance(); + s->setTwitterScreenName( user.screenName() ); TomahawkOAuthTwitter *twitAuth = new TomahawkOAuthTwitter( this ); twitAuth->setNetworkAccessManager( TomahawkUtils::nam() ); twitAuth->setOAuthToken( s->twitterOAuthToken().toLatin1() ); diff --git a/src/sip/twitter/twitter.cpp b/src/sip/twitter/twitter.cpp index 5fa16488d..accca9f5d 100644 --- a/src/sip/twitter/twitter.cpp +++ b/src/sip/twitter/twitter.cpp @@ -113,6 +113,7 @@ TwitterPlugin::connectAuthVerifyReply( const QTweetUser &user ) m_isAuthed = true; if ( !m_twitterAuth.isNull() ) { + TomahawkSettings::instance()->setTwitterScreenName( user.screenName() ); m_friendsTimeline = QWeakPointer( new QTweetFriendsTimeline( m_twitterAuth.data(), this ) ); m_mentions = QWeakPointer( new QTweetMentions( m_twitterAuth.data(), this ) ); m_directMessages = QWeakPointer( new QTweetDirectMessages( m_twitterAuth.data(), this ) ); @@ -160,11 +161,13 @@ TwitterPlugin::connectTimerFired() return; bool peersChanged = false; + QString myScreenName = TomahawkSettings::instance()->twitterScreenName(); QList peerlist = m_cachedPeers.keys(); qStableSort( peerlist.begin(), peerlist.end() ); foreach( QString screenName, peerlist ) { QHash< QString, QVariant > peerData = m_cachedPeers[screenName].toHash(); + if ( !peerData.contains( "node" ) || !peerData.contains( "host" ) || !peerData.contains( "port" ) || !peerData.contains( "pkey" ) ) continue; @@ -194,10 +197,13 @@ 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 ) { if ( status.id() > m_cachedFriendsSinceId ) m_cachedFriendsSinceId = status.id(); + if ( status.user().screenName() == myScreenName ) + continue; if ( regex.exactMatch( status.text() ) ) { qDebug() << "TwitterPlugin found an exact tweet from friend " << status.user().screenName(); @@ -230,10 +236,13 @@ 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 ) { if ( status.id() > m_cachedMentionsSinceId ) m_cachedMentionsSinceId = status.id(); + if ( status.user().screenName() == myScreenName ) + continue; if ( regex.exactMatch( status.text() ) ) { qDebug() << "TwitterPlugin found an exact matching mention from user " << status.user().screenName();