diff options
Diffstat (limited to 'kopete/protocols/jabber/libiris/006_private_storage.patch')
-rw-r--r-- | kopete/protocols/jabber/libiris/006_private_storage.patch | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/kopete/protocols/jabber/libiris/006_private_storage.patch b/kopete/protocols/jabber/libiris/006_private_storage.patch new file mode 100644 index 00000000..288d24c5 --- /dev/null +++ b/kopete/protocols/jabber/libiris/006_private_storage.patch @@ -0,0 +1,130 @@ +Index: iris/xmpp-im/xmpp_tasks.h +=================================================================== +--- iris/xmpp-im/xmpp_tasks.h (revision 499691) ++++ iris/xmpp-im/xmpp_tasks.h (working copy) +@@ -459,6 +459,27 @@ + class Private; + Private *d; + }; ++ ++ class JT_PrivateStorage : public Task ++ { ++ Q_OBJECT ++ public: ++ JT_PrivateStorage(Task *parent); ++ ~JT_PrivateStorage(); ++ ++ void set(const QDomElement &); ++ void get(const QString &tag, const QString& xmlns); ++ ++ QDomElement element(); ++ ++ void onGo(); ++ bool take(const QDomElement &); ++ ++ private: ++ class Private; ++ Private *d; ++ }; ++ + } + + #endif +Index: iris/xmpp-im/xmpp_tasks.cpp +=================================================================== +--- iris/xmpp-im/xmpp_tasks.cpp (revision 499691) ++++ iris/xmpp-im/xmpp_tasks.cpp (working copy) +@@ -2028,3 +2028,93 @@ + send(tag); + setSuccess(); + } ++ ++ ++//---------------------------------------------------------------------------- ++// JT_PrivateStorage ++//---------------------------------------------------------------------------- ++class JT_PrivateStorage::Private ++{ ++ public: ++ Private() : type(-1) {} ++ ++ QDomElement iq; ++ QDomElement elem; ++ int type; ++}; ++ ++JT_PrivateStorage::JT_PrivateStorage(Task *parent) ++ :Task(parent) ++{ ++ d = new Private; ++} ++ ++JT_PrivateStorage::~JT_PrivateStorage() ++{ ++ delete d; ++} ++ ++void JT_PrivateStorage::get(const QString& tag, const QString& xmlns) ++{ ++ d->type = 0; ++ d->iq = createIQ(doc(), "get" , QString() , id() ); ++ QDomElement query = doc()->createElement("query"); ++ query.setAttribute("xmlns", "jabber:iq:private"); ++ d->iq.appendChild(query); ++ QDomElement s = doc()->createElement(tag); ++ if(!xmlns.isEmpty()) ++ s.setAttribute("xmlns", xmlns); ++ query.appendChild(s); ++} ++ ++void JT_PrivateStorage::set(const QDomElement& element) ++{ ++ d->type = 1; ++ d->elem=element; ++ QDomNode n=doc()->importNode(element,true); ++ ++ d->iq = createIQ(doc(), "set" , QString() , id() ); ++ QDomElement query = doc()->createElement("query"); ++ query.setAttribute("xmlns", "jabber:iq:private"); ++ d->iq.appendChild(query); ++ query.appendChild(n); ++} ++ ++void JT_PrivateStorage::onGo() ++{ ++ send(d->iq); ++} ++ ++bool JT_PrivateStorage::take(const QDomElement &x) ++{ ++ QString to = client()->host(); ++ if(!iqVerify(x, to, id())) ++ return false; ++ ++ if(x.attribute("type") == "result") { ++ if(d->type == 0) { ++ QDomElement q = queryTag(x); ++ for(QDomNode n = q.firstChild(); !n.isNull(); n = n.nextSibling()) { ++ QDomElement i = n.toElement(); ++ if(i.isNull()) ++ continue; ++ d->elem=i; ++ break; ++ } ++ } ++ setSuccess(); ++ return true; ++ } ++ else { ++ setError(x); ++ } ++ ++ return true; ++} ++ ++ ++QDomElement JT_PrivateStorage::element( ) ++{ ++ return d->elem; ++} ++ |