diff options
| author | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-23 07:02:33 +0000 |
|---|---|---|
| committer | Manjeet Dahiya <manjeetdahiya@gmail.com> | 2010-09-23 07:02:33 +0000 |
| commit | 0eabf95cf43148a45427475575aa5959af55ad51 (patch) | |
| tree | ea19d67383b0fe1d59361826341f8b6c42ab6541 /examples/GuiClient/mainDialog.cpp | |
| parent | 1639a23b507ac4f7c7a05d0322f9b5db7e687d79 (diff) | |
| download | qxmpp-0eabf95cf43148a45427475575aa5959af55ad51.tar.gz | |
integrate capsManager
Diffstat (limited to 'examples/GuiClient/mainDialog.cpp')
| -rw-r--r-- | examples/GuiClient/mainDialog.cpp | 32 |
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(); } |
