From 1ac900a0b97ceed2b9451f573f3c08ea002c2d87 Mon Sep 17 00:00:00 2001 From: Manjeet Dahiya Date: Fri, 10 Sep 2010 04:40:10 +0000 Subject: add software version details to the profileDialog --- examples/GuiClient/profileDialog.cpp | 59 ++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) (limited to 'examples/GuiClient/profileDialog.cpp') diff --git a/examples/GuiClient/profileDialog.cpp b/examples/GuiClient/profileDialog.cpp index 79d51d7f..1826fc27 100644 --- a/examples/GuiClient/profileDialog.cpp +++ b/examples/GuiClient/profileDialog.cpp @@ -1,11 +1,29 @@ #include "profileDialog.h" #include "ui_profileDialog.h" +#include "utils.h" -profileDialog::profileDialog(QWidget *parent) : +#include "QXmppClient.h" +#include "QXmppVersionIq.h" +#include "QXmppVersionManager.h" +#include "QXmppRosterManager.h" +#include "QXmppUtils.h" + +profileDialog::profileDialog(QWidget *parent, const QString& bareJid, QXmppClient& client) : QDialog(parent, Qt::WindowTitleHint|Qt::WindowSystemMenuHint), - ui(new Ui::profileDialog) + ui(new Ui::profileDialog), m_bareJid(bareJid), m_xmppClient(client) { ui->setupUi(this); + + bool check = connect(&m_xmppClient.versionManager(), SIGNAL(versionReceived(const QXmppVersionIq&)), + SLOT(versionReceived(const QXmppVersionIq&))); + Q_ASSERT(check); + + QStringList resources = m_xmppClient.rosterManager().getResources(bareJid); + foreach(QString resource, resources) + { + m_xmppClient.versionManager().requestVersion(bareJid + "/" + resource); + } + updateText(); } profileDialog::~profileDialog() @@ -26,6 +44,11 @@ void profileDialog::setBareJid(const QString& bareJid) void profileDialog::setFullName(const QString& fullName) { + if(fullName.isEmpty()) + ui->label_fullName->hide(); + else + ui->label_fullName->show(); + ui->label_fullName->setText(fullName); } @@ -33,3 +56,35 @@ void profileDialog::setStatusText(const QString& status) { ui->label_status->setText(status); } + +void profileDialog::versionReceived(const QXmppVersionIq& ver) +{ + m_versions[jidToResource(ver.from())] = ver; + if(ver.type() == QXmppIq::Result) + updateText(); +} + +void profileDialog::updateText() +{ + QStringList resources = m_xmppClient.rosterManager().getResources(m_bareJid); + QString statusText; + for(int i = 0; i < resources.count(); ++i) + { + QString resource = resources.at(i); + statusText += "Resource: " + resource; + statusText += "
"; + QXmppPresence presence = m_xmppClient.rosterManager().getPresence(m_bareJid, resource); + statusText += "Status: " + presenceToStatusText(presence); + statusText += "
"; + if(m_versions.contains(resource)) + statusText += "Software: " + QString("%1 %2 %3"). + arg(m_versions[resource].name()). + arg(m_versions[resource].version()). + arg(m_versions[resource].os()); + + if(i < resources.count() - 1) // skip for the last item + statusText += "

"; + } + setStatusText(statusText); +} + -- cgit v1.2.3