diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-10 04:40:10 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-10 04:40:10 +0000 |
| commit | 1ac900a0b97ceed2b9451f573f3c08ea002c2d87 (patch) | |
| tree | 801e1ffd73ce16e49ca607230ef2ccf92a891518 /examples | |
| parent | 757a4ea445e33bdf16434efb3dc74de0e24f10f8 (diff) | |
| download | qxmpp-1ac900a0b97ceed2b9451f573f3c08ea002c2d87.tar.gz | |
add software version details to the profileDialog
Diffstat (limited to 'examples')
| -rw-r--r-- | examples/GuiClient/mainDialog.cpp | 22 | ||||
| -rw-r--r-- | examples/GuiClient/profileDialog.cpp | 59 | ||||
| -rw-r--r-- | examples/GuiClient/profileDialog.h | 17 | ||||
| -rw-r--r-- | examples/GuiClient/profileDialog.ui | 37 |
4 files changed, 105 insertions, 30 deletions
diff --git a/examples/GuiClient/mainDialog.cpp b/examples/GuiClient/mainDialog.cpp index 35705e89..a24440d7 100644 --- a/examples/GuiClient/mainDialog.cpp +++ b/examples/GuiClient/mainDialog.cpp @@ -33,6 +33,8 @@ #include "QXmppVCardManager.h"
#include "QXmppLogger.h"
#include "QXmppVCardIq.h"
+#include "QXmppRosterManager.h"
+#include "QXmppRosterIq.h"
#include "profileDialog.h"
@@ -452,26 +454,16 @@ void mainDialog::showProfile(const QString& bareJid) if(bareJid.isEmpty())
return;
- profileDialog dlg(this);
+ profileDialog dlg(this, bareJid, m_xmppClient);
dlg.setBareJid(bareJid);
- dlg.setAvatar(m_vCardManager.getVCard(bareJid).imageOriginal);
+ if(!m_vCardManager.getVCard(bareJid).imageOriginal.isNull())
+ dlg.setAvatar(m_vCardManager.getVCard(bareJid).imageOriginal);
QStringList resources = m_xmppClient.rosterManager().getResources(bareJid);
dlg.setFullName(m_vCardManager.getVCard(bareJid).fullName);
- QString statusText;
- for(int i = 0; i < resources.count(); ++i)
- {
- QString resource = resources.at(i);
- statusText += "<B>"+ resource+ "</B>";
- statusText += "</B><BR>";
- QXmppPresence presence = m_xmppClient.rosterManager().getPresence(bareJid, resource);
- statusText += presenceToStatusText(presence);
-
- if(i < resources.count() - 1) // skip for the last item
- statusText += "<BR><BR>";
- }
- dlg.setStatusText(statusText);
+ if(m_vCardManager.getVCard(bareJid).fullName.isEmpty())
+ dlg.setFullName(m_xmppClient.rosterManager().getRosterEntry(bareJid).name());
dlg.exec();
}
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);
+}
+
diff --git a/examples/GuiClient/profileDialog.h b/examples/GuiClient/profileDialog.h index ddcdd876..57718202 100644 --- a/examples/GuiClient/profileDialog.h +++ b/examples/GuiClient/profileDialog.h @@ -2,27 +2,40 @@ #define PROFILEDIALOG_H
#include <QDialog>
+#include <QMap>
namespace Ui {
class profileDialog;
}
+class QXmppClient;
+class QXmppVersionIq;
+
class profileDialog : public QDialog
{
Q_OBJECT
public:
- explicit profileDialog(QWidget *parent = 0);
+ explicit profileDialog(QWidget *parent, const QString& bareJid, QXmppClient& client);
+ ~profileDialog();
+ void setClientRef(QXmppClient& m_xmppClient);
void setAvatar(const QImage&);
void setBareJid(const QString&);
void setFullName(const QString&);
void setStatusText(const QString&);
- ~profileDialog();
+private slots:
+ void versionReceived(const QXmppVersionIq&);
+
+private:
+ void updateText();
private:
Ui::profileDialog *ui;
+ QString m_bareJid;
+ QXmppClient& m_xmppClient; // reference to the active QXmppClient (No ownership)
+ QMap<QString, QXmppVersionIq> m_versions;
};
#endif // PROFILEDIALOG_H
diff --git a/examples/GuiClient/profileDialog.ui b/examples/GuiClient/profileDialog.ui index 8efe5e39..b21428a9 100644 --- a/examples/GuiClient/profileDialog.ui +++ b/examples/GuiClient/profileDialog.ui @@ -6,7 +6,7 @@ <rect>
<x>0</x>
<y>0</y>
- <width>238</width>
+ <width>297</width>
<height>174</height>
</rect>
</property>
@@ -42,7 +42,16 @@ </size>
</property>
<property name="text">
- <string>TextLabel</string>
+ <string/>
+ </property>
+ <property name="pixmap">
+ <pixmap resource="resources.qrc">:/icons/resource/avatar.png</pixmap>
+ </property>
+ <property name="scaledContents">
+ <bool>true</bool>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
</property>
</widget>
</item>
@@ -108,18 +117,24 @@ </layout>
</item>
<item>
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Close</set>
- </property>
- </widget>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Close</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
</item>
</layout>
</widget>
- <resources/>
+ <resources>
+ <include location="resources.qrc"/>
+ </resources>
<connections>
<connection>
<sender>buttonBox</sender>
|
