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 | |
| parent | 1c1d11b4134d39a8acb1ef20fa1b0554b1be3cc2 (diff) | |
| download | qxmpp-85c7230172a9176080a8342bcf6fcf7896bdb45e.tar.gz | |
move subscription auto-accept to QXmppRoster
Diffstat (limited to 'source')
| -rw-r--r-- | source/QXmppRoster.cpp | 24 | ||||
| -rw-r--r-- | source/QXmppStream.cpp | 34 | ||||
| -rw-r--r-- | source/QXmppStream.h | 2 |
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(); |
