diff options
| author | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-06-29 07:43:55 +0000 |
|---|---|---|
| committer | Jeremy Lainé <jeremy.laine@m4x.org> | 2010-06-29 07:43:55 +0000 |
| commit | 85c7230172a9176080a8342bcf6fcf7896bdb45e (patch) | |
| tree | ea774b8e2201e6081bc244bc3d14b2828977a18a /source/QXmppRoster.cpp | |
| parent | 1c1d11b4134d39a8acb1ef20fa1b0554b1be3cc2 (diff) | |
| download | qxmpp-85c7230172a9176080a8342bcf6fcf7896bdb45e.tar.gz | |
move subscription auto-accept to QXmppRoster
Diffstat (limited to 'source/QXmppRoster.cpp')
| -rw-r--r-- | source/QXmppRoster.cpp | 24 |
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) |
