29
<!-- Generated by Doxygen 1.7.6.1 -->
30
<div id="nav-path" class="navpath">
32
<li class="navelem"><a class="el" href="a00724.html">Tp</a> </li>
33
<li class="navelem"><a class="el" href="a00728.html">Client</a> </li>
34
<li class="navelem"><a class="el" href="a00177.html">ConnectionInterfaceContactListInterface</a> </li>
29
<!-- Generated by Doxygen 1.8.5 -->
30
<div id="nav-path" class="navpath">
32
<li class="navelem"><a class="el" href="a00860.html">Tp</a></li><li class="navelem"><a class="el" href="a00177.html">ChannelDetails</a></li> </ul>
38
35
<div class="header">
39
36
<div class="summary">
40
<a href="#pub-slots">Public Slots</a> |
41
<a href="#signals">Signals</a> |
42
<a href="#pub-methods">Public Member Functions</a> |
43
<a href="#pub-static-methods">Static Public Member Functions</a> |
44
<a href="#pro-methods">Protected Member Functions</a> </div>
37
<a href="#pub-attribs">Public Attributes</a> |
38
<a href="a01143.html">List of all members</a> </div>
45
39
<div class="headertitle">
46
<div class="title">Tp::Client::ConnectionInterfaceContactListInterface Class Reference<div class="ingroups"><a class="el" href="a00745.html">Connection proxies</a></div></div> </div>
40
<div class="title">Tp::ChannelDetails Struct Reference<div class="ingroups"><a class="el" href="a00897.html">Structure types</a></div></div> </div>
47
41
</div><!--header-->
48
42
<div class="contents">
49
<!-- doxytag: class="Tp::Client::ConnectionInterfaceContactListInterface" --><!-- doxytag: inherits="Tp::AbstractInterface" -->
50
<p><code>#include <<a class="el" href="a00508_source.html">TelepathyQt/Connection</a>></code></p>
52
<p>Inherits <a class="el" href="a00037.html">Tp::AbstractInterface</a>.</p>
54
<p><a href="a01135.html">List of all members.</a></p>
55
<h2><a name="pub-slots"></a>
58
<li>QDBusPendingReply<br class="typebreak"/>
59
< <a class="el" href="a00191.html">Tp::ContactAttributesMap</a> > <a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes</a> (const QStringList &interfaces, bool hold, int timeout=-1)
60
<li>QDBusPendingReply <a class="el" href="a00177.html#adeae1e380bc1f9bc3342057d571f0b93">RequestSubscription</a> (const <a class="el" href="a00414.html">Tp::UIntList</a> &contacts, const QString &message, int timeout=-1)
61
<li>QDBusPendingReply <a class="el" href="a00177.html#a1632effbf59f0e746d32efe66cabae9a">AuthorizePublication</a> (const <a class="el" href="a00414.html">Tp::UIntList</a> &contacts, int timeout=-1)
62
<li>QDBusPendingReply <a class="el" href="a00177.html#a61a7630763ca10bd1bff8fa62e7dd7bb">RemoveContacts</a> (const <a class="el" href="a00414.html">Tp::UIntList</a> &contacts, int timeout=-1)
63
<li>QDBusPendingReply <a class="el" href="a00177.html#ab2b423b9376ec1c155ccf84e33356b45">Unsubscribe</a> (const <a class="el" href="a00414.html">Tp::UIntList</a> &contacts, int timeout=-1)
64
<li>QDBusPendingReply <a class="el" href="a00177.html#a6dfda782fbf203ff4f8d45d4a6206b39">Unpublish</a> (const <a class="el" href="a00414.html">Tp::UIntList</a> &contacts, int timeout=-1)
65
<li>QDBusPendingReply <a class="el" href="a00177.html#ad6f51368f4d87a17baae74d2a0334519">Download</a> (int timeout=-1)
67
<h2><a name="signals"></a>
70
<li>void <a class="el" href="a00177.html#ae3c1d17246c3ac4ecd47c381c03fec6a">ContactListStateChanged</a> (uint contactListState)
71
<li>void <a class="el" href="a00177.html#ae968799e729aff2d0c5d77946b62a54d">ContactsChangedWithID</a> (const <a class="el" href="a00210.html">Tp::ContactSubscriptionMap</a> &changes, const <a class="el" href="a00246.html">Tp::HandleIdentifierMap</a> &identifiers, const <a class="el" href="a00246.html">Tp::HandleIdentifierMap</a> &removals)
72
<li>void <a class="el" href="a00177.html#ab4f99743d64306ef318f39a9bdc59d20">ContactsChanged</a> (const <a class="el" href="a00210.html">Tp::ContactSubscriptionMap</a> &changes, const <a class="el" href="a00414.html">Tp::UIntList</a> &removals)
74
<h2><a name="pub-methods"></a>
75
Public Member Functions</h2>
77
<li><a class="el" href="a00177.html#a05e2e822142be17118de349ff38da013">ConnectionInterfaceContactListInterface</a> (const QString &busName, const QString &objectPath, QObject *parent=0)
78
<li><a class="el" href="a00177.html#a8d596a79288ae28e604e8aaf3714cbe8">ConnectionInterfaceContactListInterface</a> (const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)
79
<li><a class="el" href="a00177.html#a1d4df82fd1f68d396a7a3c85266ee9b2">ConnectionInterfaceContactListInterface</a> (<a class="el" href="a00216.html">Tp::DBusProxy</a> *proxy)
80
<li><a class="el" href="a00177.html#a86d745f71277bfcf655887afd9a7a100">ConnectionInterfaceContactListInterface</a> (const <a class="el" href="a00164.html">Tp::Client::ConnectionInterface</a> &mainInterface)
81
<li><a class="el" href="a00177.html#a45236d75788776727da3db43a20227d8">ConnectionInterfaceContactListInterface</a> (const <a class="el" href="a00164.html">Tp::Client::ConnectionInterface</a> &mainInterface, QObject *parent)
82
<li><a class="el" href="a00329.html">Tp::PendingVariant</a> * <a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">requestPropertyContactListState</a> () const
83
<li><a class="el" href="a00329.html">Tp::PendingVariant</a> * <a class="el" href="a00177.html#aeec2a0e273dd855f6da054ccde63a56d">requestPropertyContactListPersists</a> () const
84
<li><a class="el" href="a00329.html">Tp::PendingVariant</a> * <a class="el" href="a00177.html#a4bd8a495bb8c1cb9cd947c85df53c173">requestPropertyCanChangeContactList</a> () const
85
<li><a class="el" href="a00329.html">Tp::PendingVariant</a> * <a class="el" href="a00177.html#aa005471e8039d196cce840344e4c22b5">requestPropertyRequestUsesMessage</a> () const
86
<li><a class="el" href="a00329.html">Tp::PendingVariant</a> * <a class="el" href="a00177.html#a6133c9d773edbec143a5946c81ec2f2c">requestPropertyDownloadAtConnection</a> () const
87
<li><a class="el" href="a00330.html">Tp::PendingVariantMap</a> * <a class="el" href="a00177.html#a5c475329e6983af0f8a078a8bdbb5c0e">requestAllProperties</a> () const
89
<h2><a name="pub-static-methods"></a>
90
Static Public Member Functions</h2>
92
<li>static QLatin1String <a class="el" href="a00177.html#a6da850950e8f95621deade9d32433220">staticInterfaceName</a> ()
94
<h2><a name="pro-methods"></a>
95
Protected Member Functions</h2>
97
<li>virtual void <a class="el" href="a00177.html#abef53119d032bec10e74f408e7a2f1e8">invalidate</a> (<a class="el" href="a00216.html">Tp::DBusProxy</a> *, const QString &, const QString &)
99
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
100
<div class="textblock"><p>Proxy class providing a 1:1 mapping of the D-Bus interface "org.freedesktop.Telepathy.Connection.Interface.ContactList". </p>
101
</div><hr/><h2>Constructor & Destructor Documentation</h2>
102
<a class="anchor" id="a05e2e822142be17118de349ff38da013"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface" ref="a05e2e822142be17118de349ff38da013" args="(const QString &busName, const QString &objectPath, QObject *parent=0)" -->
103
<div class="memitem">
104
<div class="memproto">
105
<table class="memname">
107
<td class="memname"><a class="el" href="a00177.html#a05e2e822142be17118de349ff38da013">Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface</a> </td>
109
<td class="paramtype">const QString & </td>
110
<td class="paramname"><em>busName</em>, </td>
113
<td class="paramkey"></td>
115
<td class="paramtype">const QString & </td>
116
<td class="paramname"><em>objectPath</em>, </td>
119
<td class="paramkey"></td>
121
<td class="paramtype">QObject * </td>
122
<td class="paramname"><em>parent</em> = <code>0</code> </td>
132
<p>Creates a <a class="el" href="a00177.html">ConnectionInterfaceContactListInterface</a> associated with the given object on the session bus.</p>
133
<dl class="params"><dt><b>Parameters:</b></dt><dd>
134
<table class="params">
135
<tr><td class="paramname">busName</td><td>Name of the service the object is on. </td></tr>
136
<tr><td class="paramname">objectPath</td><td>Path to the object on the service. </td></tr>
137
<tr><td class="paramname">parent</td><td>Passed to the parent class constructor. </td></tr>
144
<a class="anchor" id="a8d596a79288ae28e604e8aaf3714cbe8"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface" ref="a8d596a79288ae28e604e8aaf3714cbe8" args="(const QDBusConnection &connection, const QString &busName, const QString &objectPath, QObject *parent=0)" -->
145
<div class="memitem">
146
<div class="memproto">
147
<table class="memname">
149
<td class="memname"><a class="el" href="a00177.html#a05e2e822142be17118de349ff38da013">Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface</a> </td>
151
<td class="paramtype">const QDBusConnection & </td>
152
<td class="paramname"><em>connection</em>, </td>
155
<td class="paramkey"></td>
157
<td class="paramtype">const QString & </td>
158
<td class="paramname"><em>busName</em>, </td>
161
<td class="paramkey"></td>
163
<td class="paramtype">const QString & </td>
164
<td class="paramname"><em>objectPath</em>, </td>
167
<td class="paramkey"></td>
169
<td class="paramtype">QObject * </td>
170
<td class="paramname"><em>parent</em> = <code>0</code> </td>
180
<p>Creates a <a class="el" href="a00177.html">ConnectionInterfaceContactListInterface</a> associated with the given object on the given bus.</p>
181
<dl class="params"><dt><b>Parameters:</b></dt><dd>
182
<table class="params">
183
<tr><td class="paramname">connection</td><td>The bus via which the object can be reached. </td></tr>
184
<tr><td class="paramname">busName</td><td>Name of the service the object is on. </td></tr>
185
<tr><td class="paramname">objectPath</td><td>Path to the object on the service. </td></tr>
186
<tr><td class="paramname">parent</td><td>Passed to the parent class constructor. </td></tr>
193
<a class="anchor" id="a1d4df82fd1f68d396a7a3c85266ee9b2"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface" ref="a1d4df82fd1f68d396a7a3c85266ee9b2" args="(Tp::DBusProxy *proxy)" -->
194
<div class="memitem">
195
<div class="memproto">
196
<table class="memname">
198
<td class="memname"><a class="el" href="a00177.html#a05e2e822142be17118de349ff38da013">Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface</a> </td>
200
<td class="paramtype"><a class="el" href="a00216.html">Tp::DBusProxy</a> * </td>
201
<td class="paramname"><em>proxy</em></td><td>)</td>
207
<p>Creates a <a class="el" href="a00177.html">ConnectionInterfaceContactListInterface</a> associated with the same object as the given proxy.</p>
208
<dl class="params"><dt><b>Parameters:</b></dt><dd>
209
<table class="params">
210
<tr><td class="paramname">proxy</td><td>The proxy to use. It will also be the QObject::parent() for this object. </td></tr>
217
<a class="anchor" id="a86d745f71277bfcf655887afd9a7a100"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface" ref="a86d745f71277bfcf655887afd9a7a100" args="(const Tp::Client::ConnectionInterface &mainInterface)" -->
218
<div class="memitem">
219
<div class="memproto">
220
<table class="memname">
222
<td class="memname"><a class="el" href="a00177.html#a05e2e822142be17118de349ff38da013">Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface</a> </td>
224
<td class="paramtype">const <a class="el" href="a00164.html">Tp::Client::ConnectionInterface</a> & </td>
225
<td class="paramname"><em>mainInterface</em></td><td>)</td>
226
<td><code> [explicit]</code></td>
231
<p>Creates a <a class="el" href="a00177.html">ConnectionInterfaceContactListInterface</a> associated with the same object as the given proxy. Additionally, the created proxy will have the same parent as the given proxy.</p>
232
<dl class="params"><dt><b>Parameters:</b></dt><dd>
233
<table class="params">
234
<tr><td class="paramname">mainInterface</td><td>The proxy to use. </td></tr>
241
<a class="anchor" id="a45236d75788776727da3db43a20227d8"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface" ref="a45236d75788776727da3db43a20227d8" args="(const Tp::Client::ConnectionInterface &mainInterface, QObject *parent)" -->
242
<div class="memitem">
243
<div class="memproto">
244
<table class="memname">
246
<td class="memname"><a class="el" href="a00177.html#a05e2e822142be17118de349ff38da013">Tp::Client::ConnectionInterfaceContactListInterface::ConnectionInterfaceContactListInterface</a> </td>
248
<td class="paramtype">const <a class="el" href="a00164.html">Tp::Client::ConnectionInterface</a> & </td>
249
<td class="paramname"><em>mainInterface</em>, </td>
252
<td class="paramkey"></td>
254
<td class="paramtype">QObject * </td>
255
<td class="paramname"><em>parent</em> </td>
265
<p>Creates a <a class="el" href="a00177.html">ConnectionInterfaceContactListInterface</a> associated with the same object as the given proxy. However, a different parent object can be specified.</p>
266
<dl class="params"><dt><b>Parameters:</b></dt><dd>
267
<table class="params">
268
<tr><td class="paramname">mainInterface</td><td>The proxy to use. </td></tr>
269
<tr><td class="paramname">parent</td><td>Passed to the parent class constructor. </td></tr>
276
<hr/><h2>Member Function Documentation</h2>
277
<a class="anchor" id="a6da850950e8f95621deade9d32433220"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::staticInterfaceName" ref="a6da850950e8f95621deade9d32433220" args="()" -->
278
<div class="memitem">
279
<div class="memproto">
280
<table class="memname">
282
<td class="memname">static QLatin1String <a class="el" href="a00177.html#a6da850950e8f95621deade9d32433220">Tp::Client::ConnectionInterfaceContactListInterface::staticInterfaceName</a> </td>
284
<td class="paramname"></td><td>)</td>
285
<td><code> [inline, static]</code></td>
290
<p>Returns the name of the interface "org.freedesktop.Telepathy.Connection.Interface.ContactList", which this class represents.</p>
291
<dl class="return"><dt><b>Returns:</b></dt><dd>The D-Bus interface name. </dd></dl>
295
<a class="anchor" id="a14b164c68a4855c311ff338c4981e8ae"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyContactListState" ref="a14b164c68a4855c311ff338c4981e8ae" args="() const " -->
296
<div class="memitem">
297
<div class="memproto">
298
<table class="memname">
300
<td class="memname"><a class="el" href="a00329.html">Tp::PendingVariant</a>* <a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyContactListState</a> </td>
302
<td class="paramname"></td><td>)</td>
303
<td> const<code> [inline]</code></td>
308
<p>Asynchronous getter for the remote object property <code>ContactListState</code> of type <code>uint</code>.</p>
309
<p>The progress made in retrieving the contact list. Change notification is via ContactListStateChanged.</p>
310
<dl class="return"><dt><b>Returns:</b></dt><dd>A pending variant which will emit finished when the property has been retrieved. </dd></dl>
314
<a class="anchor" id="aeec2a0e273dd855f6da054ccde63a56d"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyContactListPersists" ref="aeec2a0e273dd855f6da054ccde63a56d" args="() const " -->
315
<div class="memitem">
316
<div class="memproto">
317
<table class="memname">
319
<td class="memname"><a class="el" href="a00329.html">Tp::PendingVariant</a>* <a class="el" href="a00177.html#aeec2a0e273dd855f6da054ccde63a56d">Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyContactListPersists</a> </td>
321
<td class="paramname"></td><td>)</td>
322
<td> const<code> [inline]</code></td>
327
<p>Asynchronous getter for the remote object property <code>ContactListPersists</code> of type <code>bool</code>.</p>
329
<p>If true, presence subscriptions (in both directions) on this
330
connection are stored by the server or other infrastructure.</p>
332
<div class="rationale">
333
<p>XMPP, MSN, ICQ, etc. all behave like this.</p>
336
<p>If false, presence subscriptions on this connection are not
339
<div class="rationale">
340
<p>In SIMPLE (SIP), <em>clients</em> are expected to keep a record
341
of subscriptions, as described below. In link-local XMPP,
342
subscriptions are implicit (everyone on the local network receives
343
presence from everyone else) so nothing is ever stored.</p>
346
<p>If <a class="el" href="a00177.html#a4bd8a495bb8c1cb9cd947c85df53c173">CanChangeContactList </a>
347
is true, Telepathy clients (e.g. user interfaces or address books)
348
MAY keep a record of permission to publish and requests to subscribe
349
locally, and attempt to restore it for each Connection. If
350
ContactListPersists is false, clients MAY do this for all contacts;
351
if ContactListPersists is true, clients SHOULD NOT change the state
352
of contacts that were not changed locally.</p>
354
<div class="rationale">
355
<p>In SIMPLE (SIP), ContactListPersists is false, but
356
CanChangeContactList is true. Presence will not be received
357
unless clients renew any subscriptions they have for each
358
connection, in the way described. There is no server-side storage,
359
so clients have no alternative but to maintain independent contact
362
<p>In protocols like XMPP and MSN, it may be useful for clients to
363
queue up subscription requests or removals made while offline and
364
process them next time the connection is online. However, clients
365
should only replay the changes, rather than resetting the contact
366
list to match a stored copy, to avoid overwriting changes that
367
were made on the server.</p>
370
<p>Clients that replay requests like this SHOULD do so by calling
371
AuthorizePublication to pre-approve publication of presence to the
372
appropriate contacts, followed by RequestSubscription to request the
373
appropriate contacts' presences.</p>
375
<p>This property cannot change after the connection has moved to the
376
Connected state. Until then, its value is undefined, and it may
377
change at any time, without notification.</p>
378
<dl class="return"><dt><b>Returns:</b></dt><dd>A pending variant which will emit finished when the property has been retrieved. </dd></dl>
382
<a class="anchor" id="a4bd8a495bb8c1cb9cd947c85df53c173"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyCanChangeContactList" ref="a4bd8a495bb8c1cb9cd947c85df53c173" args="() const " -->
383
<div class="memitem">
384
<div class="memproto">
385
<table class="memname">
387
<td class="memname"><a class="el" href="a00329.html">Tp::PendingVariant</a>* <a class="el" href="a00177.html#a4bd8a495bb8c1cb9cd947c85df53c173">Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyCanChangeContactList</a> </td>
389
<td class="paramname"></td><td>)</td>
390
<td> const<code> [inline]</code></td>
395
<p>Asynchronous getter for the remote object property <code>CanChangeContactList</code> of type <code>bool</code>.</p>
397
<p>If true, presence subscription and publication can be changed
399
<a class="el" href="a00177.html#adeae1e380bc1f9bc3342057d571f0b93">RequestSubscription()</a> ,
400
<a class="el" href="a00177.html#a1632effbf59f0e746d32efe66cabae9a">AuthorizePublication()</a> and
401
<a class="el" href="a00177.html#a61a7630763ca10bd1bff8fa62e7dd7bb">RemoveContacts()</a> methods.</p>
403
<p>If false, all of those methods will always fail; they SHOULD raise
404
the error org.freedesktop.Telepathy.Error.NotImplemented.</p>
406
<div class="rationale">
407
<p>In XEP-0174 "Serverless Messaging" (link-local XMPP), presence is
408
implicitly published to everyone in the local subnet, so the user
409
cannot control their presence publication.</p>
412
<p>This property cannot change after the connection has moved to the
413
Connected state. Until then, its value is undefined, and it may
414
change at any time, without notification.</p>
415
<dl class="return"><dt><b>Returns:</b></dt><dd>A pending variant which will emit finished when the property has been retrieved. </dd></dl>
419
<a class="anchor" id="aa005471e8039d196cce840344e4c22b5"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyRequestUsesMessage" ref="aa005471e8039d196cce840344e4c22b5" args="() const " -->
420
<div class="memitem">
421
<div class="memproto">
422
<table class="memname">
424
<td class="memname"><a class="el" href="a00329.html">Tp::PendingVariant</a>* <a class="el" href="a00177.html#aa005471e8039d196cce840344e4c22b5">Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyRequestUsesMessage</a> </td>
426
<td class="paramname"></td><td>)</td>
427
<td> const<code> [inline]</code></td>
432
<p>Asynchronous getter for the remote object property <code>RequestUsesMessage</code> of type <code>bool</code>.</p>
434
<p>If true, the Message parameter to
435
<a class="el" href="a00177.html#adeae1e380bc1f9bc3342057d571f0b93">RequestSubscription()</a> is likely to be
436
significant, and user interfaces SHOULD prompt the user for a
437
message to send with the request; a message such as "I would like
438
to add you to my contact list", translated into the local user's
439
language, might make a suitable default.</p>
441
<div class="rationale">
442
<p>This matches user expectations in XMPP and ICQ, for instance.</p>
445
<p>If false, the parameter is ignored; user interfaces SHOULD avoid
446
prompting the user, and SHOULD pass an empty string to
447
RequestSubscription.</p>
449
<div class="rationale">
450
<p><em>FIXME: is there any such protocol?</em></p>
452
<dl class="return"><dt><b>Returns:</b></dt><dd>A pending variant which will emit finished when the property has been retrieved. </dd></dl>
456
<a class="anchor" id="a6133c9d773edbec143a5946c81ec2f2c"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyDownloadAtConnection" ref="a6133c9d773edbec143a5946c81ec2f2c" args="() const " -->
457
<div class="memitem">
458
<div class="memproto">
459
<table class="memname">
461
<td class="memname"><a class="el" href="a00329.html">Tp::PendingVariant</a>* <a class="el" href="a00177.html#a6133c9d773edbec143a5946c81ec2f2c">Tp::Client::ConnectionInterfaceContactListInterface::requestPropertyDownloadAtConnection</a> </td>
463
<td class="paramname"></td><td>)</td>
464
<td> const<code> [inline]</code></td>
469
<p>Asynchronous getter for the remote object property <code>DownloadAtConnection</code> of type <code>bool</code>.</p>
471
<p>If true, the contact list is automatically downloaded at
472
connection. If false, the contact list is only downloaded
473
when requested explicitely with
474
<a class="el" href="a00177.html#ad6f51368f4d87a17baae74d2a0334519">Download()</a> .</p>
476
<div class="rationale">
477
<p>Downloading the contact list uses bandwidth and is not always
478
necessary or desired. For example, a client could cache the
479
contact list from previous connections and accept less regular
480
updates, it could get the contact list from an out-of-band
481
protocol-specific way, or it could not need the contact list at
485
<p>Connection managers MUST default to true.</p>
487
<div class="rationale">
488
<p>If a connection manager starts supporting this property but
489
defaults to false, it would break all existing clients that don't
490
call <a class="el" href="a00177.html#ad6f51368f4d87a17baae74d2a0334519">Download()</a> .</p>
492
<dl class="return"><dt><b>Returns:</b></dt><dd>A pending variant which will emit finished when the property has been retrieved. </dd></dl>
496
<a class="anchor" id="a5c475329e6983af0f8a078a8bdbb5c0e"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::requestAllProperties" ref="a5c475329e6983af0f8a078a8bdbb5c0e" args="() const " -->
497
<div class="memitem">
498
<div class="memproto">
499
<table class="memname">
501
<td class="memname"><a class="el" href="a00330.html">Tp::PendingVariantMap</a>* <a class="el" href="a00177.html#a5c475329e6983af0f8a078a8bdbb5c0e">Tp::Client::ConnectionInterfaceContactListInterface::requestAllProperties</a> </td>
503
<td class="paramname"></td><td>)</td>
504
<td> const<code> [inline]</code></td>
509
<p>Request all of the <a class="el" href="a00729.html">DBus</a> properties on the interface.</p>
510
<dl class="return"><dt><b>Returns:</b></dt><dd>A pending variant map which will emit finished when the properties have been retrieved. </dd></dl>
514
<a class="anchor" id="a6e699cca4cc6a1dbaa22209e9a4e8037"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::GetContactListAttributes" ref="a6e699cca4cc6a1dbaa22209e9a4e8037" args="(const QStringList &interfaces, bool hold, int timeout=-1)" -->
515
<div class="memitem">
516
<div class="memproto">
517
<table class="memname">
519
<td class="memname">QDBusPendingReply<<a class="el" href="a00191.html">Tp::ContactAttributesMap</a>> <a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">Tp::Client::ConnectionInterfaceContactListInterface::GetContactListAttributes</a> </td>
521
<td class="paramtype">const QStringList & </td>
522
<td class="paramname"><em>interfaces</em>, </td>
525
<td class="paramkey"></td>
527
<td class="paramtype">bool </td>
528
<td class="paramname"><em>hold</em>, </td>
531
<td class="paramkey"></td>
533
<td class="paramtype">int </td>
534
<td class="paramname"><em>timeout</em> = <code>-1</code> </td>
539
<td></td><td><code> [inline, slot]</code></td>
544
<p>Begins a call to the D-Bus method <code>GetContactListAttributes</code> on the remote object.</p>
546
<p>Return some contact attributes for a list of contacts
547
associated with the user. This list MUST include at least:</p>
550
<li>all contacts whose <tp:token-ref>subscribe</tp:token-ref>
551
attribute is not No</li>
552
<li>all contacts whose <tp:token-ref>publish</tp:token-ref>
553
attribute is not No</li>
556
<p>but MAY contain other contacts.</p>
558
<div class="rationale">
559
<p>For instance, on XMPP, all contacts on the roster would appear
560
here even if they have subscription="none", unless there's
561
reason to believe the user does not want to see them (such as
562
having been blocked).</p>
565
<p>This list does not need to contain every visible contact: for
566
instance, contacts seen in XMPP or IRC chatrooms SHOULD NOT appear
567
here. Blocked contacts SHOULD NOT appear here, unless they still
568
have a non-<tt>No</tt> <tp:token-ref>subscribe</tp:token-ref> or
569
<tp:token-ref>publish</tp:token-ref> attribute
572
<div class="rationale">
573
<p>It's reasonable to assume that blocked contacts should not be
574
visible to the user unless they specifically go looking for them,
575
at least in protocols like XMPP where blocking a contact
576
suppresses presence.</p>
578
<p>Note that <em>timeout</em> is ignored as of now. It will be used once <a href="http://bugreports.qt.nokia.com/browse/QTBUG-11775">http://bugreports.qt.nokia.com/browse/QTBUG-11775</a> is fixed.</p>
579
<dl class="params"><dt><b>Parameters:</b></dt><dd>
580
<table class="params">
581
<tr><td class="paramname">interfaces</td><td>
582
<p>A list of strings indicating which D-Bus interfaces the calling
583
process is interested in. Equivalent to the corresponding argument
584
to <a class="el" href="a00178.html#a43164831038004bb1446384a72a203d6">ConnectionInterfaceContactsInterface::GetContactAttributes()</a> ,
585
except that if this list does not contain the ContactList
586
interface itself, it is treated as though that interface was also
589
<tr><td class="paramname">hold</td><td>
590
<p>If true, all handles that appear as keys in the result have been
591
held on behalf of the calling process, as if by a call to
592
<a class="el" href="a00164.html#a14f4cd0312e8b9c8fcd7ce369a983970">ConnectionInterface::HoldHandles()</a> .
593
(If <a class="el" href="a00164.html#a565a7efa781442d2c68f678402f16040">ConnectionInterface::HasImmortalHandles </a> is true, which SHOULD be the
594
case in all new connection managers, this has no effect.)</p>
596
<tr><td class="paramname">timeout</td><td>The timeout in milliseconds.</td></tr>
600
<dl class="return"><dt><b>Returns:</b></dt><dd></dd></dl>
602
<p>A dictionary mapping the contact handles to contact attributes,
603
equivalent to the result of <a class="el" href="a00178.html#a43164831038004bb1446384a72a203d6">ConnectionInterfaceContactsInterface::GetContactAttributes()</a> .</p>
607
<a class="anchor" id="adeae1e380bc1f9bc3342057d571f0b93"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::RequestSubscription" ref="adeae1e380bc1f9bc3342057d571f0b93" args="(const Tp::UIntList &contacts, const QString &message, int timeout=-1)" -->
608
<div class="memitem">
609
<div class="memproto">
610
<table class="memname">
612
<td class="memname">QDBusPendingReply <a class="el" href="a00177.html#adeae1e380bc1f9bc3342057d571f0b93">Tp::Client::ConnectionInterfaceContactListInterface::RequestSubscription</a> </td>
614
<td class="paramtype">const <a class="el" href="a00414.html">Tp::UIntList</a> & </td>
615
<td class="paramname"><em>contacts</em>, </td>
618
<td class="paramkey"></td>
620
<td class="paramtype">const QString & </td>
621
<td class="paramname"><em>message</em>, </td>
624
<td class="paramkey"></td>
626
<td class="paramtype">int </td>
627
<td class="paramname"><em>timeout</em> = <code>-1</code> </td>
632
<td></td><td><code> [inline, slot]</code></td>
637
<p>Begins a call to the D-Bus method <code>RequestSubscription</code> on the remote object.</p>
639
<p>Request that the given contacts allow the local user to
640
subscribe to their presence, i.e. that their subscribe attribute
643
<p>Connection managers SHOULD NOT attempt to enforce a
644
mutual-subscription policy (i.e. when this method is called, they
645
should not automatically allow the contacts to see the local user's
646
presence). User interfaces that require mutual subscription
647
MAY call <a class="el" href="a00177.html#a1632effbf59f0e746d32efe66cabae9a">AuthorizePublication()</a>
648
at the same time as this method.</p>
650
<div class="rationale">
651
<p>Whether to enforce mutual subscription is a matter of policy,
652
so it is left to the user interface and/or the server.</p>
655
<p>Before calling this method on a connection where <a class="el" href="a00166.html#a501f89d2ecea040095a7c537cdc7fbbc">ConnectionInterfaceAliasingInterface::GetAliasFlags()</a> returns the <code>User_Set</code> flag,
656
user interfaces SHOULD obtain, from the user, an alias to
657
identify the contact in future, and store it using <a class="el" href="a00166.html#a23e464b0eaae1d3f05647ecdec2c3200">ConnectionInterfaceAliasingInterface::SetAliases()</a> .</p>
660
prompted using the contact's current self-assigned nickname, or
661
something derived from the contact's (presumably self-assigned)
662
identifier, as a default, but these names chosen by the contact
663
SHOULD NOT be used without user approval.</p>
665
<div class="rationale">
666
<p>This is a generalization of
667
<a href="http://xmpp.org/extensions/xep-0165.html">XEP-0165 "Best Practices to Discourage JID Mimicking"</a>)
668
to protocols other than XMPP. A reasonable user interface for
669
this, as used in many XMPP clients, is to have a text entry
670
for the alias adjacent to the text entry for the identifier
674
<p>For contacts with subscribe=Yes, this method has no effect.
675
It MUST return successfully if all contacts are in this state.</p>
677
<p>For contacts with subscribe=Ask, this method SHOULD send a new
678
request, with the given message, if allowed by the underlying
681
<p>For contacts with subscribe=No or subscribe=Rejected, this method
682
SHOULD request that the contact allows the local user to subscribe
683
to their presence; in general, this will change their publish
684
attribute to Ask (although it could change directly to Yes in some
687
<p>Any state changes that immediately result from this request MUST
688
be signalled via <a class="el" href="a00177.html#ab4f99743d64306ef318f39a9bdc59d20">ContactsChanged()</a>
689
before this method returns.</p>
691
<div class="rationale">
692
<p>This makes it easy for user interfaces to see what practical
693
effect this method had.</p>
696
<p>If the remote contact accepts the request, their subscribe
697
attribute will later change from Ask to Yes.</p>
699
<p>If the remote contact explicitly rejects the request (in protocols
700
that allow this), their subscribe attribute will later change from
703
<p>If the subscription request is cancelled by the local user, the
704
contact's subscribe attribute will change from Ask to No.</p>
706
<p>This method SHOULD NOT be called until the
707
<a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to Success.
708
If the <a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to
709
Failure, this method SHOULD raise the same error as
710
<a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes()</a> .</p>
711
<p>Note that <em>timeout</em> is ignored as of now. It will be used once <a href="http://bugreports.qt.nokia.com/browse/QTBUG-11775">http://bugreports.qt.nokia.com/browse/QTBUG-11775</a> is fixed.</p>
712
<dl class="params"><dt><b>Parameters:</b></dt><dd>
713
<table class="params">
714
<tr><td class="paramname">contacts</td><td>
715
<p>One or more contacts to whom requests are to be sent.</p>
717
<tr><td class="paramname">message</td><td>
718
<p>An optional plain-text message from the user, to send to those
719
contacts with the subscription request. The
720
<a class="el" href="a00177.html#aa005471e8039d196cce840344e4c22b5">RequestUsesMessage </a> property
721
indicates whether this message will be used or ignored.</p>
723
<p>Clients SHOULD NOT send a non-empty message without first giving
724
the user an opportunity to edit it.</p>
726
<div class="rationale">
727
<p>These messages are typically presented to the remote contact
728
as if the user had typed them, so as a minimum, the user should be
729
allowed to see what the UI will be saying on their behalf.</p>
732
<p>Connections where this message is not useful MUST still allow it to
735
<tr><td class="paramname">timeout</td><td>The timeout in milliseconds. </td></tr>
742
<a class="anchor" id="a1632effbf59f0e746d32efe66cabae9a"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::AuthorizePublication" ref="a1632effbf59f0e746d32efe66cabae9a" args="(const Tp::UIntList &contacts, int timeout=-1)" -->
743
<div class="memitem">
744
<div class="memproto">
745
<table class="memname">
747
<td class="memname">QDBusPendingReply <a class="el" href="a00177.html#a1632effbf59f0e746d32efe66cabae9a">Tp::Client::ConnectionInterfaceContactListInterface::AuthorizePublication</a> </td>
749
<td class="paramtype">const <a class="el" href="a00414.html">Tp::UIntList</a> & </td>
750
<td class="paramname"><em>contacts</em>, </td>
753
<td class="paramkey"></td>
755
<td class="paramtype">int </td>
756
<td class="paramname"><em>timeout</em> = <code>-1</code> </td>
761
<td></td><td><code> [inline, slot]</code></td>
766
<p>Begins a call to the D-Bus method <code>AuthorizePublication</code> on the remote object.</p>
768
<p>For each of the given contacts, request that the local user's
769
presence is sent to that contact, i.e. that their publish attribute
772
<p>Connection managers SHOULD NOT attempt to enforce a
773
mutual-subscription policy (i.e. when this method is called, they
774
should not automatically request that the contacts allow the user to
775
subscribe to their presence). User interfaces that require mutual
776
subscription MAY call
777
<a class="el" href="a00177.html#adeae1e380bc1f9bc3342057d571f0b93">RequestSubscription()</a> at the same time
780
<div class="rationale">
781
<p>Whether to enforce mutual subscription is a matter of policy,
782
so it is left to the user interface and/or the server.</p>
785
<p>For contacts with publish=Yes, this method has no effect; it
786
MUST return successfully if all contacts given have this state.</p>
788
<p>For contacts with publish=Ask, this method accepts the
789
contact's request to see the local user's presence, changing
790
their publish attribute from Ask to Yes.</p>
792
<p>For contacts with publish=No, if the protocol allows it, this
793
method allows the contacts to see the local user's presence even
794
though they have not requested it, changing their publish attribute
795
from No to Yes. Otherwise, it merely records the fact that
796
presence publication to those contacts is allowed; if any of
797
those contacts ask to receive the local user's presence
798
later in the lifetime of the connection, the connection SHOULD
799
immediately allow them to do so, changing their publish
800
attribute directly from No to Yes.</p>
802
<div class="rationale">
803
<p>This makes it easy to implement the common UI policy that if
804
the user attempts to subscribe to a contact's presence, requests
805
for reciprocal subscription are automatically approved.</p>
808
<p>Any state changes that immediately result from this request MUST
809
be signalled via <a class="el" href="a00177.html#ab4f99743d64306ef318f39a9bdc59d20">ContactsChanged()</a>
810
before this method returns.</p>
812
<div class="rationale">
813
<p>This makes it easy for user interfaces to see what practical
814
effect this method had.</p>
817
<p>This method SHOULD NOT be called until the
818
<a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to Success.
819
If the <a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to
820
Failure, this method SHOULD raise the same error as
821
<a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes()</a> .</p>
822
<p>Note that <em>timeout</em> is ignored as of now. It will be used once <a href="http://bugreports.qt.nokia.com/browse/QTBUG-11775">http://bugreports.qt.nokia.com/browse/QTBUG-11775</a> is fixed.</p>
823
<dl class="params"><dt><b>Parameters:</b></dt><dd>
824
<table class="params">
825
<tr><td class="paramname">contacts</td><td>
826
<p>One or more contacts to authorize.</p>
828
<tr><td class="paramname">timeout</td><td>The timeout in milliseconds. </td></tr>
835
<a class="anchor" id="a61a7630763ca10bd1bff8fa62e7dd7bb"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::RemoveContacts" ref="a61a7630763ca10bd1bff8fa62e7dd7bb" args="(const Tp::UIntList &contacts, int timeout=-1)" -->
836
<div class="memitem">
837
<div class="memproto">
838
<table class="memname">
840
<td class="memname">QDBusPendingReply <a class="el" href="a00177.html#a61a7630763ca10bd1bff8fa62e7dd7bb">Tp::Client::ConnectionInterfaceContactListInterface::RemoveContacts</a> </td>
842
<td class="paramtype">const <a class="el" href="a00414.html">Tp::UIntList</a> & </td>
843
<td class="paramname"><em>contacts</em>, </td>
846
<td class="paramkey"></td>
848
<td class="paramtype">int </td>
849
<td class="paramname"><em>timeout</em> = <code>-1</code> </td>
854
<td></td><td><code> [inline, slot]</code></td>
859
<p>Begins a call to the D-Bus method <code>RemoveContacts</code> on the remote object.</p>
861
<p>Remove the given contacts from the contact list entirely. It is
862
protocol-dependent whether this works, and under which
865
<p>If possible, this method SHOULD set the contacts' subscribe and
866
publish attributes to No, remove any stored aliases for those
867
contacts, and remove the contacts from the result of
868
<a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes()</a> .</p>
870
<p>This method SHOULD succeed even if it was not possible to carry out
871
the request entirely or for all contacts (for instance, if there is an
872
outstanding request to subscribe to the contact's presence, and it's
873
not possible to cancel such requests). However, all signals that
874
immediately result from this method call MUST be emitted before it
875
returns, so that clients can interpret the result.</p>
877
<div class="rationale">
878
<p>User interfaces removing a contact from the contact list are
879
unlikely to want spurious failure notifications resulting from
880
limitations of a particular protocol. However, emitting the
881
signals first means that if a client does want to check exactly
882
what happened, it can wait for the method to return (while
883
applying change-notification signals to its local cache of the
884
contact list's state), then consult its local cache of the
885
contact list's state to see whether the contact is still there.</p>
888
<p>This method SHOULD NOT be called until the
889
<a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to Success.
890
If the <a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to
891
Failure, this method SHOULD raise the same error as
892
<a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes()</a> .</p>
893
<p>Note that <em>timeout</em> is ignored as of now. It will be used once <a href="http://bugreports.qt.nokia.com/browse/QTBUG-11775">http://bugreports.qt.nokia.com/browse/QTBUG-11775</a> is fixed.</p>
894
<dl class="params"><dt><b>Parameters:</b></dt><dd>
895
<table class="params">
896
<tr><td class="paramname">contacts</td><td>
897
<p>One or more contacts to remove.</p>
899
<tr><td class="paramname">timeout</td><td>The timeout in milliseconds. </td></tr>
906
<a class="anchor" id="ab2b423b9376ec1c155ccf84e33356b45"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::Unsubscribe" ref="ab2b423b9376ec1c155ccf84e33356b45" args="(const Tp::UIntList &contacts, int timeout=-1)" -->
907
<div class="memitem">
908
<div class="memproto">
909
<table class="memname">
911
<td class="memname">QDBusPendingReply <a class="el" href="a00177.html#ab2b423b9376ec1c155ccf84e33356b45">Tp::Client::ConnectionInterfaceContactListInterface::Unsubscribe</a> </td>
913
<td class="paramtype">const <a class="el" href="a00414.html">Tp::UIntList</a> & </td>
914
<td class="paramname"><em>contacts</em>, </td>
917
<td class="paramkey"></td>
919
<td class="paramtype">int </td>
920
<td class="paramname"><em>timeout</em> = <code>-1</code> </td>
925
<td></td><td><code> [inline, slot]</code></td>
930
<p>Begins a call to the D-Bus method <code>Unsubscribe</code> on the remote object.</p>
932
<p>Attempt to set the given contacts' subscribe attribute to No,
933
i.e. stop receiving their presence.</p>
935
<p>For contacts with subscribe=Ask, this attempts to cancel
936
an earlier request to subscribe to the contact's presence; for
937
contacts with subscribe=Yes, this attempts to
938
unsubscribe from the contact's presence.</p>
940
<p>As with <a class="el" href="a00177.html#a61a7630763ca10bd1bff8fa62e7dd7bb">RemoveContacts()</a> , this method
941
SHOULD succeed even if it was not possible to carry out the request
942
entirely or for all contacts; however, all signals that
943
immediately result from this method call MUST be emitted before it
946
<p>This method SHOULD NOT be called until the
947
<a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to Success.
948
If the <a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to
949
Failure, this method SHOULD raise the same error as
950
<a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes()</a> .</p>
951
<p>Note that <em>timeout</em> is ignored as of now. It will be used once <a href="http://bugreports.qt.nokia.com/browse/QTBUG-11775">http://bugreports.qt.nokia.com/browse/QTBUG-11775</a> is fixed.</p>
952
<dl class="params"><dt><b>Parameters:</b></dt><dd>
953
<table class="params">
954
<tr><td class="paramname">contacts</td><td>
955
<p>One or more contacts to remove.</p>
957
<tr><td class="paramname">timeout</td><td>The timeout in milliseconds. </td></tr>
964
<a class="anchor" id="a6dfda782fbf203ff4f8d45d4a6206b39"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::Unpublish" ref="a6dfda782fbf203ff4f8d45d4a6206b39" args="(const Tp::UIntList &contacts, int timeout=-1)" -->
965
<div class="memitem">
966
<div class="memproto">
967
<table class="memname">
969
<td class="memname">QDBusPendingReply <a class="el" href="a00177.html#a6dfda782fbf203ff4f8d45d4a6206b39">Tp::Client::ConnectionInterfaceContactListInterface::Unpublish</a> </td>
971
<td class="paramtype">const <a class="el" href="a00414.html">Tp::UIntList</a> & </td>
972
<td class="paramname"><em>contacts</em>, </td>
975
<td class="paramkey"></td>
977
<td class="paramtype">int </td>
978
<td class="paramname"><em>timeout</em> = <code>-1</code> </td>
983
<td></td><td><code> [inline, slot]</code></td>
988
<p>Begins a call to the D-Bus method <code>Unpublish</code> on the remote object.</p>
990
<p>Attempt to set the given contacts' publish attribute to No,
991
i.e. stop sending presence to them.</p>
993
<p>For contacts with publish=Ask, this method explicitly rejects the
994
contact's request to subscribe to the user's presence; for
995
contacts with publish=Yes, this method attempts to prevent the
996
user's presence from being received by the contact.</p>
998
<p>As with <a class="el" href="a00177.html#a61a7630763ca10bd1bff8fa62e7dd7bb">RemoveContacts()</a> , this method
999
SHOULD succeed even if it was not possible to carry out the request
1000
entirely or for all contacts; however, all signals that
1001
immediately result from this method call MUST be emitted before it
1004
<p>This method SHOULD NOT be called until the
1005
<a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to Success.
1006
If the <a class="el" href="a00177.html#a14b164c68a4855c311ff338c4981e8ae">ContactListState </a> changes to
1007
Failure, this method SHOULD raise the same error as
1008
<a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes()</a> .</p>
1009
<p>Note that <em>timeout</em> is ignored as of now. It will be used once <a href="http://bugreports.qt.nokia.com/browse/QTBUG-11775">http://bugreports.qt.nokia.com/browse/QTBUG-11775</a> is fixed.</p>
1010
<dl class="params"><dt><b>Parameters:</b></dt><dd>
1011
<table class="params">
1012
<tr><td class="paramname">contacts</td><td>
1013
<p>One or more contacts to remove.</p>
1015
<tr><td class="paramname">timeout</td><td>The timeout in milliseconds. </td></tr>
1022
<a class="anchor" id="ad6f51368f4d87a17baae74d2a0334519"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::Download" ref="ad6f51368f4d87a17baae74d2a0334519" args="(int timeout=-1)" -->
1023
<div class="memitem">
1024
<div class="memproto">
1025
<table class="memname">
1027
<td class="memname">QDBusPendingReply <a class="el" href="a00177.html#ad6f51368f4d87a17baae74d2a0334519">Tp::Client::ConnectionInterfaceContactListInterface::Download</a> </td>
1029
<td class="paramtype">int </td>
1030
<td class="paramname"><em>timeout</em> = <code>-1</code></td><td>)</td>
1031
<td><code> [inline, slot]</code></td>
1035
<div class="memdoc">
1036
<p>Begins a call to the D-Bus method <code>Download</code> on the remote object.</p>
1038
<p>Download the contact list from the server. If
1039
<a class="el" href="a00177.html#a6133c9d773edbec143a5946c81ec2f2c">DownloadAtConnection </a> is true,
1040
Download does nothing.</p>
1041
<p>Note that <em>timeout</em> is ignored as of now. It will be used once <a href="http://bugreports.qt.nokia.com/browse/QTBUG-11775">http://bugreports.qt.nokia.com/browse/QTBUG-11775</a> is fixed.</p>
1042
<dl class="params"><dt><b>Parameters:</b></dt><dd>
1043
<table class="params">
1044
<tr><td class="paramname">timeout</td><td>The timeout in milliseconds. </td></tr>
1051
<a class="anchor" id="ae3c1d17246c3ac4ecd47c381c03fec6a"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::ContactListStateChanged" ref="ae3c1d17246c3ac4ecd47c381c03fec6a" args="(uint contactListState)" -->
1052
<div class="memitem">
1053
<div class="memproto">
1054
<table class="memname">
1056
<td class="memname">void <a class="el" href="a00177.html#ae3c1d17246c3ac4ecd47c381c03fec6a">Tp::Client::ConnectionInterfaceContactListInterface::ContactListStateChanged</a> </td>
1058
<td class="paramtype">uint </td>
1059
<td class="paramname"><em>contactListState</em></td><td>)</td>
1060
<td><code> [signal]</code></td>
1064
<div class="memdoc">
1065
<p>Represents the signal <code>ContactListStateChanged</code> on the remote object.</p>
1066
<p>Emitted when ContactListState changes.</p>
1067
<dl class="params"><dt><b>Parameters:</b></dt><dd>
1068
<table class="params">
1069
<tr><td class="paramname">contactListState</td><td>The new value of ContactListState. </td></tr>
1076
<a class="anchor" id="ae968799e729aff2d0c5d77946b62a54d"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::ContactsChangedWithID" ref="ae968799e729aff2d0c5d77946b62a54d" args="(const Tp::ContactSubscriptionMap &changes, const Tp::HandleIdentifierMap &identifiers, const Tp::HandleIdentifierMap &removals)" -->
1077
<div class="memitem">
1078
<div class="memproto">
1079
<table class="memname">
1081
<td class="memname">void <a class="el" href="a00177.html#ae968799e729aff2d0c5d77946b62a54d">Tp::Client::ConnectionInterfaceContactListInterface::ContactsChangedWithID</a> </td>
1083
<td class="paramtype">const <a class="el" href="a00210.html">Tp::ContactSubscriptionMap</a> & </td>
1084
<td class="paramname"><em>changes</em>, </td>
1087
<td class="paramkey"></td>
1089
<td class="paramtype">const <a class="el" href="a00246.html">Tp::HandleIdentifierMap</a> & </td>
1090
<td class="paramname"><em>identifiers</em>, </td>
1093
<td class="paramkey"></td>
1095
<td class="paramtype">const <a class="el" href="a00246.html">Tp::HandleIdentifierMap</a> & </td>
1096
<td class="paramname"><em>removals</em> </td>
1101
<td></td><td><code> [signal]</code></td>
1105
<div class="memdoc">
1106
<p>Represents the signal <code>ContactsChangedWithID</code> on the remote object.</p>
1108
<p>Emitted when the contact list becomes available, when contacts'
1109
basic stored properties change, when new contacts are added to the
1110
list that would be returned by
1111
<a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes()</a> ,
1112
or when contacts are removed from that list.</p>
1114
<div class="rationale">
1115
<p>This provides change notification for that list, and for
1116
contacts' <tp:token-ref>subscribe</tp:token-ref>,
1117
<tp:token-ref>publish</tp:token-ref> and
1118
<tp:token-ref>publish-request</tp:token-ref> attributes.</p>
1121
<p>Connection managers SHOULD also emit this signal when a contact
1122
requests that the user's presence is published to them, even if
1123
that contact's <tp:token>publish</tp:token> attribute is already
1124
Ask and the <tp:token>publish-request</tp:token> has not changed.</p>
1126
<div class="rationale">
1127
<p>If the same contact sends 10 identical requests, 10 identical
1128
signals should be emitted.</p>
1130
<dl class="params"><dt><b>Parameters:</b></dt><dd>
1131
<table class="params">
1132
<tr><td class="paramname">changes</td><td>The new subscribe, publish and publish-request attributes of all the contacts that have been added, and all the contacts for which those attributes have changed.</td></tr>
1133
<tr><td class="paramname">identifiers</td><td>
1134
The identifiers of the contacts in the <var>Changes</var> map.
1136
<tr><td class="paramname">removals</td><td>
1137
The contacts that have been removed from the list that would be
1139
<a class="el" href="a00177.html#a6e699cca4cc6a1dbaa22209e9a4e8037">GetContactListAttributes()</a> .
1140
This also implies that they have subscribe = No and publish = No;
1141
contacts MUST NOT be listed both here and in <var>Changes</var>.
1149
<a class="anchor" id="ab4f99743d64306ef318f39a9bdc59d20"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::ContactsChanged" ref="ab4f99743d64306ef318f39a9bdc59d20" args="(const Tp::ContactSubscriptionMap &changes, const Tp::UIntList &removals)" -->
1150
<div class="memitem">
1151
<div class="memproto">
1152
<table class="memname">
1154
<td class="memname">void <a class="el" href="a00177.html#ab4f99743d64306ef318f39a9bdc59d20">Tp::Client::ConnectionInterfaceContactListInterface::ContactsChanged</a> </td>
1156
<td class="paramtype">const <a class="el" href="a00210.html">Tp::ContactSubscriptionMap</a> & </td>
1157
<td class="paramname"><em>changes</em>, </td>
1160
<td class="paramkey"></td>
1162
<td class="paramtype">const <a class="el" href="a00414.html">Tp::UIntList</a> & </td>
1163
<td class="paramname"><em>removals</em> </td>
1168
<td></td><td><code> [signal]</code></td>
1172
<div class="memdoc">
1173
<p>Represents the signal <code>ContactsChanged</code> on the remote object.</p>
1175
<p>Emitted immediately after
1176
<a class="el" href="a00177.html#ae968799e729aff2d0c5d77946b62a54d">ContactsChangedWithID()</a> , under the same
1179
<p>If clients receive this signal without first receiving a
1180
corresponding <a class="el" href="a00177.html#ae968799e729aff2d0c5d77946b62a54d">ContactsChangedWithID()</a> ,
1181
they MUST assume that only this signal will be emitted.</p>
1182
<dl class="params"><dt><b>Parameters:</b></dt><dd>
1183
<table class="params">
1184
<tr><td class="paramname">changes</td><td>The same as the corresponding argument to ContactsChangedWithID.</td></tr>
1185
<tr><td class="paramname">removals</td><td>The same as the corresponding argument to ContactsChangedWithID, except that it only includes handles and not identifiers. </td></tr>
1192
<a class="anchor" id="abef53119d032bec10e74f408e7a2f1e8"></a><!-- doxytag: member="Tp::Client::ConnectionInterfaceContactListInterface::invalidate" ref="abef53119d032bec10e74f408e7a2f1e8" args="(Tp::DBusProxy *, const QString &, const QString &)" -->
1193
<div class="memitem">
1194
<div class="memproto">
1195
<table class="memname">
1197
<td class="memname">void <a class="el" href="a00177.html#abef53119d032bec10e74f408e7a2f1e8">Tp::Client::ConnectionInterfaceContactListInterface::invalidate</a> </td>
1199
<td class="paramtype"><a class="el" href="a00216.html">Tp::DBusProxy</a> * </td>
1200
<td class="paramname"><em>proxy</em>, </td>
1203
<td class="paramkey"></td>
1205
<td class="paramtype">const QString & </td>
1206
<td class="paramname"><em>error</em>, </td>
1209
<td class="paramkey"></td>
1211
<td class="paramtype">const QString & </td>
1212
<td class="paramname"><em>message</em> </td>
1217
<td></td><td><code> [protected, virtual]</code></td>
1221
<div class="memdoc">
1223
<p>Reimplemented from <a class="el" href="a00037.html#a79dde56ba44455f47c7c354ada07467a">Tp::AbstractInterface</a>.</p>
44
<p><code>#include <<a class="el" href="a00856_source.html">TelepathyQt/Types</a>></code></p>
45
<table class="memberdecls">
46
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
47
Public Attributes</h2></td></tr>
48
<tr class="memitem:a8b7a7ad095bcb6ad847c67fac177f18c"><td class="memItemLeft" align="right" valign="top">QDBusObjectPath </td><td class="memItemRight" valign="bottom"><a class="el" href="a00177.html#a8b7a7ad095bcb6ad847c67fac177f18c">channel</a></td></tr>
49
<tr class="separator:a8b7a7ad095bcb6ad847c67fac177f18c"><td class="memSeparator" colspan="2"> </td></tr>
50
<tr class="memitem:a58ea2d20c6fd914c0c91327e44d87554"><td class="memItemLeft" align="right" valign="top">QVariantMap </td><td class="memItemRight" valign="bottom"><a class="el" href="a00177.html#a58ea2d20c6fd914c0c91327e44d87554">properties</a></td></tr>
51
<tr class="separator:a58ea2d20c6fd914c0c91327e44d87554"><td class="memSeparator" colspan="2"> </td></tr>
53
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
54
<div class="textblock"><p>Structure type generated from the specification.</p>
55
<p>Enough details of a channel that clients can work out how to dispatch or handle it. </p>
56
</div><h2 class="groupheader">Member Data Documentation</h2>
57
<a class="anchor" id="a8b7a7ad095bcb6ad847c67fac177f18c"></a>
59
<div class="memproto">
60
<table class="memname">
62
<td class="memname">QDBusObjectPath Tp::ChannelDetails::channel</td>
65
</div><div class="memdoc">
66
<p>The object path of the channel. </p>
70
<a class="anchor" id="a58ea2d20c6fd914c0c91327e44d87554"></a>
72
<div class="memproto">
73
<table class="memname">
75
<td class="memname">QVariantMap Tp::ChannelDetails::properties</td>
78
</div><div class="memdoc">
80
<p>Properties of the channel.</p>
82
<p>Connection managers MUST NOT include properties in this mapping
83
if their values can change. Clients MUST ignore properties
84
that appear in this mapping if their values can change.</p>
86
<div class="rationale">
87
<p>If properties that could change were included, the following
88
race condition would be likely to exist in some cases:</p>
91
<li>NewChannels or Get("Channels") includes a property P with
93
<li>Client creates a proxy object for the channel</li>
94
<li>The value of P changes to V2</li>
95
<li>Client connects to PChanged signal</li>
96
<li>Client should call Get("P") or GetAll here, to avoid the
97
race, but client's author has forgotten to do so</li>
98
<li>Proxy object thinks P == V1, but actually P == V2</li>
101
<p>We've taken the opportunity to make the API encourage the
102
client author to get it right. Where possible, we intend that
103
properties whose value will be used in channel dispatching
104
or other "early" processing will be defined so that they are
105
immutable (can never change).</p>
108
<p>Each dictionary MUST contain the keys
109
<a class="el" href="">ChannelInterface::ChannelType </a> ,
110
<a class="el" href="">ChannelInterface::TargetHandleType </a> ,
111
<a class="el" href="">ChannelInterface::TargetHandle </a> ,
112
<a class="el" href="">ChannelInterface::TargetID </a>
114
<a class="el" href="">ChannelInterface::Requested </a> .
117
<div class="rationale">
118
<p>We expect these to be crucial to the channel-dispatching
1227
124
</div><!-- contents -->
1228
125
<p /><address><hr /><div align="center">
1229
126
<table width="100%" cellspacing="0" border="0"><tr class="address">
1230
127
<td width="30%">Copyright © 2008-2011 Collabora Ltd. and Nokia Corporation</td>
1231
<td width="30%" align="right"><div align="right">Telepathy-Qt 0.9.3</div></td>
128
<td width="30%" align="right"><div align="right">Telepathy-Qt 0.9.6.1</div></td>
1232
129
</tr></table></div></address>