diff --git a/src/sip/zeroconf/zeroconf.cpp b/src/sip/zeroconf/zeroconf.cpp index 80c0ffccd..3e68dc2f6 100644 --- a/src/sip/zeroconf/zeroconf.cpp +++ b/src/sip/zeroconf/zeroconf.cpp @@ -20,6 +20,8 @@ #include +#include + #include "tomahawksettings.h" #include "utils/logger.h" @@ -39,6 +41,9 @@ ZeroconfPlugin::ZeroconfPlugin ( const QString& pluginId ) , m_cachedNodes() { qDebug() << Q_FUNC_INFO; + m_advertisementTimer.setInterval( 60000 ); + m_advertisementTimer.setSingleShot( false ); + connect( &m_advertisementTimer, SIGNAL( timeout() ), this, SLOT( advertise() ) ); } ZeroconfPlugin::~ZeroconfPlugin() {} @@ -75,16 +80,14 @@ ZeroconfFactory::icon() const bool -ZeroconfPlugin::connectPlugin( bool startup ) +ZeroconfPlugin::connectPlugin( bool /*startup*/ ) { - Q_UNUSED( startup ); - delete m_zeroconf; m_zeroconf = new TomahawkZeroconf( Servent::instance()->port(), this ); QObject::connect( m_zeroconf, SIGNAL( tomahawkHostFound( QString, int, QString, QString ) ), SLOT( lanHostFound( QString, int, QString, QString ) ) ); - m_zeroconf->advertise(); + advertise(); m_state = Connected; foreach( const QStringList& nodeSet, m_cachedNodes ) @@ -93,12 +96,16 @@ ZeroconfPlugin::connectPlugin( bool startup ) Servent::instance()->connectToPeer( nodeSet[0], nodeSet[1].toInt(), "whitelist", nodeSet[2], nodeSet[3] ); } m_cachedNodes.clear(); + + m_advertisementTimer.start(); + return true; } void ZeroconfPlugin::disconnectPlugin() { + m_advertisementTimer.stop(); m_state = Disconnected; delete m_zeroconf; @@ -112,6 +119,13 @@ ZeroconfPlugin::icon() const } +void +ZeroconfPlugin::advertise() +{ + m_zeroconf->advertise(); +} + + void ZeroconfPlugin::lanHostFound( const QString& host, int port, const QString& name, const QString& nodeid ) { diff --git a/src/sip/zeroconf/zeroconf.h b/src/sip/zeroconf/zeroconf.h index 5c1870ef6..ff0b3d61b 100644 --- a/src/sip/zeroconf/zeroconf.h +++ b/src/sip/zeroconf/zeroconf.h @@ -24,6 +24,8 @@ #include "../sipdllmacro.h" +#include + #define MYNAME "Local Network" class SIPDLLEXPORT ZeroconfFactory : public SipPluginFactory @@ -65,6 +67,8 @@ public slots: virtual bool connectPlugin( bool startup ); void disconnectPlugin(); + void advertise(); + void sendMsg( const QString& , const QString& ) {} void broadcastMsg( const QString & ) {} void addContact( const QString &, const QString& ) {} @@ -76,6 +80,7 @@ private: TomahawkZeroconf* m_zeroconf; ConnectionState m_state; QVector m_cachedNodes; + QTimer m_advertisementTimer; }; #endif