aboutsummaryrefslogtreecommitdiff
path: root/examples/GuiClient/mainDialog.cpp
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/mainDialog.cpp
parent1639a23b507ac4f7c7a05d0322f9b5db7e687d79 (diff)
downloadqxmpp-0eabf95cf43148a45427475575aa5959af55ad51.tar.gz
integrate capsManager
Diffstat (limited to 'examples/GuiClient/mainDialog.cpp')
-rw-r--r--examples/GuiClient/mainDialog.cpp32
1 files changed, 31 insertions, 1 deletions
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();
}