aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppEntityTimeManager.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-12 10:05:59 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-12 10:05:59 +0000
commit14325891332bebceb50601db55ddedbfb6766c22 (patch)
tree4bdc2eba55e24f9120cfe39d03c43fe4c310d14c /src/QXmppEntityTimeManager.cpp
parent6ff3b8e42f562e241da4563e0f09afadfb7546de (diff)
downloadqxmpp-14325891332bebceb50601db55ddedbfb6766c22.tar.gz
add entityTime manager
Diffstat (limited to 'src/QXmppEntityTimeManager.cpp')
-rw-r--r--src/QXmppEntityTimeManager.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/QXmppEntityTimeManager.cpp b/src/QXmppEntityTimeManager.cpp
new file mode 100644
index 00000000..8ae97365
--- /dev/null
+++ b/src/QXmppEntityTimeManager.cpp
@@ -0,0 +1,50 @@
+#include "QXmppEntityTimeManager.h"
+
+#include <QDomElement>
+
+#include "QXmppConstants.h"
+#include "QXmppOutgoingClient.h"
+#include "QXmppEntityTimeIq.h"
+
+void QXmppEntityTimeManager::requestTime(const QString& jid)
+{
+ QXmppEntityTimeIq request;
+ request.setType(QXmppIq::Get);
+ request.setFrom(client()->configuration().jid());
+ request.setTo(jid);
+ client()->sendPacket(request);
+}
+
+QStringList QXmppEntityTimeManager::discoveryFeatures() const
+{
+ return QStringList() << ns_entity_time;
+}
+
+bool QXmppEntityTimeManager::handleStanza(QXmppStream *stream, const QDomElement &element)
+{
+ if(element.tagName() == "iq" && QXmppEntityTimeIq::isEntityTimeIq(element))
+ {
+ QXmppEntityTimeIq entityTime;
+ entityTime.parse(element);
+
+ if(entityTime.type() == QXmppIq::Get)
+ {
+ // respond to query
+ QXmppEntityTimeIq responseIq;
+ responseIq.setType(QXmppIq::Result);
+ responseIq.setId(entityTime.id());
+ responseIq.setTo(entityTime.from());
+
+ // TODO: set valid values
+ responseIq.setTzo("");
+ responseIq.setUtc("");
+
+ stream->sendPacket(responseIq);
+ }
+
+ emit timeReceived(entityTime);
+ return true;
+ }
+
+ return false;
+}