From 1473e1f8f782a263ec1fbcd21efa978651da0a42 Mon Sep 17 00:00:00 2001
From: Simon McVittie 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. 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
+Lesser General Public License for more details. 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.
+ This interface extends the core Account interface to provide a way
+ for applications to request minimum presence on the account. Some applications, for example mail notifiers or address book
+ synchronisation, can make use of account's connection even while
+ the user is nominally offline. Each client's unique name may set a minimum desired presence on the
+ account. The combined presence is the most available presence
+ of the minimum presences set and of Set a minimum presence needed by the client for this account. Setting
+ (Offline, "offline", "") removes the minimum presence requirement for
+ the client's unique name. A map of active minimum presence requests. Client unique name. Requested minimum presence. Some applications may want to monitor the currently active
+ minimum presences required. An example is an tool allowing
+ the user to inspect applications maintaining open connections and
+ close those applications.
The channel that satisfies the request MUST either:
@@ -147,8 +149,11 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.The returned channel must be related to the handle corresponding
diff --git a/spec/Channel_Dispatcher_Future.xml b/spec/Channel_Dispatcher_Future.xml
new file mode 100644
index 000000000..701b42470
--- /dev/null
+++ b/spec/Channel_Dispatcher_Future.xml
@@ -0,0 +1,377 @@
+
+ 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. 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
+ Lesser General Public License for more details. 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. This interface contains functionality which we intend to incorporate
+ into the Start a request to create a channel. This initially just creates a
+ The request can take a long time - in the worst case, the
+ channel dispatcher has to ask the account manager to put the
+ account online, the account manager has to ask the operating
+ system to obtain an Internet connection, and the operating
+ system has to ask the user whether to activate an Internet
+ connection using an on-demand mechanism like dialup. This means that using a single D-Bus method call and response
+ to represent the whole request will tend to lead to that call
+ timing out, which is not the behaviour we want. If this method is called for an Account that is disabled, invalid
+ or otherwise unusable, no error is signalled until
+ This means there's only one code path for errors, apart from
+ InvalidArgument for "that request makes no sense". It also means that the request will proceed if the account is
+ enabled after calling CreateChannel, but before calling
+ Proceed. A dictionary containing desirable properties. This has the same
+ semantics as the corresponding parameter to
+ Certain properties will not necessarily make sense in this
+ dictionary: for instance,
+ The time at which user action occurred, or 0 if this channel
+ request is for some reason not involving user action.
+ The Either the well-known bus name (starting with
+ This must be the well-known bus name, not the unique name,
+ to ensure that all handlers do indeed have the Client API,
+ and the Client object on the handler can be located easily. This is partly so the channel dispatcher can call
+ The filter should be disregarded for ease of use of this
+ interface: clients will usually use this argument to request
+ channels be sent to themself, and this should trump the filter
+ not matching. This also allows a client to become the handler
+ for a channel produced by one of its own requests, while not
+ being a candidate to handle other channels of that type. If this is a well-known bus name and the handler has the
+ Requests interface, the channel dispatcher SHOULD
+ call This ordering allows a Handler which calls CreateChannel with
+ itself as the preferred handler to associate the call to
+ AddRequest with that call. This is copied to the ChannelRequest that is returned,
+ as the Additional information about the channel request, which will be
+ used as the value for the resulting request's See the Hints property's documentation for rationale. Start a request to ensure that a channel exists, creating it if
+ necessary. This initially just creates a If this method is called for an Account that is disabled, invalid
+ or otherwise unusable, no error is signalled until
+ The rationale is as for A dictionary containing desirable properties. This has the same
+ semantics as the corresponding parameter to
+ Certain properties will not necessarily make sense in this
+ dictionary: for instance,
+ The time at which user action occurred, or 0 if this channel
+ request is for some reason not involving user action. This parameter is used in the same way as the corresponding
+ parameter to
+ Either the well-known bus name (starting with
+ If any new channels are created in response to this
+ request, the channel dispatcher SHOULD dispatch as many as
+ possible of the resulting channels (ideally, all of them)
+ to that handler, and SHOULD remember the preferred handler
+ so it can try to dispatch subsequent channels in the same bundle
+ to the same handler. If the requested channel already exists (that
+ is, An address book application, for example, might call 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. 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
+Lesser General Public License for more details. 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. This interface provides properties that can be used for
+ requesting channels through different contact addressing
+ schemes like vCard addresses or URIs.
+ The vCard field, normalized to lower case,
+ The In practice, protocols have a limited set of URI
+ schemes that make sense to resolve as a contact. If this is omitted from a request,
+ The URI scheme used in While this seems redundant, since the scheme is included in
+ If this is omitted from a request,
+ The vCard address of the Channel's target. If this is present in a channel request,
+ The URI of the Channel's target. The URI's scheme (i.e. the
+ part before the first colon) MUST be identical to
+ If this is present in a channel request,
+ This interface contains SMS-specific properties for text channels.
+ This currently only includes whether the SMSes received on the channel
+ should be displayed immediately to the user, without prompting. A handler for class 0 SMSes should advertise the following filter: It should also set its If This property is immutable (cannot change), and therefore SHOULD
+ appear wherever immutable properties are reported, e.g. Class 0 SMSes should be displayed immediately to the user, and
+ need not be saved to the device memory unless the user explicitly
+ chooses to do so. This is unlike “normal”, class 1 SMSes, which
+ must be stored, but need not be shown immediately in their entirity
+ to the user. Separating class 0 SMSes into their own channel with this
+ immutable property allows them to be dispatched to a different
+ Currently, no mechanism is defined for sending class 0
+ SMSes. It seems reasonable to support specifying the class of an
+ outgoing SMS in its header 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. 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
+ Lesser General Public License for more details. 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. This interface contains functionality which we intend to incorporate
+ into the A dictionary of metadata provided by the channel
+ requester, which the handler and other clients MAY choose to
+ interpret. Currently no standard keys are defined; clients MAY
+ choose to use platform-specific keys for their own purposes, but MUST
+ ignore unknown keys and MUST cope with expected keys being
+ missing. The channel dispatcher will not interpret these hints: they are
+ solely for communication between cooperating clients. Any extra parameters that do affect the channel dispatcher should
+ be designed separately. This property may be set when the channel request is created, and
+ can never change. Since it is immutable, it SHOULD be included in the
+ dictionary of properties passed to Variant of the The Connection owning the channel. The channel which has been created.User_Action_Time
parameter of org.freedesktop.Telepathy.Client.
)
+ of the preferred handler for this
+ channel, or an empty string to indicate that any handler would be
+ acceptable. The channel dispatcher SHOULD dispatch as many as
+ possible of the resulting channels (ideally, all of them)
+ to that handler—irrespective of whether that handler's org.freedesktop.Telepathy.Client.
,
+ the Account does not exist, or one of the Requested_Properties
+ is invalid
+ org.freedesktop.Telepathy.Client.
)
+ of the preferred handler for this
+ channel, or an empty string to indicate that any handler would be
+ acceptable. The behaviour and rationale are the same as for the
+ corresponding parameter to
+ Yours=False
) then the channel dispatcher
+ SHOULD re-dispatch the channel to its existing handler, and MUST
+ NOT dispatch it to this client (unless it is the existing handler);
+ the request is still deemed to have succeeded in this case.Preferred_Handler
; if the
+ user already has a conversation with that contact in another
+ application, they would expect the existing window to be
+ presented, rather than their double-click leading to an error
+ message. So the request should succeed, even if its
+ Preferred_Handler
is not used.org.freedesktop.Telepathy.Client.
,
+ the Account does not exist, or one of the Requested_Properties
+ is invalid
+ True
, the channel dispatcher is new enough to support
+ False
or missing, only the metadata-less
+ variants are supported.
+ url
vCard field MUST NOT appear here; see
+ Handler filters
+
+
+
+
+{ ...
+ ...
+ ...
+}True
, so that it is invoked immediately for new
+ channels.True
, then this channel is exclusively for
+ receiving class 0 SMSes (and no SMSes can be sent using False
, no incoming class 0 SMSes
+ will appear on this channel.True
are read-only.
-{ '...Channel.Type': '...Channel.Type.StreamedMedia' , +{ '...Channel.ChannelType': '...Channel.Type.StreamedMedia' , '...Channel.TargetHandleType': Contact, }
-{ '...Channel.Type': '...Channel.Type.StreamedMedia' , +{ '...Channel.ChannelType': '...Channel.Type.StreamedMedia' , '...Channel.TargetHandleType': Contact, '...Channel.Type.StreamedMedia.InitialAudio': True, }
-{ '...Channel.Type': '...Channel.Type.StreamedMedia' , +{ '...Channel.ChannelType': '...Channel.Type.StreamedMedia' , '...Channel.TargetHandleType': Contact, '...Channel.Type.StreamedMedia.InitialVideo': True, }
Additional information about these channels. No keys are - currently defined.
- -If keys are defined for this dictionary, all will be optional; - handlers MAY safely ignore any entry in this dictionary.
+Additional information about these channels. Currently defined + keys are:
+ +request-properties
- a{oa{sv}}When more keys are defined for this dictionary, all will be + optional; handlers MAY safely ignore any entry in this + dictionary.
request-properties
- a{oa{sv}}All defined keys for this dictionary are optional;
diff --git a/spec/Connection_Interface_Addressing.xml b/spec/Connection_Interface_Addressing.xml
new file mode 100644
index 000000000..497c6d0d9
--- /dev/null
+++ b/spec/Connection_Interface_Addressing.xml
@@ -0,0 +1,258 @@
+
+ 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. 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 Lesser
+ General Public License for more details. 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. This interface deals with the multiple address types that can
+ refer to the same contact, such as vCard fields and URIs. It can be used to retrieve contacts with a specific addresses
+ through The vCard field of the addresses we are requesting. The
+ field name SHOULD be in lower case. Supported
+ fields can be found in
+ The In practice, protocols have a limited set of URI
+ schemes that make sense to resolve as a contact. A list of strings indicating which D-Bus interfaces the calling
+ process is interested in. All supported attributes from these
+ interfaces, whose values can be obtained without additional network
+ activity, will be in the reply. Attributes from this interface and from
+ The behavior of this parameter is similar to the same
+ parameter in
+ A dictionary mapping the contact handles to contact attributes.
+ If any of the requested addresses are in fact invalid, they are
+ simply omitted from this mapping. If contact attributes are not
+ immediately known, the behaviour is defined by the interface;
+ the attribute should either be omitted from the result or
+ replaced with a default value. Requested addresses that cannot be satisfied MUST be ommitted
+ from the mapping. Each contact's attributes will always include at least the
+ identifier that would be obtained by inspecting the handle
+ ( Request contacts and retrieve their attributes using a given field
+ in their vCards. The connection manager should record that these handles are in
+ use by the client who invokes this method, and must not
+ deallocate the handles until the client disconnects from the
+ bus or calls the
+ A list of strings indicating which D-Bus interfaces the calling
+ process is interested in. All supported attributes from these
+ interfaces, whose values can be obtained without additional network
+ activity, will be in the reply. Attributes from this interface and from
+ The behavior of this parameter is similar to the same
+ parameter in
+ A dictionary mapping the contact handles to contact attributes.
+ If any of the requested addresses are in fact invalid, they are
+ simply omitted from this mapping. If contact attributes are not
+ immediately known, the behaviour is defined by the interface;
+ the attribute should either be omitted from the result or
+ replaced with a default value. Requested URIs that cannot be satisfied MUST be ommitted
+ from the mapping. Each contact's attributes will always include at least the
+ identifier that would be obtained by inspecting the handle
+ ( Request contacts and retrieve their attributes using URI addresses. The connection manager should record that these handles are in
+ use by the client who invokes this method, and must not
+ deallocate the handles until the client disconnects from the
+ bus or calls the
+ A mapping of vCard fields and addresses that repreent
+ the given contact. The contact's address, as it was requested
+ through When retrieving more than one contact
+ through The contact's URI, as it was requested through
+ When retrieving more than one contact
+ through url
vCard field MUST NOT appear here; see
+ org.freedesktop.Telepathy.Connection/contact-id
),
+ and the vCard field used for requesting the contact in
+ org.freedesktop.Telepathy.Connection.Interface.ContactInfo/info
.
+ org.freedesktop.Telepathy.Connection/contact-id
).
+
If True
, SMSes will be sent via the service centre
+ specified by False
, the SIM's default SMSC will be used, ignoring the
+ value of MessageServiceCentre.
It could be desirable for a configuration interface to remember + the user's previous choice of custom SMSC, even if it's not in use. + This boolean allows that choice to be saved as an account parameter + by Mission Control, rather than the UI needing to save it elsewhere + to be restored if the user wants to reactivate it.
+Connections with this interface SHOULD provide this property as a
+ parameter of the same (fully-qualified) name to DBus_Property
flag. For connections managed by the
+
+ UpdateParameters ({
+ "org.freedesktop.Telepathy.Connection.Interface.Cellular.OverrideMessageServiceCentre": True
+ }, [])
+
+
+ The AccountManager provides change-notification, as long as all + other clients cooperate by using it instead of setting this property + directly.
+True
.Address for the messaging service centre. Typically (as is the case for GSM's SMSC), it's the ISDN / telephony address (ie. a phone - number).
+ number). If +False
, this property's value should be ignored by the CM
+ in favour of the SIM's default SMSC.
Connections with this interface SHOULD provide this property as a
parameter of the same (fully-qualified) name to
This property's value is not meaningful until the initial contact
- list has been received, in protocols where this is applicable.
- Clients MAY wait for this property to be meaningful by calling
-
This property's value is not meaningful until the
+
This method SHOULD NOT be called until the
+
This method SHOULD NOT be called until the
+
This method SHOULD NOT be called until the
+
Any
This method SHOULD NOT be called until the
+
Any
This method SHOULD NOT be called until the
+
Any
This method SHOULD NOT be called until the
+
An interface for connections that have any concept of a list of @@ -46,87 +46,119 @@
The list of contacts is not exposed as a D-Bus property; it can be
- fetched using
In some protocols, such as XMPP, the contact list may not be
available immediately. The
-
Return some contact attributes for a list of contacts somehow - associated with the user.
+The connection has tried and failed to retrieve the contact
+ list. If
The connection manager SHOULD try again to obtain the contact
+ list, if appropriate for the protocol. If it succeeds later,
+ the
This definition is deliberately vague: in practice, most user - interfaces should display some subset of this list, by filtering it - by some contact attributes (for instance, displaying all contacts - whose "subscribe" attribute is Yes is expected to be a common case). - This list MAY contain any contacts whatsoever, but MUST contain - at least the following:
+Return some contact attributes for a list of contacts + associated with the user. This list MUST include at least:
This list does not need to contain every visible contact: for - instance, contacts seen in XMPP or IRC chatrooms SHOULD NOT appear - here. Blocked contacts SHOULD NOT appear here either, unless they - are still stored in a persistent roster/contact list as well as - being blocked.
+but MAY contain other contacts.
This is basically the union of the historical
For example, XMPP, it's the roster; on link-local XMPP, it's the - set of visible users on the local network; on MSN, it's the union - of the forward and reverse buddy lists.
- -An easy way for an application to display a contact list is to - call this method with at least this interface in the Interfaces - argument, then check which subset of contacts should be displayed - (perhaps based on their subscribe attribute, for instance) and display - them. Any additional information required to display the contact - list, like aliases or presence, can be retrieved at the same - time.
- -In practice, most user interfaces for the contact list will - usually display a large proportion of this list - (for instance, most contacts on the contact list will usually - have subscribe=Yes in practice, so contact lists that display - subscribe=Yes contacts need to display almost the entire list), - so the overhead of returning information about too many contacts - is small.
+For instance, on XMPP, all contacts on the roster would appear + here even if they have subscription="none", unless there's + reason to believe the user does not want to see them (such as + having been blocked).
This method SHOULD NOT return before the contact list has been - retrieved, on protocols where this is possible. As a result, - clients SHOULD use a longer-than-default timeout for this method - call, since retrieving the contact list can take a significant - time on some servers.
+This list does not need to contain every visible contact: for
+ instance, contacts seen in XMPP or IRC chatrooms SHOULD NOT appear
+ here. Blocked contacts SHOULD NOT appear here, unless they still
+ have a non-No
This makes it possible for clients to wait for the contact list. - For instance, on XMPP this method shouldn't return until the - roster has been retrieved, which is an asynchronous process. - However, on link-local XMPP you can't know when you have the - complete list, so this method would have to return immediately.
+It's reasonable to assume that blocked contacts should not be + visible to the user unless they specifically go looking for them, + at least in protocols like XMPP where blocking a contact + suppresses presence.
FIXME: if we do distributed refcounting, we should probably - rename this to 'Reference' and implement handle-refcounting - semantics first? On the other hand, if we make handles persist - for the lifetime of the connection, we can just remove this - parameter.
The
A tristate indicating whether presence subscription is denied, +
An enumeration indicating whether presence subscription is denied, denied but pending permission, or allowed. The exact semantics - vary according to where this type is used.
+ vary according to where this type is used: see the +If this attribute on a contact is Yes, this connection can expect to receive their presence, along with any other information @@ -207,7 +266,7 @@ the local user's buddy list" in ICQ, for example.
-If this attribute is No or Ask, the local user cannot generally +
If this attribute is not Yes, the local user cannot generally
expect to receive presence from this contact. Their presence status
as returned by
This attribute SHOULD be omitted from the
-
If this attribute is Removed_Remotely, this indicates that the + local user has asked to receive the contact's presence at some time, + but the remote contact has rejected that request, and a local + user interface has not yet acknowledged this. It is + implementation-dependent whether contacts' subscribe attributes can + remain set to Removed_Remotely, or are reset to No, when the + connection disconnects.
+ +After notifying the user, user interfaces MAY acknowledge a change
+ to subscribe=Removed_Remotely by calling either
+
This attribute's value will be Unknown or omitted until the
+
If this attribute on a contact is Yes, the local user's presence is published to that contact, along with any other information that @@ -254,12 +325,12 @@ the contact's buddy list" in ICQ, for example.
-If this attribute is No or Ask, the +
If this attribute is not Yes, the local user's presence is not published to that contact; however, if it is Ask, the contact has requested that the local user's presence is made available to them.
-It is implementation-dependent whether contacts' publish +
It is implementation-dependent whether contacts' publish attributes can remain set to Ask, or are reset to No, when the connection disconnects.
@@ -270,21 +341,32 @@ during the current session will ever have Ask status. -This attribute SHOULD be omitted from the
-
If this attribute is Removed_Remotely, this indicates that the
+ remote contact has asked to receive the user's presence at some time,
+ but has then cancelled that request before a response was given by
+ the local user. User interfaces MAY reset publish from
+ Removed_Remotely to No, by calling either
+
If multiple factors affect whether a contact can receive the local + user's presence, this attribute SHOULD reflect the overall + result. For instance, an XMPP contact with subscription="to" or + subscription="both", but who has been blocked via + XEP-0016 Privacy + Lists, SHOULD have publish=No.
+ +This attribute's value will be Unknown or omitted until the
+
If the "publish" attribute is Ask, an optional message that was - sent by the contact asking to receive the local user's presence; - omitted if none was given.
+If the
If the contact asking to receive our presence is also using @@ -294,17 +376,15 @@
Otherwise, this SHOULD be omitted.
-This attribute SHOULD be omitted from the
-
This attribute will also be omitted until the
+
If true, presence subscriptions (in both directions) on this connection are stored by the server or other infrastructure.
@@ -323,17 +403,17 @@ presence from everyone else) so nothing is ever stored. -If
If
In SIMPLE (SIP), SubscriptionsPersist is false, but - CanChangeSubscriptions is true. Presence will not be received +
In SIMPLE (SIP), ContactListPersists is false, but + CanChangeContactList is true. Presence will not be received unless clients renew any subscriptions they have for each connection, in the way described. There is no server-side storage, so clients have no alternative but to maintain independent contact @@ -392,11 +472,12 @@
Contact aliases and groups on MSN have this behaviour.
If this type of metadata is set on a contact with subscribe=No, - the Connection MUST cache it until disconnected, and return it - if requested. If subscription to the contact's presence is - subsequently requested, making it possible to store this metadata, - the Connection MUST store the cached value at that time.
+If this type of metadata is set on a contact with subscribe=No + or subscribe=Rejected, the Connection MUST cache it until + disconnected, and return it if requested. If subscription to the + contact's presence is subsequently requested, making it possible + to store this metadata, the Connection MUST store the cached + value at that time.
This supports the recommended calling pattern for adding a @@ -455,13 +536,13 @@ A single contact's subscribe, publish and publish-request attributes.
Emitted when the contact list becomes available, when contacts'
basic stored properties change, when new contacts are added to the
list that would be returned by
-
This provides change notification for that list, and for - contacts' "subscribe", "publish" and - "publish-request" attributes.
+ contacts'Connection managers SHOULD also emit this signal when a contact
+ requests that the user's presence is published to them, even if
+ that contact's
If the same contact sends 10 identical requests, 10 identical + signals should be emitted.
If true, presence subscription and publication can be changed using the @@ -590,10 +684,10 @@ request, with the given message, if allowed by the underlying protocol.
-For contacts with subscribe=No, this method SHOULD request that - the contact allows the local user to subscribe to their presence; - in general, this will change their publish attribute from No - to Ask (although it could change directly from No to Yes in some +
For contacts with subscribe=No or subscribe=Rejected, this method + SHOULD request that the contact allows the local user to subscribe + to their presence; in general, this will change their publish + attribute to Ask (although it could change directly to Yes in some situations).
Any state changes that immediately result from this request MUST @@ -606,9 +700,20 @@
If the remote contact accepts the request, their subscribe - attribute will later change from Ask to Yes; if they explicitly - reject the request (in protocols that allow this), their subscribe - attribute will later change from Ask to No.
+ attribute will later change from Ask to Yes. + +If the remote contact explicitly rejects the request (in protocols + that allow this), their subscribe attribute will later change from + Ask to Rejected.
+ +If the subscription request is cancelled by the local user, the + contact's subscribe attribute will change from Ask to No.
+ +This method SHOULD NOT be called until the
+
This makes it easy for user interfaces to see what practical effect this method had.
+ +This method SHOULD NOT be called until the
+
If possible, this method SHOULD set the contacts' subscribe and
publish attributes to No, remove any stored aliases for those
contacts, and remove the contacts from the result of
-
This method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts (for instance, if there is an @@ -764,6 +887,12 @@ contact list's state), then consult its local cache of the contact list's state to see whether the contact is still there.
+ +This method SHOULD NOT be called until the
+
This method SHOULD NOT be called until the
+
This method SHOULD NOT be called until the
+
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.
+ +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.
+ +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.
+An interface for telling the connection when to enter and + leave power saving mode.
+ +Power saving mode should be used when the user is not + directly interacting with the interface. For example, when + the screen saver is active, or when device screen is + locked.
+ +Connection managers should implement this feature in a way + that is not noticeable by end users. For example, a protocol + might allow server-side blocking presence updates from + contacts to reduce network chatter. This would not affect the + user, since they are not interacting with their device when it + is in power saving mode.
+Turn power saving mode on or off.
+ +Depending on the device's activity level, the + connection can have it's power saving mode turned on or off.
+Errors raised by this method indicate that power saving could not be + enabled, which SHOULD NOT generally be treated as fatal.
+ +NotImplemented
), or because of the service
+ (NotAvailable
), Mission Control (or whoever manages this)
+ should be made aware. The error could be ignored or, in the extreme,
+ be fascist and disconnect the account.
+ The current state of power saving. Change notifications is via the
+
tel
for
the PSTN.
+ A more exhaustive list of addressable vCard fields can be found in
+ the Protocol's Addressing interface's
+
It is not necessarily valid to interpret contacts' identifiers
+ as values of this vCard field. For instance, telepathy-sofiasip
+ supports contacts whose identifiers are of the form
+ sip:jenny@example.com or tel:8675309, which would not normally
+ both be represented by any single vCard field. Arbitrary
+ handles/identifiers as vCard fields are represented
+ through the Connection's
+
This is taken from Mission Control profiles as used on Maemo 5. One valid use of this field is to answer the question: given a @@ -225,14 +239,6 @@ allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy protocols that handle x-jabber, then offer the user a list of accounts for those protocols and/or the option to create a new account for one of those protocols.
- -It is not necessarily valid to interpret contacts' identifiers - as values of this vCard field. For instance, telepathy-sofiasip - supports contacts whose identifiers are of the form - sip:jenny@example.com or tel:8675309, which would not normally - both be represented by any single vCard field. Representing - arbitrary handles/identifiers as vCard fields is a topic for - future work.
Connection managers with a 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. 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
+ Lesser General Public License for more details. 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. An interface for protocols that support multiple forms of
+ addressing contacts, for example through vCard addresses and URIs. If the ConnectionManager has a .manager file, and it
+ supports this interface, the interface's immutable properties
+ must be represented in the file; the representation is described as
+ part of the documentation for each property. For instance, a SIP connection manager might have the
+ following lines in the .manager file. The vCard fields that can be used to request a contact with
+ normalized to lower case. If the For example: The In practice, protocols have a limited set of URI
+ schemes that make sense to resolve as a contact. This property should only be used when the connection is
+ offline. When it is connected the addressable fields should be
+ retrieved from the
+ Connection managers with a Well-known vCard fields: The URI schemes that are supported by this protocol. For example: This property should only be used when the connection is
+ offline. When it is connected the addressable URI schemes should be
+ retrieved from the
+ Connection managers with a Well-known URI schemes: Attempt to normalize the given vCard address. Where possible, this
+ SHOULD return an address that would appear in the
+ If full normalization requires network activity or is otherwise
+ impossible to do without a An example would be a vCard TEL field with a formatted
+ number in the form of This method MAY simply raise NotImplemented on some
+ protocols, if it has no use. Attempt to normalize the given contact URI. Where possible, this
+ SHOULD return an address that would appear in the
+ If full normalization requires network activity or is otherwise
+ impossible to do without a Example: This method MAY simply raise NotImplemented on some
+ protocols, if it has no use..manager
file
@@ -423,6 +429,6 @@ allowed=org.freedesktop.Telepathy.Channel.TargetHandle;org.freedesktop.Telepathy
-
+
diff --git a/spec/Protocol_Interface_Addressing.xml b/spec/Protocol_Interface_Addressing.xml
new file mode 100644
index 000000000..3722c3b81
--- /dev/null
+++ b/spec/Protocol_Interface_Addressing.xml
@@ -0,0 +1,300 @@
+
+
+[Protocol sip]
+AddressableVCardFields=tel;x-sip;
+AddressableURISchemes=tel;sip;
+
+ URL
vCard
+ field is addressable, a colon, followed by the supported URI
+ schemes will be concatenated.["tel", "x-sip"]
.url
vCard field MUST NOT appear here; see
+ .manager
file
+ MUST cache this property in the protocol's section of the
+ .manager
file if it is non-empty, using the key
+ AddressableVCardFields
. The corresponding value
+ is a list of strings, each followed with a semicolon and in the
+ syntax of the "localestring" type from the Desktop Entry
+ Specification.
+
+
+ tel
x-sip
x-aim
x-icq
x-skype
x-skype
is preferredx-groupwise
x-gadugadu
x-jabber
x-msn
x-yahoo
["tel", "sip"]
..manager
file
+ MUST cache this property in the protocol's section of the
+ .manager
file if it is non-empty, using the key
+ AddressableURISchemes
. The corresponding value
+ is a list of strings, each followed with a semicolon and in the
+ syntax of the "localestring" type from the Desktop Entry
+ Specification.
+
+ sip
sip:julien@example.com
.sips
sips:julien@example.com
.tel
tel:+12065551234
.xmpp
xmpp:julien@example.com
.msnim
add
; the
+ contact
field in the query string is used to
+ identify the contact.
+ For example: msnim:add?contact=julien
.aim
addbuddy
; the
+ screenname
field in the query string is used to
+ identify the contact.
+ For example: aim:addbuddy?screenname=julien
.skype
skype:julien
.ymsgr
addfriend
; the
+ query string is used to identify the contact.
+ For example: ymsgr:addfriend?julien
.gg
gg:julien
.org.freedesktop.Telepathy.Connection.Interface.Addressing.DRAFT/addresses
+ attribute for a contact on a connected
+ +1 (206) 555 1234
, this would be
+ normalized to +12065551234
.org.freedesktop.Telepathy.Connection.Interface.Addressing.DRAFT/uris
+ attribute for a contact on a connected
+ xmpp:eitan@EXAMPLE.COM
would be normalized to
+ xmpp:eitan@example.com
.