aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/profileDialog.cpp
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-10 04:40:10 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-10 04:40:10 +0000
commit1ac900a0b97ceed2b9451f573f3c08ea002c2d87 (patch)
tree801e1ffd73ce16e49ca607230ef2ccf92a891518 /examples/GuiClient/profileDialog.cpp
parent757a4ea445e33bdf16434efb3dc74de0e24f10f8 (diff)
downloadqxmpp-1ac900a0b97ceed2b9451f573f3c08ea002c2d87.tar.gz
add software version details to the profileDialog
Diffstat (limited to 'examples/GuiClient/profileDialog.cpp')
-rw-r--r--examples/GuiClient/profileDialog.cpp59
1 files changed, 57 insertions, 2 deletions
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 += "<B>Resource: </B>" + resource;
+ statusText += "</B><BR>";
+ QXmppPresence presence = m_xmppClient.rosterManager().getPresence(m_bareJid, resource);
+ statusText += "<B>Status: </B>" + presenceToStatusText(presence);
+ statusText += "<BR>";
+ if(m_versions.contains(resource))
+ statusText += "<B>Software: </B>" + 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 += "<BR><BR>";
+ }
+ setStatusText(statusText);
+}
+