aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient
diff options
context:
space:
mode:
authorManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-23 07:02:33 +0000
committerManjeet Dahiya <manjeetdahiya@gmail.com>2010-09-23 07:02:33 +0000
commit0eabf95cf43148a45427475575aa5959af55ad51 (patch)
treeea19d67383b0fe1d59361826341f8b6c42ab6541 /examples/GuiClient
parent1639a23b507ac4f7c7a05d0322f9b5db7e687d79 (diff)
downloadqxmpp-0eabf95cf43148a45427475575aa5959af55ad51.tar.gz
integrate capsManager
Diffstat (limited to 'examples/GuiClient')
-rw-r--r--examples/GuiClient/GuiClient.pro6
-rw-r--r--examples/GuiClient/mainDialog.cpp32
-rw-r--r--examples/GuiClient/mainDialog.h2
3 files changed, 37 insertions, 3 deletions
diff --git a/examples/GuiClient/GuiClient.pro b/examples/GuiClient/GuiClient.pro
index 36e652be..751bef8c 100644
--- a/examples/GuiClient/GuiClient.pro
+++ b/examples/GuiClient/GuiClient.pro
@@ -22,7 +22,8 @@ SOURCES += main.cpp \
statusTextWidget.cpp \
customToolButton.cpp \
vCardManager.cpp \
- profileDialog.cpp
+ profileDialog.cpp \
+ capabilitiesCollection.cpp
HEADERS += messageGraphicsItem.h \
chatGraphicsScene.h \
@@ -42,7 +43,8 @@ HEADERS += messageGraphicsItem.h \
statusTextWidget.h \
customToolButton.h \
vCardManager.h \
- profileDialog.h
+ profileDialog.h \
+ capabilitiesCollection.h
FORMS += mainDialog.ui \
chatDialog.ui \
diff --git a/examples/GuiClient/mainDialog.cpp b/examples/GuiClient/mainDialog.cpp
index 2e8e360b..04bb76f4 100644
--- a/examples/GuiClient/mainDialog.cpp
+++ b/examples/GuiClient/mainDialog.cpp
@@ -28,6 +28,7 @@
#include "QXmppPresence.h"
#include "QXmppMessage.h"
#include "QXmppUtils.h"
+#include "QXmppConstants.h"
#include "utils.h"
#include "QXmppReconnectionManager.h"
#include "QXmppVCardManager.h"
@@ -42,7 +43,8 @@
mainDialog::mainDialog(QWidget *parent): QDialog(parent, Qt::Window),
ui(new Ui::mainDialogClass), m_rosterItemModel(this),
- m_rosterItemSortFilterModel(this), m_vCardManager(&m_xmppClient)
+ m_rosterItemSortFilterModel(this), m_vCardManager(&m_xmppClient),
+ m_capabilitiesCollection(&m_xmppClient)
{
ui->setupUi(this);
ui->pushButton_cancel->setDisabled(true);
@@ -176,10 +178,37 @@ void mainDialog::presenceChanged(const QString& bareJid, const QString& resource
if(!m_rosterItemModel.getRosterItemFromBareJid(bareJid))
return;
+ QString jid = bareJid + "/" + resource;
QMap<QString, QXmppPresence> presences = m_xmppClient.rosterManager().
getAllPresencesForBareJid(bareJid);
m_rosterItemModel.updatePresence(bareJid, presences);
+ QXmppPresence& pre = presences[resource];
+ QString nodeVer;
+ foreach(QXmppElement extension, pre.extensions())
+ {
+ if(extension.tagName() == "c" &&
+ extension.attribute("xmlns") == ns_capabilities)
+ {
+ QString node = extension.attribute("node");
+ QString ver = extension.attribute("node");
+ QString exts = extension.attribute("node");
+ nodeVer = node + "#" + ver;
+ if(!m_capabilitiesCollection.isCapabilityAvailable(nodeVer))
+ m_capabilitiesCollection.requestInfo(jid, nodeVer);
+ if(!exts.isEmpty())
+ {
+ foreach(QString ext, exts.split(" ", QString::SkipEmptyParts))
+ {
+ nodeVer = node + "#" + ext;
+ if(!m_capabilitiesCollection.isCapabilityAvailable(nodeVer))
+ m_capabilitiesCollection.requestInfo(jid, nodeVer);
+ }
+ }
+ }
+ }
+
+
// QXmppPresence::Type presenceType = presences.begin().value().getType();
// if(!m_vCardManager.isVCardAvailable(bareJid) &&
@@ -356,6 +385,7 @@ void mainDialog::signIn()
m_rosterItemModel.clear();
m_vCardManager.loadAllFromCache();
+ m_capabilitiesCollection.loadAllFromCache();
startConnection();
}
diff --git a/examples/GuiClient/mainDialog.h b/examples/GuiClient/mainDialog.h
index edb56ce5..e80dd756 100644
--- a/examples/GuiClient/mainDialog.h
+++ b/examples/GuiClient/mainDialog.h
@@ -34,6 +34,7 @@
#include "statusWidget.h"
#include "chatDialog.h"
#include "vCardManager.h"
+#include "capabilitiesCollection.h"
namespace Ui
{
@@ -86,6 +87,7 @@ private:
rosterItemSortFilterProxyModel m_rosterItemSortFilterModel;
statusWidget m_statusWidget;
vCardManager m_vCardManager;
+ capabilitiesCollection m_capabilitiesCollection;
// map of bare jids and respective chatdlg
QMap<QString, chatDialog*> m_chatDlgsList;