[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdenetwork/kopete/protocols/jabber
From: Pali Rohár <pali.rohar () gmail ! com>
Date: 2012-12-11 0:46:57
Message-ID: 20121211004657.17ACCAC867 () svn ! kde ! org
[Download RAW message or body]
SVN commit 1328049 by pali:
Jabber Capabilities Manager - Added support for hash attribute
Kopete Jabber protocol has support only for legacy XEP-0115
so report Client Version only if hash attribute is not specified
and report Client Name only if identity category is "client"
M +32 -12 jabbercapabilitiesmanager.cpp
M +7 -2 jabbercapabilitiesmanager.h
--- trunk/KDE/kdenetwork/kopete/protocols/jabber/jabbercapabilitiesmanager.cpp \
#1328048:1328049 @@ -41,8 +41,8 @@
JabberCapabilitiesManager::Capabilities::Capabilities()
{}
-JabberCapabilitiesManager::Capabilities::Capabilities(const QString& node, const \
QString& version, const QString& extensions)
- : m_node(node), m_version(version), m_extensions(extensions)
+JabberCapabilitiesManager::Capabilities::Capabilities(const QString& node, const \
QString& version, const QString& extensions, const QString& hash) + : m_node(node), \
m_version(version), m_extensions(extensions), m_hash(hash) {}
const QString& JabberCapabilitiesManager::Capabilities::node() const
@@ -60,16 +60,21 @@
return m_extensions;
}
+const QString& JabberCapabilitiesManager::Capabilities::hash() const
+{
+ return m_hash;
+}
+
JabberCapabilitiesManager::CapabilitiesList \
JabberCapabilitiesManager::Capabilities::flatten() const {
CapabilitiesList capsList;
- capsList.append( Capabilities(node(), version(), version()) );
+ capsList.append( Capabilities(node(), version(), version(), hash()) );
QStringList extensionList = extensions().split(' ');
foreach(QStringList::const_reference str, extensionList)
{
- capsList.append( Capabilities(node(), version(), str) );
+ capsList.append( Capabilities(node(), version(), str, hash()) );
}
return capsList;
@@ -77,7 +82,7 @@
bool JabberCapabilitiesManager::Capabilities::operator==(const Capabilities &other) \
const {
- return (node() == other.node() && version() == other.version() && extensions() == \
other.extensions()); + return (node() == other.node() && version() == other.version() \
&& extensions() == other.extensions() && hash() == other.hash()); }
bool JabberCapabilitiesManager::Capabilities::operator!=(const Capabilities &other) \
const @@ -89,7 +94,8 @@
{
return (node() != other.node() ? node() < other.node() :
(version() != other.version() ? version() < other.version() :
- extensions() < other.extensions()));
+ (extensions() != other.extensions() ? extensions() < other.extensions() :
+ hash() < other.hash())));
}
//END Capabilities
@@ -356,8 +362,8 @@
if( jid.compare(account->client()->jid(), false) )
return;
- QString node = status.capsNode(), version = status.capsVersion(), extensions = \
status.capsExt();
- Capabilities capabilities( node, version, extensions );
+ QString node = status.capsNode(), version = status.capsVersion(), extensions = \
status.capsExt(), hash = status.capsHash(); + Capabilities capabilities( node, \
version, extensions, hash );
// Check if the capabilities was really updated(i.e the content is different)
if( d->jidCapabilitiesMap[jid.full()] != capabilities)
@@ -457,7 +463,7 @@
Capabilities jidCapabilities = d->jidCapabilitiesMap[jid.full()];
if( jidCapabilities.node() == node )
{
- Capabilities capabilities(node, jidCapabilities.version(), extensions);
+ Capabilities capabilities(node, jidCapabilities.version(), extensions, \
jidCapabilities.hash());
if( discoInfo->success() )
{
@@ -548,7 +554,7 @@
{
CapabilitiesInformation info;
info.fromXml(element);
- Capabilities entityCaps( \
element.attribute("node"),element.attribute("ver"),element.attribute("ext") ); \
+ Capabilities entityCaps( \
element.attribute("node"),element.attribute("ver"),element.attribute("ext"),element.attribute("hash") \
); d->capabilitiesInformationMap[entityCaps] = info;
}
else
@@ -585,8 +591,18 @@
if( capabilitiesEnabled(jid) )
{
Capabilities caps = d->jidCapabilitiesMap[jid.full()];
- QString name = d->capabilitiesInformationMap[Capabilities(caps.node(),caps.version(),caps.version())].identities().first().name;
+ const XMPP::DiscoItem::Identities &identities = \
d->capabilitiesInformationMap[Capabilities(caps.node(),caps.version(),caps.version(),caps.hash())].identities();
+ QString name;
+ for ( int i = 0; i < identities.size(); ++i )
+ {
+ if ( identities[i].category == "client" && ! identities[i].name.isEmpty() )
+ {
+ name = identities[i].name;
+ break;
+ }
+ }
+
// Try to be intelligent about the name
/*if (name.isEmpty()) {
name = cs.node();
@@ -612,7 +628,10 @@
QString JabberCapabilitiesManager::clientVersion(const Jid& jid) const
{
- return (capabilitiesEnabled(jid) ? d->jidCapabilitiesMap[jid.full()].version() : \
QString()); + if (!capabilitiesEnabled(jid))
+ return QString();
+ else
+ return (d->jidCapabilitiesMap[jid.full()].hash().isEmpty() ? \
d->jidCapabilitiesMap[jid.full()].version() : QString()); }
void JabberCapabilitiesManager::saveInformation()
@@ -632,6 +651,7 @@
info.setAttribute("node",it.key().node());
info.setAttribute("ver",it.key().version());
info.setAttribute("ext",it.key().extensions());
+ info.setAttribute("hash",it.key().hash());
capabilities.appendChild(info);
}
--- trunk/KDE/kdenetwork/kopete/protocols/jabber/jabbercapabilitiesmanager.h \
#1328048:1328049 @@ -140,8 +140,9 @@
* @param node the node
* @param version the version
* @param extensions the list of extensions (separated by spaces)
+ * @param hash the hash
*/
- Capabilities(const QString &node, const QString &version, const QString \
&extensions); + Capabilities(const QString &node, const QString &version, const \
QString &extensions, const QString &hash); /**
* Returns the node of the capabilities specification.
*/
@@ -155,6 +156,10 @@
*/
const QString& extensions() const;
/**
+ * @brief Returns the hash of the capabilities specification.
+ */
+ const QString& hash() const;
+ /**
* \brief Flattens the caps specification into the set of 'simple' \
specifications.
* A 'simple' specification is a specification with exactly one extension,
* or with the version number as the extension.
@@ -172,7 +177,7 @@
bool operator<(const Capabilities&) const;
private:
- QString m_node, m_version, m_extensions;
+ QString m_node, m_version, m_extensions, m_hash;
};
class CapabilitiesInformation
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic