mirror of
https://github.com/tomahawk-player/tomahawk.git
synced 2025-04-13 04:21:51 +02:00
Update jreen plugin to newer jreen and sip plugin interface
This commit is contained in:
parent
35c2fccd6c
commit
f52205d2cc
@ -77,10 +77,10 @@ JabberPlugin::connectPlugin( bool startup )
|
||||
if ( startup && !TomahawkSettings::instance()->jabberAutoConnect() )
|
||||
return false;
|
||||
|
||||
QString jid = TomahawkSettings::instance()->jabberUsername();
|
||||
QString server = TomahawkSettings::instance()->jabberServer();
|
||||
QString password = TomahawkSettings::instance()->jabberPassword();
|
||||
unsigned int port = TomahawkSettings::instance()->jabberPort();
|
||||
QString jid = m_currentUsername = TomahawkSettings::instance()->jabberUsername();
|
||||
QString server = m_currentServer = TomahawkSettings::instance()->jabberServer();
|
||||
QString password = m_currentPassword = TomahawkSettings::instance()->jabberPassword();
|
||||
unsigned int port = m_currentPort = TomahawkSettings::instance()->jabberPort();
|
||||
|
||||
QStringList splitJid = jid.split( '@', QString::SkipEmptyParts );
|
||||
if ( splitJid.size() < 2 )
|
||||
@ -115,7 +115,7 @@ void
|
||||
JabberPlugin::disconnectPlugin()
|
||||
{
|
||||
onDisconnected();
|
||||
|
||||
|
||||
if ( p )
|
||||
p->disconnect();
|
||||
|
||||
@ -123,35 +123,35 @@ JabberPlugin::disconnectPlugin()
|
||||
p = 0;
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
JabberPlugin::onConnected()
|
||||
{
|
||||
if( !m_menu ) {
|
||||
m_menu = new QMenu( QString( "JREEN (" ).append( accountName() ).append(")" ) );
|
||||
m_addFriendAction = m_menu->addAction( "Add Friend..." );
|
||||
QAction *connectAction = m_menu->addAction( "Connect" );
|
||||
|
||||
|
||||
connect( m_addFriendAction, SIGNAL(triggered() ),
|
||||
this, SLOT( showAddFriendDialog() ) );
|
||||
connect( connectAction, SIGNAL( triggered() ), SLOT( connectPlugin() ) );
|
||||
|
||||
|
||||
emit addMenu( m_menu );
|
||||
}
|
||||
|
||||
|
||||
emit connected();
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
JabberPlugin::onDisconnected()
|
||||
{
|
||||
if( m_menu && m_addFriendAction ) {
|
||||
emit removeMenu( m_menu );
|
||||
|
||||
|
||||
delete m_menu;
|
||||
m_menu = 0;
|
||||
m_addFriendAction = 0; // deleted by menu
|
||||
}
|
||||
|
||||
|
||||
emit disconnected();
|
||||
}
|
||||
|
||||
@ -190,4 +190,29 @@ JabberPlugin::showAddFriendDialog()
|
||||
addContact( id );
|
||||
}
|
||||
|
||||
void
|
||||
JabberPlugin::checkSettings()
|
||||
{
|
||||
bool reconnect = false;
|
||||
if ( m_currentUsername != TomahawkSettings::instance()->jabberUsername() )
|
||||
reconnect = true;
|
||||
if ( m_currentPassword != TomahawkSettings::instance()->jabberPassword() )
|
||||
reconnect = true;
|
||||
if ( m_currentServer != TomahawkSettings::instance()->jabberServer() )
|
||||
reconnect = true;
|
||||
if ( m_currentPort != TomahawkSettings::instance()->jabberPort() )
|
||||
reconnect = true;
|
||||
|
||||
m_currentUsername = TomahawkSettings::instance()->jabberUsername();
|
||||
m_currentPassword = TomahawkSettings::instance()->jabberPassword();
|
||||
m_currentServer = TomahawkSettings::instance()->jabberServer();
|
||||
m_currentPort = TomahawkSettings::instance()->jabberPort();
|
||||
|
||||
if ( reconnect && ( p || TomahawkSettings::instance()->jabberAutoConnect() ) )
|
||||
{
|
||||
disconnectPlugin();
|
||||
connectPlugin( false );
|
||||
}
|
||||
}
|
||||
|
||||
Q_EXPORT_PLUGIN2( sip, JabberPlugin )
|
||||
|
@ -47,6 +47,7 @@ public:
|
||||
public slots:
|
||||
virtual bool connectPlugin( bool startup );
|
||||
void disconnectPlugin();
|
||||
void checkSettings();
|
||||
void sendMsg( const QString& to, const QString& msg );
|
||||
void broadcastMsg( const QString &msg );
|
||||
void addContact( const QString &jid, const QString& msg = QString() );
|
||||
@ -60,6 +61,11 @@ private:
|
||||
Jabber_p* p;
|
||||
QMenu* m_menu;
|
||||
QAction* m_addFriendAction;
|
||||
|
||||
QString m_currentUsername;
|
||||
QString m_currentPassword;
|
||||
QString m_currentServer;
|
||||
unsigned int m_currentPort;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
@ -47,22 +47,22 @@ Jabber_p::Jabber_p( const QString& jid, const QString& password, const QString&
|
||||
//qsrand( QTime( 0, 0, 0 ).secsTo( QTime::currentTime() ) );
|
||||
qsrand(QDateTime::currentDateTime().toTime_t());
|
||||
|
||||
m_presences[jreen::Presence::Available] = "available";
|
||||
m_presences[jreen::Presence::Chat] = "chat";
|
||||
m_presences[jreen::Presence::Away] = "away";
|
||||
m_presences[jreen::Presence::DND] = "dnd";
|
||||
m_presences[jreen::Presence::XA] = "xa";
|
||||
m_presences[jreen::Presence::Unavailable] = "unavailable";
|
||||
m_presences[jreen::Presence::Probe] = "probe";
|
||||
m_presences[jreen::Presence::Error] = "error";
|
||||
m_presences[jreen::Presence::Invalid] = "invalid";
|
||||
m_presences[Jreen::Presence::Available] = "available";
|
||||
m_presences[Jreen::Presence::Chat] = "chat";
|
||||
m_presences[Jreen::Presence::Away] = "away";
|
||||
m_presences[Jreen::Presence::DND] = "dnd";
|
||||
m_presences[Jreen::Presence::XA] = "xa";
|
||||
m_presences[Jreen::Presence::Unavailable] = "unavailable";
|
||||
m_presences[Jreen::Presence::Probe] = "probe";
|
||||
m_presences[Jreen::Presence::Error] = "error";
|
||||
m_presences[Jreen::Presence::Invalid] = "invalid";
|
||||
|
||||
m_jid = jreen::JID( jid );
|
||||
m_jid = Jreen::JID( jid );
|
||||
|
||||
m_client = new jreen::Client( jid, password );
|
||||
m_client = new Jreen::Client( jid, password );
|
||||
m_client->setResource( QString( "tomahawk%1" ).arg( "DOMME" ) );
|
||||
|
||||
jreen::Capabilities::Ptr caps = m_client->presence().findExtension<jreen::Capabilities>();
|
||||
Jreen::Capabilities::Ptr caps = m_client->presence().findExtension<Jreen::Capabilities>();
|
||||
caps->setNode(TOMAHAWK_CAP_NODE_NAME);
|
||||
|
||||
qDebug() << "Our JID set to:" << m_client->jid().full();
|
||||
@ -71,10 +71,10 @@ Jabber_p::Jabber_p( const QString& jid, const QString& password, const QString&
|
||||
|
||||
connect(m_client->connection(), SIGNAL(error(SocketError)), SLOT(onError(SocketError)));
|
||||
connect(m_client, SIGNAL(serverFeaturesReceived(QSet<QString>)), SLOT(onConnect()));
|
||||
connect(m_client, SIGNAL(disconnected(jreen::Client::DisconnectReason)), SLOT(onDisconnect(jreen::Client::DisconnectReason)));
|
||||
connect(m_client, SIGNAL(disconnected(Jreen::Client::DisconnectReason)), SLOT(onDisconnect(Jreen::Client::DisconnectReason)));
|
||||
connect(m_client, SIGNAL(destroyed(QObject*)), this, SLOT(onDestroy()));
|
||||
connect(m_client, SIGNAL(newMessage(jreen::Message)), SLOT(onNewMessage(jreen::Message)));
|
||||
connect(m_client, SIGNAL(newPresence(jreen::Presence)), SLOT(onNewPresence(jreen::Presence)));
|
||||
connect(m_client, SIGNAL(newMessage(Jreen::Message)), SLOT(onNewMessage(Jreen::Message)));
|
||||
connect(m_client, SIGNAL(newPresence(Jreen::Presence)), SLOT(onNewPresence(Jreen::Presence)));
|
||||
|
||||
qDebug() << "Connecting to the XMPP server...";
|
||||
m_client->connectToServer();
|
||||
@ -124,7 +124,7 @@ Jabber_p::sendMsg( const QString& to, const QString& msg )
|
||||
}
|
||||
|
||||
qDebug() << Q_FUNC_INFO << to << msg;
|
||||
jreen::Message m( jreen::Message::Chat, jreen::JID(to), msg);
|
||||
Jreen::Message m( Jreen::Message::Chat, Jreen::JID(to), msg);
|
||||
|
||||
m_client->send( m ); // assuming this is threadsafe
|
||||
}
|
||||
@ -149,7 +149,7 @@ Jabber_p::broadcastMsg( const QString &msg )
|
||||
foreach( const QString& jidstr, m_peers.keys() )
|
||||
{
|
||||
qDebug() << "Broadcasting to" << jidstr <<"...";
|
||||
jreen::Message m(jreen::Message::Chat, jreen::JID(jidstr), msg, "");
|
||||
Jreen::Message m(Jreen::Message::Chat, Jreen::JID(jidstr), msg, "");
|
||||
m_client->send( m );
|
||||
}
|
||||
}
|
||||
@ -191,27 +191,27 @@ Jabber_p::onConnect()
|
||||
emit connected();
|
||||
qDebug() << "Connected as:" << m_jid.full();
|
||||
|
||||
m_client->setPresence(jreen::Presence::Available, "Tomahawk-JREEN available", 1);
|
||||
m_client->setPresence(Jreen::Presence::Available, "Tomahawk-JREEN available", 1);
|
||||
m_client->disco()->setSoftwareVersion( "Tomahawk JREEN", "0.0.0.0", "Foobar" );
|
||||
m_client->setPingInterval(60000);
|
||||
m_roster = new jreen::SimpleRoster( m_client );
|
||||
m_roster = new Jreen::SimpleRoster( m_client );
|
||||
m_roster->load();
|
||||
|
||||
// join MUC with bare jid as nickname
|
||||
//TODO: make the room a list of rooms and make that configurable
|
||||
QString bare(m_jid.bare());
|
||||
m_room = new jreen::MUCRoom(m_client, jreen::JID(QString("tomahawk@conference.qutim.org/").append(bare.replace("@", "-"))));
|
||||
m_room->setHistorySeconds(0);
|
||||
m_room->join();
|
||||
m_room = new Jreen::MUCRoom(m_client, Jreen::JID(QString("tomahawk@conference.qutim.org/").append(bare.replace("@", "-"))));
|
||||
//m_room->setHistorySeconds(0);
|
||||
//m_room->join();
|
||||
|
||||
// treat muc participiants like contacts
|
||||
connect(m_room, SIGNAL(messageReceived(jreen::Message, bool)), this, SLOT(onNewMessage(jreen::Message)));
|
||||
connect(m_room, SIGNAL(presenceReceived(jreen::Presence,const jreen::MUCRoom::Participant*)), this, SLOT(onNewPresence(jreen::Presence)));
|
||||
connect(m_room, SIGNAL(messageReceived(Jreen::Message, bool)), this, SLOT(onNewMessage(Jreen::Message)));
|
||||
connect(m_room, SIGNAL(presenceReceived(Jreen::Presence,const Jreen::MUCRoom::Participant*)), this, SLOT(onNewPresence(Jreen::Presence)));
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
Jabber_p::onDisconnect( jreen::Client::DisconnectReason reason )
|
||||
Jabber_p::onDisconnect( Jreen::Client::DisconnectReason reason )
|
||||
{
|
||||
QString error;
|
||||
bool reconnect = false;
|
||||
@ -219,39 +219,39 @@ Jabber_p::onDisconnect( jreen::Client::DisconnectReason reason )
|
||||
|
||||
switch( reason )
|
||||
{
|
||||
case jreen::Client::User:
|
||||
case Jreen::Client::User:
|
||||
error = "User Interaction";
|
||||
break;
|
||||
case jreen::Client::HostUnknown:
|
||||
case Jreen::Client::HostUnknown:
|
||||
error = "Host is unknown";
|
||||
break;
|
||||
case jreen::Client::ItemNotFound:
|
||||
case Jreen::Client::ItemNotFound:
|
||||
error = "Item not found";
|
||||
break;
|
||||
case jreen::Client::AuthorizationError:
|
||||
case Jreen::Client::AuthorizationError:
|
||||
error = "Authorization Error";
|
||||
break;
|
||||
case jreen::Client::RemoteStreamError:
|
||||
case Jreen::Client::RemoteStreamError:
|
||||
error = "Remote Stream Error";
|
||||
reconnect = true;
|
||||
break;
|
||||
case jreen::Client::RemoteConnectionFailed:
|
||||
case Jreen::Client::RemoteConnectionFailed:
|
||||
error = "Remote Connection failed";
|
||||
break;
|
||||
case jreen::Client::InternalServerError:
|
||||
case Jreen::Client::InternalServerError:
|
||||
error = "Internal Server Error";
|
||||
reconnect = true;
|
||||
break;
|
||||
case jreen::Client::SystemShutdown:
|
||||
case Jreen::Client::SystemShutdown:
|
||||
error = "System shutdown";
|
||||
reconnect = true;
|
||||
reconnectInSeconds = 60;
|
||||
break;
|
||||
case jreen::Client::Conflict:
|
||||
case Jreen::Client::Conflict:
|
||||
error = "Conflict";
|
||||
break;
|
||||
|
||||
case jreen::Client::Unknown:
|
||||
case Jreen::Client::Unknown:
|
||||
error = "Unknown";
|
||||
break;
|
||||
|
||||
@ -270,7 +270,7 @@ Jabber_p::onDisconnect( jreen::Client::DisconnectReason reason )
|
||||
}
|
||||
|
||||
void
|
||||
Jabber_p::onNewMessage( const jreen::Message& m )
|
||||
Jabber_p::onNewMessage( const Jreen::Message& m )
|
||||
{
|
||||
QString from = m.from().full();
|
||||
QString msg = m.body();
|
||||
@ -283,10 +283,10 @@ Jabber_p::onNewMessage( const jreen::Message& m )
|
||||
}
|
||||
|
||||
|
||||
void Jabber_p::onNewPresence( const jreen::Presence& presence)
|
||||
void Jabber_p::onNewPresence( const Jreen::Presence& presence)
|
||||
{
|
||||
|
||||
jreen::JID jid = presence.from();
|
||||
Jreen::JID jid = presence.from();
|
||||
QString fulljid( jid.full() );
|
||||
|
||||
qDebug() << Q_FUNC_INFO << "handle presence" << fulljid << presence.subtype();
|
||||
@ -300,7 +300,7 @@ void Jabber_p::onNewPresence( const jreen::Presence& presence)
|
||||
}
|
||||
|
||||
// ignore anyone not running tomahawk:
|
||||
jreen::Capabilities::Ptr caps = presence.findExtension<jreen::Capabilities>();
|
||||
Jreen::Capabilities::Ptr caps = presence.findExtension<Jreen::Capabilities>();
|
||||
if ( caps && (caps->node() == TOMAHAWK_CAP_NODE_NAME ))
|
||||
{
|
||||
qDebug() << Q_FUNC_INFO << presence.from().full() << "tomahawk detected by caps";
|
||||
@ -356,13 +356,13 @@ void Jabber_p::onNewPresence( const jreen::Presence& presence)
|
||||
}
|
||||
|
||||
bool
|
||||
Jabber_p::presenceMeansOnline( jreen::Presence::Type p )
|
||||
Jabber_p::presenceMeansOnline( Jreen::Presence::Type p )
|
||||
{
|
||||
switch(p)
|
||||
{
|
||||
case jreen::Presence::Invalid:
|
||||
case jreen::Presence::Unavailable:
|
||||
case jreen::Presence::Error:
|
||||
case Jreen::Presence::Invalid:
|
||||
case Jreen::Presence::Unavailable:
|
||||
case Jreen::Presence::Error:
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
|
@ -77,25 +77,25 @@ public slots:
|
||||
void addContact( const QString& jid, const QString& msg = QString() );
|
||||
void disconnect();
|
||||
|
||||
void onDisconnect(jreen::Client::DisconnectReason reason);
|
||||
void onDisconnect(Jreen::Client::DisconnectReason reason);
|
||||
void onConnect();
|
||||
|
||||
private slots:
|
||||
virtual void onNewPresence( const jreen::Presence& presence );
|
||||
virtual void onNewMessage( const jreen::Message& msg );
|
||||
virtual void onError( const jreen::Connection::SocketError& e )
|
||||
virtual void onNewPresence( const Jreen::Presence& presence );
|
||||
virtual void onNewMessage( const Jreen::Message& msg );
|
||||
virtual void onError( const Jreen::Connection::SocketError& e )
|
||||
{
|
||||
qDebug() << e;
|
||||
}
|
||||
|
||||
private:
|
||||
bool presenceMeansOnline( jreen::Presence::Type p );
|
||||
jreen::Client *m_client;
|
||||
jreen::MUCRoom *m_room;
|
||||
jreen::SimpleRoster *m_roster;
|
||||
jreen::JID m_jid;
|
||||
QMap<jreen::Presence::Type, QString> m_presences;
|
||||
QMap<QString, jreen::Presence::Type> m_peers;
|
||||
bool presenceMeansOnline( Jreen::Presence::Type p );
|
||||
Jreen::Client *m_client;
|
||||
Jreen::MUCRoom *m_room;
|
||||
Jreen::SimpleRoster *m_roster;
|
||||
Jreen::JID m_jid;
|
||||
QMap<Jreen::Presence::Type, QString> m_presences;
|
||||
QMap<QString, Jreen::Presence::Type> m_peers;
|
||||
QString m_server;
|
||||
};
|
||||
|
||||
|
2
thirdparty/jreen
vendored
2
thirdparty/jreen
vendored
@ -1 +1 @@
|
||||
Subproject commit 040ca3f3cb9b30b4845fc23054c833fda4717460
|
||||
Subproject commit 126ef9d96bf774b9808a16dd8c94001af408528b
|
Loading…
x
Reference in New Issue
Block a user