You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
2.7 KiB
131 lines
2.7 KiB
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;
|
|
+}
|
|
+
|