summaryrefslogtreecommitdiffstats
path: root/kopete/protocols/jabber/libiris/001_last_activity.patch
blob: 4e91b8ef3bede80d4a9a8330c12cf0c126300bfe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
Index: iris/xmpp-im/xmpp_tasks.h
===================================================================
--- iris/xmpp-im/xmpp_tasks.h	(revision 419672)
+++ iris/xmpp-im/xmpp_tasks.h	(working copy)
@@ -195,6 +195,29 @@
 		Private *d;
 	};
 
+	class JT_GetLastActivity : public Task
+	{
+		Q_OBJECT
+	public:
+		JT_GetLastActivity(Task *);
+		~JT_GetLastActivity();
+
+		void get(const Jid &);
+
+		int seconds() const;
+		const QString &message() const;
+
+		void onGo();
+		bool take(const QDomElement &x);
+
+	private:
+		class Private;
+		Private *d;
+
+		QDomElement iq;
+		Jid jid;
+	};
+
 	class JT_GetServices : public Task
 	{
 		Q_OBJECT
Index: iris/xmpp-im/xmpp_tasks.cpp
===================================================================
--- iris/xmpp-im/xmpp_tasks.cpp	(revision 419672)
+++ iris/xmpp-im/xmpp_tasks.cpp	(working copy)
@@ -773,6 +773,74 @@
 
 
 //----------------------------------------------------------------------------
+// JT_GetLastActivity
+//----------------------------------------------------------------------------
+class JT_GetLastActivity::Private
+{
+public:
+	Private() {}
+
+	int seconds;
+	QString message;
+};
+
+JT_GetLastActivity::JT_GetLastActivity(Task *tqparent)
+:Task(tqparent)
+{
+	d = new Private;
+}
+
+JT_GetLastActivity::~JT_GetLastActivity()
+{
+	delete d;
+}
+
+void JT_GetLastActivity::get(const Jid &j)
+{
+	jid = j;
+	iq = createIQ(doc(), "get", jid.full(), id());
+	QDomElement query = doc()->createElement("query");
+	query.setAttribute("xmlns", "jabber:iq:last");
+	iq.appendChild(query);
+}
+
+int JT_GetLastActivity::seconds() const
+{
+	return d->seconds;
+}
+
+const QString &JT_GetLastActivity::message() const
+{
+	return d->message;
+}
+
+void JT_GetLastActivity::onGo()
+{
+	send(iq);
+}
+
+bool JT_GetLastActivity::take(const QDomElement &x)
+{
+	if(!iqVerify(x, jid, id()))
+		return false;
+
+	if(x.attribute("type") == "result") {
+		QDomElement q = queryTag(x);
+
+		d->message = q.text();
+		bool ok;
+		d->seconds = q.attribute("seconds").toInt(&ok);
+
+		setSuccess(ok);
+	}
+	else {
+		setError(x);
+	}
+
+	return true;
+}
+
+//----------------------------------------------------------------------------
 // JT_GetServices
 //----------------------------------------------------------------------------
 JT_GetServices::JT_GetServices(Task *tqparent)