diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-17 08:12:51 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-17 08:12:51 +0000 |
| commit | 166e4101fa9fbf61faef2c770f9a80e98799c1e1 (patch) | |
| tree | 0383bfce71aee3a60c7fd62a99db0549e53b37b0 /src/QXmppVCardManager.cpp | |
| parent | c716c25e3e57b4be7146dd99c6355f76ed5f6b9c (diff) | |
| download | qxmpp-166e4101fa9fbf61faef2c770f9a80e98799c1e1.tar.gz | |
implement QXmppVCardManager using QXmppClientExtension
Diffstat (limited to 'src/QXmppVCardManager.cpp')
| -rw-r--r-- | src/QXmppVCardManager.cpp | 62 |
1 files changed, 36 insertions, 26 deletions
diff --git a/src/QXmppVCardManager.cpp b/src/QXmppVCardManager.cpp index dbede096..de33d808 100644 --- a/src/QXmppVCardManager.cpp +++ b/src/QXmppVCardManager.cpp @@ -25,16 +25,43 @@ #include "QXmppVCardManager.h" #include "QXmppOutgoingClient.h" #include "QXmppUtils.h" +#include "QXmppConstants.h" -QXmppVCardManager::QXmppVCardManager(QXmppOutgoingClient* stream, QObject *parent) - : QObject(parent), - m_stream(stream), +QXmppVCardManager::QXmppVCardManager() + : QXmppClientExtension(), m_isClientVCardReceived(false) { - bool check = QObject::connect(m_stream, SIGNAL(vCardIqReceived(const QXmppVCardIq&)), - this, SLOT(vCardIqReceived(const QXmppVCardIq&))); - Q_ASSERT(check); - Q_UNUSED(check); +} + +QStringList QXmppVCardManager::discoveryFeatures() const +{ + return QStringList() << ns_vcard; +} + +bool QXmppVCardManager::handleStanza(QXmppStream *stream, const QDomElement &element) +{ + if(element.tagName() == "iq" && QXmppVCardIq::isVCard(element)) + { + QXmppVCardIq vCardIq; + vCardIq.parse(element); + + if(vCardIq.from().isEmpty()) + { + m_clientVCard = vCardIq; + m_isClientVCardReceived = true; + emit clientVCardReceived(); + } + + emit vCardReceived(vCardIq); + + // deprecated in 0.3.0 release + QXmppVCard oldVCard(vCardIq); + emit vCardReceived(oldVCard); + + return true; + } + + return false; } /// This function requests the server for vCard of the specified jid. @@ -45,29 +72,12 @@ QXmppVCardManager::QXmppVCardManager(QXmppOutgoingClient* stream, QObject *paren QString QXmppVCardManager::requestVCard(const QString& jid) { QXmppVCardIq request(jid); - if(m_stream->sendPacket(request)) + if(client()->sendPacket(request)) return request.id(); else return ""; } -void QXmppVCardManager::vCardIqReceived(const QXmppVCardIq& vcard) -{ - // self vCard received - if(vcard.from().isEmpty()) - { - m_clientVCard = vcard; - m_isClientVCardReceived = true; - emit clientVCardReceived(); - } - - emit vCardReceived(vcard); - -// deprecated in 0.3.0 release - QXmppVCard oldVCard(vcard); - emit vCardReceived(oldVCard); -} - /// Returns the vCard of the connected client. /// /// \return QXmppVCard @@ -87,7 +97,7 @@ void QXmppVCardManager::setClientVCard(const QXmppVCardIq& clientVCard) m_clientVCard.setTo(""); m_clientVCard.setFrom(""); m_clientVCard.setType(QXmppIq::Set); - m_stream->sendPacket(m_clientVCard); + client()->sendPacket(m_clientVCard); } /// This function requests the server for vCard of the connected user itself. |
