From 72954fc541fb356571d213ca263eb8fa6a743004 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Sun, 12 Sep 2010 14:46:21 +0000 Subject: show time on profile dialog --- examples/GuiClient/profileDialog.cpp | 29 ++++++++++++++++++++++++++++- examples/GuiClient/profileDialog.h | 3 +++ 2 files changed, 31 insertions(+), 1 deletion(-) (limited to 'examples/GuiClient') diff --git a/examples/GuiClient/profileDialog.cpp b/examples/GuiClient/profileDialog.cpp index 65743bf6..c1f4d668 100644 --- a/examples/GuiClient/profileDialog.cpp +++ b/examples/GuiClient/profileDialog.cpp @@ -7,6 +7,8 @@ #include "QXmppVersionManager.h" #include "QXmppRosterManager.h" #include "QXmppUtils.h" +#include "QXmppEntityTimeManager.h" +#include "QXmppEntityTimeIq.h" profileDialog::profileDialog(QWidget *parent, const QString& bareJid, QXmppClient& client) : QDialog(parent, Qt::WindowTitleHint|Qt::WindowSystemMenuHint), @@ -18,10 +20,22 @@ profileDialog::profileDialog(QWidget *parent, const QString& bareJid, QXmppClien SLOT(versionReceived(const QXmppVersionIq&))); Q_ASSERT(check); + QXmppEntityTimeManager* timeManager = m_xmppClient.findExtension(); + + if(timeManager) + { + check = connect(timeManager, SIGNAL(timeReceived(const QXmppEntityTimeIq&)), + SLOT(timeReceived(const QXmppEntityTimeIq&))); + Q_ASSERT(check); + } + QStringList resources = m_xmppClient.rosterManager().getResources(bareJid); foreach(QString resource, resources) { - m_xmppClient.versionManager().requestVersion(bareJid + "/" + resource); + QString jid = bareJid + "/" + resource; + m_xmppClient.versionManager().requestVersion(jid); + if(timeManager) + timeManager->requestTime(jid); } updateText(); } @@ -64,6 +78,13 @@ void profileDialog::versionReceived(const QXmppVersionIq& ver) updateText(); } +void profileDialog::timeReceived(const QXmppEntityTimeIq& time) +{ + m_time[jidToResource(time.from())] = time; + if(time.type() == QXmppIq::Result) + updateText(); +} + void profileDialog::updateText() { QStringList resources = m_xmppClient.rosterManager().getResources(m_bareJid); @@ -81,6 +102,12 @@ void profileDialog::updateText() arg(m_versions[resource].name()). arg(m_versions[resource].version()). arg(m_versions[resource].os()); + statusText += "
"; + + if(m_time.contains(resource)) + statusText += "Time: " + QString("utc=%1 [tzo=%2]"). + arg(m_time[resource].utc()). + arg(m_time[resource].tzo()); if(i < resources.count() - 1) // skip for the last item statusText += "

"; diff --git a/examples/GuiClient/profileDialog.h b/examples/GuiClient/profileDialog.h index 86b2bba5..79cd0577 100644 --- a/examples/GuiClient/profileDialog.h +++ b/examples/GuiClient/profileDialog.h @@ -10,6 +10,7 @@ namespace Ui { class QXmppClient; class QXmppVersionIq; +class QXmppEntityTimeIq; class profileDialog : public QDialog { @@ -27,6 +28,7 @@ public: private slots: void versionReceived(const QXmppVersionIq&); + void timeReceived(const QXmppEntityTimeIq&); private: void updateText(); @@ -36,6 +38,7 @@ private: QString m_bareJid; QXmppClient& m_xmppClient; // reference to the active QXmppClient (No ownership) QMap m_versions; + QMap m_time; }; #endif // PROFILEDIALOG_H -- cgit v1.2.3