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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
|
<?xml version="1.0" ?>
<node name="/Channel_Interface_Group" xmlns:tp="http://telepathy.freedesktop.org/wiki/DbusSpec#extensions-v0">
<tp:copyright>Copyright (C) 2005, 2006 Collabora Limited</tp:copyright>
<tp:copyright>Copyright (C) 2005, 2006 Nokia Corporation</tp:copyright>
<tp:copyright>Copyright (C) 2006 INdT</tp:copyright>
<tp:license xmlns="http://www.w3.org/1999/xhtml">
<p>This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.</p>
<p>This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.</p>
<p>You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</p>
</tp:license>
<interface name="org.freedesktop.Telepathy.Channel.Interface.Group">
<tp:requires interface="org.freedesktop.Telepathy.Channel"/>
<method name="AddMembers">
<arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
An array of contact handles to invite to the channel
</tp:docstring>
</arg>
<arg direction="in" name="message" type="s">
<tp:docstring>
A string message, which can be blank if desired
</tp:docstring>
</arg>
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Invite all the given contacts into the channel, or accept requests for
channel membership for contacts on the pending local list.</p>
<p>A message may be provided along with the request, which will be sent
to the server if supported. See the CHANNEL_GROUP_FLAG_MESSAGE_ADD and
CHANNEL_GROUP_FLAG_MESSAGE_ACCEPT flags to see in which cases this
message should be provided.</p>
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
<tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
<tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
<tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
<tp:error name="org.freedesktop.Telepathy.Error.Channel.Full"/>
<tp:error name="org.freedesktop.Telepathy.Error.Channel.InviteOnly"/>
<tp:error name="org.freedesktop.Telepathy.Error.Channel.Banned"/>
</tp:possible-errors>
</method>
<method name="GetAllMembers">
<arg direction="out" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
array of handles of current members
</tp:docstring>
</arg>
<arg direction="out" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
array of handles of local pending members
</tp:docstring>
</arg>
<arg direction="out" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
array of handles of remote pending members
</tp:docstring>
</arg>
<tp:docstring>
Returns arrays of all current, local and remote pending channel
members.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
</tp:possible-errors>
</method>
<tp:flags name="Channel_Group_Flags" value-prefix="Channel_Group_Flag" type="u">
<tp:flag suffix="Can_Add" value="1">
<tp:docstring>
The AddMembers method can be used to add or invite members who are
not already in the local pending list (which is always valid).
</tp:docstring>
</tp:flag>
<tp:flag suffix="Can_Remove" value="2">
<tp:docstring>
The RemoveMembers method can be used to remove channel members
(removing those on the pending local list is always valid).
</tp:docstring>
</tp:flag>
<tp:flag suffix="Can_Rescind" value="4">
<tp:docstring>
The RemoveMembers method can be used on people on the remote
pending list.
</tp:docstring>
</tp:flag>
<tp:flag suffix="Message_Add" value="8">
<tp:docstring>
A message may be sent to the server when calling AddMembers on
contacts who are not currently pending members.
</tp:docstring>
</tp:flag>
<tp:flag suffix="Message_Remove" value="16">
<tp:docstring>
A message may be sent to the server when calling RemoveMembers on
contacts who are currently channel members.
</tp:docstring>
</tp:flag>
<tp:flag suffix="Message_Accept" value="32">
<tp:docstring>
A message may be sent to the server when calling AddMembers on
contacts who are locally pending.
</tp:docstring>
</tp:flag>
<tp:flag suffix="Message_Reject" value="64">
<tp:docstring>
A message may be sent to the server when calling RemoveMembers on
contacts who are locally pending.
</tp:docstring>
</tp:flag>
<tp:flag suffix="Message_Rescind" value="128">
<tp:docstring>
A message may be sent to the server when calling RemoveMembers on
contacts who are remote pending.
</tp:docstring>
</tp:flag>
<tp:flag suffix="Channel_Specific_Handles" value="256">
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>
The members of this group have handles which are specific to
this channel, and are not valid as general-purpose handles on
the connection. Depending on the channel, it may be possible to
call GetHandleOwners to find the owners of these handles, which
should be done if you wish to eg subscribe to the contact's
presence.
</p>
<p>
Connection managers must ensure that any given handle is not
simultaneously a general-purpose handle and a channel-specific
handle.
</p>
</tp:docstring>
</tp:flag>
<tp:flag suffix="Only_One_Group" value="512">
<tp:docstring>
Placing a contact in multiple groups of this type is not allowed
and will raise NotAvailable (on services where contacts may only
be in one user-defined group, user-defined groups will have
this flag).
</tp:docstring>
</tp:flag>
<tp:flag suffix="Handle_Owners_Not_Available" value="1024">
<tp:docstring>
In rooms with channel specific handles (ie Channel_Specific_Handles
flag is set), this flag indicates that none of the handle owners are
available, and that GetHandleOwners method will always return 0 for
channel members other than the self handle.
</tp:docstring>
</tp:flag>
</tp:flags>
<method name="GetGroupFlags">
<arg direction="out" type="u" tp:type="Channel_Group_Flags">
<tp:docstring>
The bitwise OR of zero or more values from ChannelGroupFlags
</tp:docstring>
</arg>
<tp:docstring>
Returns an integer representing the bitwise-OR of flags on this
channel. The user interface can use this to present information about
which operations are currently valid.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
</tp:possible-errors>
</method>
<method name="GetHandleOwners">
<arg direction="in" name="handles" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
A list of integer handles representing members of the channel
</tp:docstring>
</arg>
<arg direction="out" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
An array of integer handles representing the owner handles of
the given room members, in the same order, or 0 if the
owner is not available
</tp:docstring>
</arg>
<tp:docstring>
If the CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES flag is set on
the channel, then the handles of the group members are specific
to this channel, and are not meaningful in a connection-wide
context such as contact lists. This method allows you to find
the owner of the handle if it can be discovered in this channel,
or 0 if the owner is not available.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
<tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
<tp:error name="org.freedesktop.Telepathy.Error.NotAvailable">
<tp:docstring>
This channel doesn't have the CHANNEL_SPECIFIC_HANDLES flag,
so handles in this channel are globally meaningful and calling
this method is not necessary
</tp:docstring>
</tp:error>
<tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument">
<tp:docstring>
One of the given handles is not a member
</tp:docstring>
</tp:error>
</tp:possible-errors>
</method>
<method name="GetLocalPendingMembers">
<arg direction="out" type="au" tp:type="Contact_Handle[]"/>
<tp:docstring>
Returns an array of handles representing contacts requesting
channel membership and awaiting local approval with AddMembers.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
</tp:possible-errors>
</method>
<method name="GetLocalPendingMembersWithInfo">
<tp:added version="0.15.0" />
<tp:docstring>
Returns an array of structs containing handles representing contacts
requesting channel membership and awaiting local approval with
AddMembers.
</tp:docstring>
<arg direction="out" type="a(uuus)">
<tp:docstring>
An array of structs containing:
<ul>
<li>
A handle representing the contact requesting channel membership
</li>
<li>
A handle representing the contact making the request, or 0 if
unknown
</li>
<li>
The reason for the request: one of the values of
ChannelGroupChangeReason
</li>
<li>
A string message containing the reason for the request if any (or
blank if none)
</li>
</ul>
</tp:docstring>
</arg>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
</tp:possible-errors>
</method>
<method name="GetMembers">
<arg direction="out" type="au" tp:type="Contact_Handle[]"/>
<tp:docstring>
Returns an array of handles for the members of this channel.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
</tp:possible-errors>
</method>
<method name="GetRemotePendingMembers">
<arg direction="out" type="au" tp:type="Contact_Handle[]"/>
<tp:docstring>
Returns an array of handles representing contacts who have been
invited to the channel and are awaiting remote approval.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
</tp:possible-errors>
</method>
<method name="GetSelfHandle">
<arg direction="out" type="u" tp:type="Contact_Handle"/>
<tp:docstring>
Returns the handle for the user on this channel (which can also be a
local or remote pending member) or 0 if the user not a member at all
(which is likely to be the case, for instance, on Type.ContactList
channels). Note that this is different from the connection
GetSelfHandle on some protocols, so the value of this handle should
always be used with the methods of this interface.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
</tp:possible-errors>
</method>
<signal name="GroupFlagsChanged">
<arg name="added" type="u" tp:type="Channel_Group_Flags">
<tp:docstring>
A bitwise OR of the flags which have been set
</tp:docstring>
</arg>
<arg name="removed" type="u" tp:type="Channel_Group_Flags">
<tp:docstring>
A bitwise OR of the flags which have been cleared
</tp:docstring>
</arg>
<tp:docstring>
Emitted when the flags as returned by GetGroupFlags are changed.
The user interface should be updated as appropriate.
</tp:docstring>
</signal>
<tp:enum name="Channel_Group_Change_Reason" type="u">
<tp:enumvalue suffix="None" value="0">
<tp:docstring>
No reason was provided for this change.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Offline" value="1">
<tp:docstring>
The change is due to a user going offline.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Kicked" value="2">
<tp:docstring>
The change is due to a kick operation.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Busy" value="3">
<tp:docstring>
The change is due to a busy indication.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Invited" value="4">
<tp:docstring>
The change is due to an invitation.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Banned" value="5">
<tp:docstring>
The change is due to a kick+ban operation.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Error" value="6">
<tp:docstring>
The change is due to an error occurring.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Invalid_Contact" value="7">
<tp:docstring>
The change is because the requested contact does not exist.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="No_Answer" value="8">
<tp:docstring>
The change is because the requested contact did not respond.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Renamed" value="9">
<tp:docstring>
The change is because a contact's unique identifier changed.
There must be exactly one handle in the removed set and exactly
one handle in one of the added sets. The Renamed signal on the
Renaming interface will have been emitted for the same handles,
shortly before this MembersChanged signal is emitted.
</tp:docstring>
</tp:enumvalue>
<tp:enumvalue suffix="Permission_Denied" value="10">
<tp:docstring>
The change is because there was no permission to contact the
requested handle.
</tp:docstring>
</tp:enumvalue>
</tp:enum>
<signal name="MembersChanged">
<arg name="message" type="s">
<tp:docstring>
A string message from the server, or blank if not
</tp:docstring>
</arg>
<arg name="added" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
A list of members added to the channel
</tp:docstring>
</arg>
<arg name="removed" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
A list of members removed from the channel
</tp:docstring>
</arg>
<arg name="local_pending" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
A list of members who are pending local approval
</tp:docstring>
</arg>
<arg name="remote_pending" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
A list of members who are pending remote approval
</tp:docstring>
</arg>
<arg name="actor" type="u" tp:type="Contact_Handle">
<tp:docstring>
The contact handle of the person who made the change, or 0
if not known
</tp:docstring>
</arg>
<arg name="reason" type="u" tp:type="Channel_Group_Change_Reason">
<tp:docstring>
A reason for the change: one of the values of
ChannelGroupChangeReason
</tp:docstring>
</arg>
<tp:docstring>
Emitted when contacts join any of the three lists (members, local
pending or remote pending). Contacts are listed in the removed
list when they leave any of the three lists. There may also be
a message from the server regarding this change, which may be
displayed to the user if desired.
</tp:docstring>
</signal>
<method name="RemoveMembers">
<arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
An array of contact handles to remove from the channel
</tp:docstring>
</arg>
<arg direction="in" name="message" type="s">
<tp:docstring>
A string message, which can be blank if desired
</tp:docstring>
</arg>
<tp:docstring>
Requests the removal of contacts from a channel, reject their request
for channel membership on the pending local list, or rescind their
invitation on the pending remote list. A message may be provided along
with the request, which will be sent to the server if supported. See
the CHANNEL_GROUP_FLAG_MESSAGE_REMOVE,
CHANNEL_GROUP_FLAG_MESSAGE_REJECT and
CHANNEL_GROUP_FLAG_MESSAGE_RESCIND flags to see in which cases this
message should be provided.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
<tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
<tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
<tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
</tp:possible-errors>
</method>
<method name="RemoveMembersWithReason">
<arg direction="in" name="contacts" type="au" tp:type="Contact_Handle[]">
<tp:docstring>
An array of contact handles to remove from the channel
</tp:docstring>
</arg>
<arg direction="in" name="message" type="s">
<tp:docstring>
A string message, which can be blank if desired
</tp:docstring>
</arg>
<arg direction="in" name="reason" type="u"
tp:type="Channel_Group_Change_Reason">
<tp:docstring>
A reason for the change: one of the values of
ChannelGroupChangeReason
</tp:docstring>
</arg>
<tp:docstring>
As RemoveMembers, but a reason code may be provided where
appropriate. The reason code may be ignored if the underlying
protocol is unable to represent the given reason.
</tp:docstring>
<tp:possible-errors>
<tp:error name="org.freedesktop.Telepathy.Error.Disconnected"/>
<tp:error name="org.freedesktop.Telepathy.Error.NetworkError"/>
<tp:error name="org.freedesktop.Telepathy.Error.NotAvailable"/>
<tp:error name="org.freedesktop.Telepathy.Error.PermissionDenied"/>
<tp:error name="org.freedesktop.Telepathy.Error.InvalidHandle"/>
<tp:error name="org.freedesktop.Telepathy.Error.InvalidArgument">
<tp:docstring>
The provided reason code was invalid.
</tp:docstring>
</tp:error>
</tp:possible-errors>
</method>
<tp:docstring xmlns="http://www.w3.org/1999/xhtml">
<p>Interface for channels which have multiple members, and where the members
of the channel can change during its lifetime. Your presence in the channel
cannot be presumed by the channel's existence (for example, a channel you
may request membership of but your request may not be granted).</p>
<p>This interface implements three lists: a list of current members, and two
lists of local pending and remote pending members. Contacts on the remote
pending list have been invited to the channel, but the remote user has not
accepted the invitation. Contacts on the local pending list have requested
membership of the channel, but the local user of the framework must accept
their request before they may join. A single contact should never appear on
more than one of the three lists. The lists are empty when the channel is
created, and the MembersChanged signal should be emitted when information
is retrieved from the server, or changes occur.</p>
<p>Addition of members to the channel may be requested by using AddMembers. If
remote acknowledgement is required, use of the AddMembers method will cause
users to appear on the remote pending list. If no acknowledgement is
required, AddMembers will add contacts to the member list directly. If a
contact is awaiting authorisation on the local pending list, AddMembers
will grant their membership request.</p>
<p>Removal of contacts from the channel may be requested by using
RemoveMembers. If a contact is awaiting authorisation on the local pending
list, RemoveMembers will refuse their membership request. If a contact is
on the remote pending list but has not yet accepted the invitation,
RemoveMembers will rescind the request if possible.</p>
<p>It should not be presumed that the requester of a channel implementing this
interface is immediately granted membership, or indeed that they are a
member at all, unless they appear in the list. They may, for instance,
be placed into the remote pending list until a connection has been
established or the request acknowledged remotely.</p>
</tp:docstring>
</interface>
</node>
<!-- vim:set sw=2 sts=2 et ft=xml: -->
|