aboutsummaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-06-29 07:43:55 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-06-29 07:43:55 +0000
commit85c7230172a9176080a8342bcf6fcf7896bdb45e (patch)
treeea774b8e2201e6081bc244bc3d14b2828977a18a /source
parent1c1d11b4134d39a8acb1ef20fa1b0554b1be3cc2 (diff)
downloadqxmpp-85c7230172a9176080a8342bcf6fcf7896bdb45e.tar.gz
move subscription auto-accept to QXmppRoster
Diffstat (limited to 'source')
-rw-r--r--source/QXmppRoster.cpp24
-rw-r--r--source/QXmppStream.cpp34
-rw-r--r--source/QXmppStream.h2
3 files changed, 20 insertions, 40 deletions
diff --git a/source/QXmppRoster.cpp b/source/QXmppRoster.cpp
index 8b2a821d..16b1bf89 100644
--- a/source/QXmppRoster.cpp
+++ b/source/QXmppRoster.cpp
@@ -80,14 +80,26 @@ void QXmppRoster::presenceReceived(const QXmppPresence& presence)
QString bareJid = jidToBareJid(jid);
QString resource = jidToResource(jid);
- if (presence.type() == QXmppPresence::Available)
- m_presences[bareJid][resource] = presence;
- else if (presence.type() == QXmppPresence::Unavailable)
- m_presences[bareJid].remove(resource);
- else
+ if (bareJid.isEmpty())
return;
- emit presenceChanged(bareJid, resource);
+ switch(presence.type())
+ {
+ case QXmppPresence::Available:
+ m_presences[bareJid][resource] = presence;
+ emit presenceChanged(bareJid, resource);
+ break;
+ case QXmppPresence::Unavailable:
+ m_presences[bareJid].remove(resource);
+ emit presenceChanged(bareJid, resource);
+ break;
+ case QXmppPresence::Subscribe:
+ if (m_stream->configuration().autoAcceptSubscriptions())
+ m_stream->acceptSubscriptionRequest(jid);
+ break;
+ default:
+ break;
+ }
}
void QXmppRoster::rosterIqReceived(const QXmppRosterIq& rosterIq)
diff --git a/source/QXmppStream.cpp b/source/QXmppStream.cpp
index f311284f..6898a51b 100644
--- a/source/QXmppStream.cpp
+++ b/source/QXmppStream.cpp
@@ -726,7 +726,8 @@ void QXmppStream::parser(const QByteArray& data)
QXmppPresence presence;
presence.parse(nodeRecv);
- processPresence(presence);
+ // emit presence
+ emit presenceReceived(presence);
}
else if(nodeRecv.tagName() == "message")
{
@@ -996,37 +997,6 @@ bool QXmppStream::sendPacket(const QXmppPacket& packet)
return sendToServer(data);
}
-// FIXME : should this be moved to QXmppRoster?
-void QXmppStream::processPresence(const QXmppPresence& presence)
-{
- switch(presence.type())
- {
- case QXmppPresence::Error:
- break;
- case QXmppPresence::Available:
- break;
- case QXmppPresence::Unavailable:
- break;
- case QXmppPresence::Subscribe:
- if(!presence.from().isEmpty())
- {
- if(configuration().autoAcceptSubscriptions())
- acceptSubscriptionRequest(presence.from());
- emit subscriptionRequestReceived(presence.from());
- }
- break;
- case QXmppPresence::Unsubscribe:
- break;
- case QXmppPresence::Unsubscribed:
- break;
- case QXmppPresence::Probe:
- break;
- default:
- break;
- }
- emit presenceReceived(presence);
-}
-
void QXmppStream::sendEndStream()
{
sendToServer(streamRootElementEnd);
diff --git a/source/QXmppStream.h b/source/QXmppStream.h
index e71ba5b0..8c548089 100644
--- a/source/QXmppStream.h
+++ b/source/QXmppStream.h
@@ -97,7 +97,6 @@ signals:
void logMessage(QXmppLogger::MessageType type, const QString &msg);
void error(QXmppClient::Error);
- void subscriptionRequestReceived(const QString& from);
void elementReceived(const QDomElement &element, bool &handled);
void presenceReceived(const QXmppPresence&);
void messageReceived(const QXmppMessage&);
@@ -178,7 +177,6 @@ private:
bool hasStartStreamElement(const QByteArray&);
bool hasEndStreamElement(const QByteArray&);
- void processPresence(const QXmppPresence&);
void processBindIq(const QXmppBind&);
void flushDataBuffer();