diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-12 10:05:59 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-12 10:05:59 +0000 |
| commit | 14325891332bebceb50601db55ddedbfb6766c22 (patch) | |
| tree | 4bdc2eba55e24f9120cfe39d03c43fe4c310d14c /src | |
| parent | 6ff3b8e42f562e241da4563e0f09afadfb7546de (diff) | |
| download | qxmpp-14325891332bebceb50601db55ddedbfb6766c22.tar.gz | |
add entityTime manager
Diffstat (limited to 'src')
| -rw-r--r-- | src/QXmppEntityTimeManager.cpp | 50 | ||||
| -rw-r--r-- | src/QXmppEntityTimeManager.h | 27 |
2 files changed, 77 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;
+}
diff --git a/src/QXmppEntityTimeManager.h b/src/QXmppEntityTimeManager.h new file mode 100644 index 00000000..c7f719ce --- /dev/null +++ b/src/QXmppEntityTimeManager.h @@ -0,0 +1,27 @@ +#ifndef QXMPPENTITYTIMEMANAGER_H
+#define QXMPPENTITYTIMEMANAGER_H
+
+#include "QXmppClientExtension.h"
+
+class QXmppOutgoingClient;
+class QXmppEntityTimeIq;
+
+/// \ingroup Managers
+
+class QXmppEntityTimeManager : public QXmppClientExtension
+{
+ Q_OBJECT
+
+public:
+ void requestTime(const QString& jid);
+
+ /// \cond
+ QStringList discoveryFeatures() const;
+ bool handleStanza(QXmppStream *stream, const QDomElement &element);
+ /// \endcond
+
+signals:
+ void timeReceived(const QXmppEntityTimeIq&);
+};
+
+#endif // QXMPPENTITYTIMEMANAGER_H
|
