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 | |
| parent | 1639a23b507ac4f7c7a05d0322f9b5db7e687d79 (diff) | |
| download | qxmpp-0eabf95cf43148a45427475575aa5959af55ad51.tar.gz | |
integrate capsManager
Diffstat (limited to 'examples/GuiClient')
| -rw-r--r-- | examples/GuiClient/GuiClient.pro | 6 | ||||
| -rw-r--r-- | examples/GuiClient/mainDialog.cpp | 32 | ||||
| -rw-r--r-- | examples/GuiClient/mainDialog.h | 2 |
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; |
