aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppVCardManager.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-17 08:12:51 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-17 08:12:51 +0000
commit166e4101fa9fbf61faef2c770f9a80e98799c1e1 (patch)
tree0383bfce71aee3a60c7fd62a99db0549e53b37b0 /src/QXmppVCardManager.cpp
parentc716c25e3e57b4be7146dd99c6355f76ed5f6b9c (diff)
downloadqxmpp-166e4101fa9fbf61faef2c770f9a80e98799c1e1.tar.gz
implement QXmppVCardManager using QXmppClientExtension
Diffstat (limited to 'src/QXmppVCardManager.cpp')
-rw-r--r--src/QXmppVCardManager.cpp62
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.