aboutsummaryrefslogtreecommitdiff
path: root/source/QXmppRoster.cpp
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/QXmppRoster.cpp
parent1c1d11b4134d39a8acb1ef20fa1b0554b1be3cc2 (diff)
downloadqxmpp-85c7230172a9176080a8342bcf6fcf7896bdb45e.tar.gz
move subscription auto-accept to QXmppRoster
Diffstat (limited to 'source/QXmppRoster.cpp')
-rw-r--r--source/QXmppRoster.cpp24
1 files changed, 18 insertions, 6 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)