From fcb9eb33e48694f940ccde5a5aea5c3b387446fb Mon Sep 17 00:00:00 2001
From: Dominik Schmidt <dev@dominik-schmidt.de>
Date: Fri, 6 May 2011 00:25:06 +0200
Subject: [PATCH] Add peersOnline() to SipPlugin

---
 src/libtomahawk/sip/SipPlugin.cpp | 24 ++++++++++++++++++++++++
 src/libtomahawk/sip/SipPlugin.h   |  7 +++++++
 2 files changed, 31 insertions(+)

diff --git a/src/libtomahawk/sip/SipPlugin.cpp b/src/libtomahawk/sip/SipPlugin.cpp
index 57d81588a..7f835a0fe 100644
--- a/src/libtomahawk/sip/SipPlugin.cpp
+++ b/src/libtomahawk/sip/SipPlugin.cpp
@@ -34,6 +34,8 @@ SipPlugin::SipPlugin( const QString& pluginId, QObject* parent )
 {
     connect( this, SIGNAL( error( int, QString ) ), this, SLOT( onError( int,QString ) ) );
     connect( this, SIGNAL( stateChanged( SipPlugin::ConnectionState ) ), this, SLOT( onStateChange( SipPlugin::ConnectionState ) ) );
+    connect( this, SIGNAL( peerOnline( QString ) ), this, SLOT( onPeerOnline( QString ) ) );
+    connect( this, SIGNAL( peerOffline( QString ) ), this, SLOT( onPeerOffline( QString ) ) );
 }
 
 QString SipPlugin::pluginId() const
@@ -67,6 +69,13 @@ SipPlugin::icon() const
     return QIcon();
 }
 
+const QStringList
+SipPlugin::peersOnline() const
+{
+    return m_peersOnline;
+}
+
+
 void
 SipPlugin::setProxy( const QNetworkProxy& proxy )
 {
@@ -85,3 +94,18 @@ SipPlugin::onStateChange( SipPlugin::ConnectionState state )
     m_cachedError.clear();
 }
 
+void
+SipPlugin::onPeerOnline(const QString& peerId)
+{
+   if( !m_peersOnline.contains( peerId ) )
+   {
+       m_peersOnline.append( peerId );
+   }
+}
+
+void
+SipPlugin::onPeerOffline(const QString& peerId)
+{
+    m_peersOnline.removeAll( peerId );
+}
+
diff --git a/src/libtomahawk/sip/SipPlugin.h b/src/libtomahawk/sip/SipPlugin.h
index 0903d980d..156944e21 100644
--- a/src/libtomahawk/sip/SipPlugin.h
+++ b/src/libtomahawk/sip/SipPlugin.h
@@ -76,6 +76,9 @@ public:
     virtual void saveConfig() {} // called when the widget has been edited
     virtual QIcon icon() const;
 
+    // peer infos
+    virtual const QStringList peersOnline() const;
+
 public slots:
     virtual bool connectPlugin( bool startup = false ) = 0;
     virtual void disconnectPlugin() = 0;
@@ -108,9 +111,13 @@ private slots:
     void onError( int, const QString& );
     void onStateChange( SipPlugin::ConnectionState state );
 
+    void onPeerOnline( const QString &peerId );
+    void onPeerOffline( const QString &peerId );
+
 private:
     QString m_pluginId;
     QString m_cachedError;
+    QStringList m_peersOnline;
 };
 
 Q_DECLARE_INTERFACE( SipPluginFactory, "tomahawk.SipFactory/1.0" )