Connection ContactList, ContactGroups and ContactBlocking interfaces: telepathy-glib API Reference Manual

## Connection ContactList, ContactGroups and ContactBlocking interfaces Connection ContactList, ContactGroups and ContactBlocking interfaces — client-side wrappers for the ContactList, ContactGroups and ContactBlocking interfaces |

## Functions

TpProxyPendingCall * | tp_cli_connection_interface_contact_blocking_call_block_contacts ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_blocking_call_request_blocked_contacts ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_blocking_call_unblock_contacts ()
void | (*tp_cli_connection_interface_contact_blocking_callback_for_block_contacts) ()
void | (*tp_cli_connection_interface_contact_blocking_callback_for_request_blocked_contacts) ()
void | (*tp_cli_connection_interface_contact_blocking_callback_for_unblock_contacts) ()
TpProxySignalConnection * | tp_cli_connection_interface_contact_blocking_connect_to_blocked_contacts_changed ()
gboolean | tp_cli_connection_interface_contact_blocking_run_block_contacts ()
gboolean | tp_cli_connection_interface_contact_blocking_run_request_blocked_contacts ()
gboolean | tp_cli_connection_interface_contact_blocking_run_unblock_contacts ()
void | (*tp_cli_connection_interface_contact_blocking_signal_callback_blocked_contacts_changed) ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_groups_call_add_to_group ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_groups_call_remove_from_group ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_groups_call_remove_group ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_groups_call_rename_group ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_groups_call_set_contact_groups ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_groups_call_set_group_members ()
void | (*tp_cli_connection_interface_contact_groups_callback_for_add_to_group) ()
void | (*tp_cli_connection_interface_contact_groups_callback_for_remove_from_group) ()
void | (*tp_cli_connection_interface_contact_groups_callback_for_remove_group) ()
void | (*tp_cli_connection_interface_contact_groups_callback_for_rename_group) ()
void | (*tp_cli_connection_interface_contact_groups_callback_for_set_contact_groups) ()
void | (*tp_cli_connection_interface_contact_groups_callback_for_set_group_members) ()
TpProxySignalConnection * | tp_cli_connection_interface_contact_groups_connect_to_group_renamed ()
TpProxySignalConnection * | tp_cli_connection_interface_contact_groups_connect_to_groups_changed ()
TpProxySignalConnection * | tp_cli_connection_interface_contact_groups_connect_to_groups_created ()
TpProxySignalConnection * | tp_cli_connection_interface_contact_groups_connect_to_groups_removed ()
void | (*tp_cli_connection_interface_contact_groups_signal_callback_group_renamed) ()
void | (*tp_cli_connection_interface_contact_groups_signal_callback_groups_changed) ()
void | (*tp_cli_connection_interface_contact_groups_signal_callback_groups_created) ()
void | (*tp_cli_connection_interface_contact_groups_signal_callback_groups_removed) ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_list_call_authorize_publication ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_list_call_download ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_list_call_remove_contacts ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_list_call_request_subscription ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_list_call_unpublish ()
TpProxyPendingCall * | tp_cli_connection_interface_contact_list_call_unsubscribe ()
void | (*tp_cli_connection_interface_contact_list_callback_for_authorize_publication) ()
void | (*tp_cli_connection_interface_contact_list_callback_for_download) ()
void | (*tp_cli_connection_interface_contact_list_callback_for_remove_contacts) ()
void | (*tp_cli_connection_interface_contact_list_callback_for_request_subscription) ()
void | (*tp_cli_connection_interface_contact_list_callback_for_unpublish) ()
void | (*tp_cli_connection_interface_contact_list_callback_for_unsubscribe) ()
TpProxySignalConnection * | tp_cli_connection_interface_contact_list_connect_to_contacts_changed ()
void | (*tp_cli_connection_interface_contact_list_signal_callback_contacts_changed_with_id) ()
TpProxySignalConnection * | tp_cli_connection_interface_contact_list_connect_to_contacts_changed_with_id ()
void | (*tp_cli_connection_interface_contact_list_signal_callback_contacts_changed) ()
TpProxySignalConnection * | tp_cli_connection_interface_contact_list_connect_to_contact_list_state_changed ()
void | (*tp_cli_connection_interface_contact_list_signal_callback_contact_list_state_changed) ()

## Includes

    #include <telepathy-glib/telepathy-glib-dbus.h>

## Description

This interface allows a client to obtain a server-stored contact list and contacts' groups.

This section documents the auto-generated C wrappers for the ContactList, ContactGroups and ContactBlocking interfaces, used with TpConnection objects.

## Functions

### tp_cli_connection_interface_contact_blocking_call_block_contacts ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_blocking_call_block_contacts
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    gboolean in_Report_Abusive,
                                    tp_cli_connection_interface_contact_blocking_callback_for_block_contacts callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a BlockContacts method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Direct the server to block some contacts. The precise effect is protocol-dependent, but SHOULD include ignoring all current and subsequent communications from the given contacts, avoiding sending presence to them in future, and if they were already receiving the local user's presence, behaving as if the local user went offline.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Contacts | Used to pass an 'in' argument: Some contacts to block. If some of the contacts in this list are already blocked, the connection manager MUST act as if they were not specified in this list. |
in_Report_Abusive | Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>In addition to blocking, report these contacts as abusive to the server administrators.</p> <p>Clients can determine whether this capability is available by checking the <tp:member-ref>ContactBlockingCapabilities</tp:member-ref> property. If this argument is set to <code>True</code> by a client despite <tp:member-ref>ContactBlockingCapabilities</tp:member-ref> not containing the <code>Can_Report_Abusive</code> flag, the connection manager SHOULD act as if it were <code>False</code> and simply block the supplied contacts.</p> <tp:rationale> <p>A correct user interface shouldn't get this far without knowing that reporting abusive contacts is not supported. If it does, then the user has expressed their intention to block these contacts. Returning an error would leave the UI with three options:</p> <ul> <li>Ignore the error, leaving the contacts not actually blocked;</li> <li>Display an error to the user;</li> <li>Call this method again, passing <code>False</code> for this argument.</li> </ul> <p>None of these seem preferable to the CM just ignoring this flag if it doesn't support it: that way, the contacts will be blocked, as the user requested, and UIs have fewer ways to mess up entirely.</p> </tp:rationale> |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_blocking_call_request_blocked_contacts ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_blocking_call_request_blocked_contacts
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    tp_cli_connection_interface_contact_blocking_callback_for_request_blocked_contacts callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a RequestBlockedContacts method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>List the contacts that are blocked.</p> <p>Clients SHOULD allow a relatively long timeout for calls to this method, since on some protocols contact blocking is part of the contact list, which can take a significant time to retrieve.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_blocking_call_unblock_contacts ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_blocking_call_unblock_contacts
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    tp_cli_connection_interface_contact_blocking_callback_for_unblock_contacts callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a UnblockContacts method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Direct the server to unblock some contacts.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Contacts | Used to pass an 'in' argument: Some contacts to unblock. If some of the contacts in this list are not currently blocked, the connection manager MUST act as if they were not specified in this list. |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_blocking_callback_for_block_contacts ()

    void
    (*tp_cli_connection_interface_contact_blocking_callback_for_block_contacts)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a BlockContacts method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_blocking_callback_for_request_blocked_contacts ()

    void
    (*tp_cli_connection_interface_contact_blocking_callback_for_request_blocked_contacts)
                                   (TpConnection *proxy,
                                    GHashTable *out_Contacts,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a RequestBlockedContacts method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
out_Contacts | Used to return an 'out' argument if `error` is `NULL`: The blocked contacts’ handles, together with their identifiers. |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_blocking_callback_for_unblock_contacts ()

    void
    (*tp_cli_connection_interface_contact_blocking_callback_for_unblock_contacts)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a UnblockContacts method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_blocking_connect_to_blocked_contacts_changed ()

    TpProxySignalConnection *
    tp_cli_connection_interface_contact_blocking_connect_to_blocked_contacts_changed
                                   (TpConnection *proxy,
                                    tp_cli_connection_interface_contact_blocking_signal_callback_blocked_contacts_changed callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object,
                                    GError **error);

Connect a handler to the signal BlockedContactsChanged.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when the list of blocked contacts is first retrieved (before returning from any pending calls to <tp:member-ref>RequestBlockedContacts</tp:member-ref>), and whenever the list of blocked contacts subsequently changes.</p>

#### Parameters

proxy | A TpConnection or subclass |
callback | Callback to be called when the signal is received |
user_data | User-supplied data for the callback |
destroy | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL` |
weak_object | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected |
error | If not `NULL`, used to raise an error if `NULL` is returned |

#### Returns

a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_connection_interface_contact_blocking_run_block_contacts ()

    gboolean
    tp_cli_connection_interface_contact_blocking_run_block_contacts
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    gboolean in_Report_Abusive,
                                    GError **error,
                                    GMainLoop **loop);

`tp_cli_connection_interface_contact_blocking_run_block_contacts` is deprecated and should not be used in newly-written code.

Call the method BlockContacts and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Direct the server to block some contacts. The precise effect is protocol-dependent, but SHOULD include ignoring all current and subsequent communications from the given contacts, avoiding sending presence to them in future, and if they were already receiving the local user's presence, behaving as if the local user went offline.</p>

#### Parameters

proxy | A TpConnection or subclass |
timeout_ms | Timeout in milliseconds, or -1 for default |
in_Contacts | Used to pass an 'in' argument: Some contacts to block. If some of the contacts in this list are already blocked, the connection manager MUST act as if they were not specified in this list. |
in_Report_Abusive | Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>In addition to blocking, report these contacts as abusive to the server administrators.</p> <p>Clients can determine whether this capability is available by checking the <tp:member-ref>ContactBlockingCapabilities</tp:member-ref> property. If this argument is set to <code>True</code> by a client despite <tp:member-ref>ContactBlockingCapabilities</tp:member-ref> not containing the <code>Can_Report_Abusive</code> flag, the connection manager SHOULD act as if it were <code>False</code> and simply block the supplied contacts.</p> <tp:rationale> <p>A correct user interface shouldn't get this far without knowing that reporting abusive contacts is not supported. If it does, then the user has expressed their intention to block these contacts. Returning an error would leave the UI with three options:</p> <ul> <li>Ignore the error, leaving the contacts not actually blocked;</li> <li>Display an error to the user;</li> <li>Call this method again, passing <code>False</code> for this argument.</li> </ul> <p>None of these seem preferable to the CM just ignoring this flag if it doesn't support it: that way, the contacts will be blocked, as the user requested, and UIs have fewer ways to mess up entirely.</p> </tp:rationale> |
error | If not `NULL`, used to return errors if `FALSE` is returned |
loop | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED` |

#### Returns

TRUE on success, FALSE and sets `error` on error

### tp_cli_connection_interface_contact_blocking_run_request_blocked_contacts ()

    gboolean
    tp_cli_connection_interface_contact_blocking_run_request_blocked_contacts
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    GHashTable **out_Contacts,
                                    GError **error,
                                    GMainLoop **loop);

`tp_cli_connection_interface_contact_blocking_run_request_blocked_contacts` is deprecated and should not be used in newly-written code.

Call the method RequestBlockedContacts and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>List the contacts that are blocked.</p> <p>Clients SHOULD allow a relatively long timeout for calls to this method, since on some protocols contact blocking is part of the contact list, which can take a significant time to retrieve.</p>

#### Parameters

proxy | A TpConnection or subclass |
timeout_ms | Timeout in milliseconds, or -1 for default |
out_Contacts | Used to return an 'out' argument if `TRUE` is returned: The blocked contacts’ handles, together with their identifiers. |
error | If not `NULL`, used to return errors if `FALSE` is returned |
loop | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED` |

#### Returns

TRUE on success, FALSE and sets `error` on error

### tp_cli_connection_interface_contact_blocking_run_unblock_contacts ()

    gboolean
    tp_cli_connection_interface_contact_blocking_run_unblock_contacts
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    GError **error,
                                    GMainLoop **loop);

`tp_cli_connection_interface_contact_blocking_run_unblock_contacts` is deprecated and should not be used in newly-written code.

Call the method UnblockContacts and run the main loop until it returns. Before calling this method, you must add a reference to any borrowed objects you need to keep, and generally ensure that everything is in a consistent state.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Direct the server to unblock some contacts.</p>

#### Parameters

proxy | A TpConnection or subclass |
timeout_ms | Timeout in milliseconds, or -1 for default |
in_Contacts | Used to pass an 'in' argument: Some contacts to unblock. If some of the contacts in this list are not currently blocked, the connection manager MUST act as if they were not specified in this list. |
error | If not `NULL`, used to return errors if `FALSE` is returned |
loop | If not `NULL`, set before re-entering the main loop, to point to a GMainLoop which can be used to cancel this call with `g_main_loop_quit()`, causing a return of `FALSE` with `error` set to `TP_DBUS_ERROR_CANCELLED` |

#### Returns

TRUE on success, FALSE and sets `error` on error

### tp_cli_connection_interface_contact_blocking_signal_callback_blocked_contacts_changed ()

    void
    (*tp_cli_connection_interface_contact_blocking_signal_callback_blocked_contacts_changed)
                                   (TpConnection *proxy,
                                    GHashTable *arg_Blocked_Contacts,
                                    GHashTable *arg_Unblocked_Contacts,
                                    gpointer user_data,
                                    GObject *weak_object);

Represents the signature of a callback for the signal BlockedContactsChanged.

#### Parameters

proxy | The proxy on which `tp_cli_connection_interface_contact_blocking_connect_to_blocked_contacts_changed()` was called |
arg_Blocked_Contacts | Contacts added to the result of <tp:member-ref>RequestBlockedContacts</tp:member-ref>. |
arg_Unblocked_Contacts | Contacts removed from the result of <tp:member-ref>RequestBlockedContacts</tp:member-ref>. |
user_data | User-supplied data |
weak_object | User-supplied weakly referenced object |

### tp_cli_connection_interface_contact_groups_call_add_to_group ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_groups_call_add_to_group
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const gchar *in_Group,
                                    const GArray *in_Members,
                                    tp_cli_connection_interface_contact_groups_callback_for_add_to_group callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a AddToGroup method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Add the given members to the given group, creating it if necessary.</p> <p>If <tp:member-ref>DisjointGroups</tp:member-ref> is true, this will also remove each member from their previous group.</p> <tp:rationale> <p>This is good for user interfaces in which you can edit groups via drag-and-drop.</p> </tp:rationale> <p>Any <tp:member-ref>GroupsCreated</tp:member-ref>, <tp:member-ref>GroupsChanged</tp:member-ref> and <tp:member-ref>GroupsRemoved</tp:member-ref> signals that result from this method call MUST be emitted before the method returns.</p> <p>This method SHOULD NOT be called until the <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">ContactListState</tp:dbus-ref> changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">GetContactListAttributes</tp:dbus-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Group | Used to pass an 'in' argument: The group to alter. |
in_Members | Used to pass an 'in' argument: The set of members to include in the group. |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_groups_call_remove_from_group ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_groups_call_remove_from_group
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const gchar *in_Group,
                                    const GArray *in_Members,
                                    tp_cli_connection_interface_contact_groups_callback_for_remove_from_group callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a RemoveFromGroup method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Remove the given members from the given group.</p> <tp:rationale> <p>This is good for user interfaces in which you can edit groups via drag-and-drop.</p> </tp:rationale> <p>Any <tp:member-ref>GroupsChanged</tp:member-ref> or <tp:member-ref>GroupsRemoved</tp:member-ref> signals that result from this method call MUST be emitted before the method returns.</p> <p>This method SHOULD NOT be called until the <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">ContactListState</tp:dbus-ref> changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">GetContactListAttributes</tp:dbus-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Group | Used to pass an 'in' argument: The group to alter. If it does not exist, then it has no members by definition, so this method SHOULD return successfully. |
in_Members | Used to pass an 'in' argument: The set of members to remove from the group. It is not an error to remove members who are already not in the group. If there are no members left in the group afterwards, the group MAY itself be removed. |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_groups_call_remove_group ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_groups_call_remove_group
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const gchar *in_Group,
                                    tp_cli_connection_interface_contact_groups_callback_for_remove_group callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a RemoveGroup method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Remove all members from the given group, then remove the group itself. If the group already does not exist, this method SHOULD return successfully.</p> <p>Any <tp:member-ref>GroupsChanged</tp:member-ref> or <tp:member-ref>GroupsRemoved</tp:member-ref> signals that result from this method call MUST be emitted before the method returns.</p> <p>This method SHOULD NOT be called until the <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">ContactListState</tp:dbus-ref> changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">GetContactListAttributes</tp:dbus-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Group | Used to pass an 'in' argument: The group to remove. |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_groups_call_rename_group ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_groups_call_rename_group
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const gchar *in_Old_Name,
                                    const gchar *in_New_Name,
                                    tp_cli_connection_interface_contact_groups_callback_for_rename_group callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a RenameGroup method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Rename the given group.</p> <p>On protocols where groups behave like tags, this is an API short-cut for adding all of the group's members to a group with the new name, then removing the old group.</p> <tp:rationale> <p>Otherwise, clients can't perform this operation atomically, even if the connection could.</p> </tp:rationale> <p>Any <tp:member-ref>GroupRenamed</tp:member-ref> or <tp:member-ref>GroupsRemoved</tp:member-ref> signals that result from this method call MUST be emitted before the method returns.</p> <p>This method SHOULD NOT be called until the <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">ContactListState</tp:dbus-ref> changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">GetContactListAttributes</tp:dbus-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Old_Name | Used to pass an 'in' argument: The group to rename. |
in_New_Name | Used to pass an 'in' argument: The new name for the group. |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_groups_call_set_contact_groups ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_groups_call_set_contact_groups
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    guint in_Contact,
                                    const gchar **in_Groups,
                                    tp_cli_connection_interface_contact_groups_callback_for_set_contact_groups callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a SetContactGroups method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Add the given contact to the given groups (creating new groups if necessary), and remove them from all other groups.</p> <tp:rationale> <p>This is the easiest and most correct way to implement user interfaces that display a single contact with a list of groups, resulting in a user expectation that when they apply the changes, the contact's set of groups will become exactly what was displayed.</p> </tp:rationale> <p>If the user is removed from a group of which they were the only member, the group MAY be removed automatically.</p> <tp:rationale> <p>In protocols like XMPP where groups behave like tags, a group with no members has no protocol representation.</p> </tp:rationale> <p>Any <tp:member-ref>GroupsCreated</tp:member-ref>, <tp:member-ref>GroupsChanged</tp:member-ref> and <tp:member-ref>GroupsRemoved</tp:member-ref> signals that result from this method call MUST be emitted before the method returns.</p> <p>This method SHOULD NOT be called until the <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">ContactListState</tp:dbus-ref> changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">GetContactListAttributes</tp:dbus-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Contact | Used to pass an 'in' argument: The contact to alter. (TpContactHandle) |
in_Groups | Used to pass an 'in' argument: The set of groups which the contact should be in. |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_groups_call_set_group_members ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_groups_call_set_group_members
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const gchar *in_Group,
                                    const GArray *in_Members,
                                    tp_cli_connection_interface_contact_groups_callback_for_set_group_members callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a SetGroupMembers method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Add the given members to the given group (creating it if necessary), and remove all other members.</p> <tp:rationale> <p>This is the easiest and most correct way to implement user interfaces that display a single group with a list of contacts, resulting in a user expectation that when they apply the changes, the groups's set of members will become exactly what was displayed.</p> </tp:rationale> <p>If <tp:member-ref>DisjointGroups</tp:member-ref> is true, this will also remove each member from their previous group.</p> <p>If the user is removed from a group of which they were the only member, the group MAY be removed automatically.</p> <p>Any <tp:member-ref>GroupsCreated</tp:member-ref>, <tp:member-ref>GroupsChanged</tp:member-ref> and <tp:member-ref>GroupsRemoved</tp:member-ref> signals that result from this method call MUST be emitted before the method returns.</p> <p>This method SHOULD NOT be called until the <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">ContactListState</tp:dbus-ref> changes to Success. If the ContactListState is Failure, this method SHOULD raise the same error as <tp:dbus-ref namespace="ofdT.Connection.Interface.ContactList">GetContactListAttributes</tp:dbus-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Group | Used to pass an 'in' argument: The group to alter. |
in_Members | Used to pass an 'in' argument: The set of members for the group. If this set is empty, this method MAY remove the group. |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_groups_callback_for_add_to_group ()

    void
    (*tp_cli_connection_interface_contact_groups_callback_for_add_to_group)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a AddToGroup method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_groups_callback_for_remove_from_group ()

    void
    (*tp_cli_connection_interface_contact_groups_callback_for_remove_from_group)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a RemoveFromGroup method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_groups_callback_for_remove_group ()

    void
    (*tp_cli_connection_interface_contact_groups_callback_for_remove_group)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a RemoveGroup method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_groups_callback_for_rename_group ()

    void
    (*tp_cli_connection_interface_contact_groups_callback_for_rename_group)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a RenameGroup method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_groups_callback_for_set_contact_groups ()

    void
    (*tp_cli_connection_interface_contact_groups_callback_for_set_contact_groups)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a SetContactGroups method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_groups_callback_for_set_group_members ()

    void
    (*tp_cli_connection_interface_contact_groups_callback_for_set_group_members)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a SetGroupMembers method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_groups_connect_to_group_renamed ()

    TpProxySignalConnection *
    tp_cli_connection_interface_contact_groups_connect_to_group_renamed
                                   (TpConnection *proxy,
                                    tp_cli_connection_interface_contact_groups_signal_callback_group_renamed callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object,
                                    GError **error);

Connect a handler to the signal GroupRenamed.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when a group is renamed, in protocols where this can be distinguished from group creation, removal and membership changes.</p> <p>Immediately after this signal is emitted, <tp:member-ref>GroupsCreated</tp:member-ref> MUST signal the creation of a group with the new name, and <tp:member-ref>GroupsRemoved</tp:member-ref> MUST signal the removal of a group with the old name.</p> <tp:rationale> <p>Emitting these extra signals, in this order, means that clients that are interested in the set of groups that exist (but treat a rename and a create/remove pair identically) can ignore the GroupRenamed signal entirely.</p> </tp:rationale> <p>If the group was not empty, immediately after those signals are emitted, <tp:member-ref>GroupsChanged</tp:member-ref> MUST signal that the members of that group were removed from the old name and added to the new name.</p> <p>On connection managers where groups behave like tags, renaming a group MAY be signalled as a set of <tp:member-ref>GroupsCreated</tp:member-ref>, <tp:member-ref>GroupsRemoved</tp:member-ref> and <tp:member-ref>GroupsChanged</tp:member-ref> signals, instead of emitting this signal.</p> <tp:rationale> <p>On protocols like XMPP, another resource &quot;renaming a group&quot; is indistinguishable from changing contacts' groups individually.</p> </tp:rationale>

#### Parameters

proxy | A TpConnection or subclass |
callback | Callback to be called when the signal is received |
user_data | User-supplied data for the callback |
destroy | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL` |
weak_object | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected |
error | If not `NULL`, used to raise an error if `NULL` is returned |

#### Returns

a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_connection_interface_contact_groups_connect_to_groups_changed ()

    TpProxySignalConnection *
    tp_cli_connection_interface_contact_groups_connect_to_groups_changed
                                   (TpConnection *proxy,
                                    tp_cli_connection_interface_contact_groups_signal_callback_groups_changed callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object,
                                    GError **error);

Connect a handler to the signal GroupsChanged.

Emitted when contacts' groups change.

#### Parameters

proxy | A TpConnection or subclass |
callback | Callback to be called when the signal is received |
user_data | User-supplied data for the callback |
destroy | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL` |
weak_object | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected |
error | If not `NULL`, used to raise an error if `NULL` is returned |

#### Returns

a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_connection_interface_contact_groups_connect_to_groups_created ()

    TpProxySignalConnection *
    tp_cli_connection_interface_contact_groups_connect_to_groups_created
                                   (TpConnection *proxy,
                                    tp_cli_connection_interface_contact_groups_signal_callback_groups_created callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object,
                                    GError **error);

Connect a handler to the signal GroupsCreated.

Emitted when new, empty groups are created. This will often be followed by <tp:member-ref>GroupsChanged</tp:member-ref> signals that add some members.

#### Parameters

proxy | A TpConnection or subclass |
callback | Callback to be called when the signal is received |
user_data | User-supplied data for the callback |
destroy | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL` |
weak_object | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected |
error | If not `NULL`, used to raise an error if `NULL` is returned |

#### Returns

a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_connection_interface_contact_groups_connect_to_groups_removed ()

    TpProxySignalConnection *
    tp_cli_connection_interface_contact_groups_connect_to_groups_removed
                                   (TpConnection *proxy,
                                    tp_cli_connection_interface_contact_groups_signal_callback_groups_removed callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object,
                                    GError **error);

Connect a handler to the signal GroupsRemoved.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted when one or more groups are removed. If they had members at the time that they were removed, then immediately after this signal is emitted, <tp:member-ref>GroupsChanged</tp:member-ref> MUST signal that their members were removed.</p> <tp:rationale> <p>Emitting the signals in this order allows for two modes of operation. A client interested only in a contact's set of groups can ignore <tp:member-ref>GroupsRemoved</tp:member-ref> and rely on the <tp:member-ref>GroupsChanged</tp:member-ref> signal that will follow; a more elaborate client wishing to distinguish between all of a group's members being removed, and the group itself being removed, can additionally watch for <tp:member-ref>GroupsRemoved</tp:member-ref> and use it to disambiguate.</p> </tp:rationale>

#### Parameters

proxy | A TpConnection or subclass |
callback | Callback to be called when the signal is received |
user_data | User-supplied data for the callback |
destroy | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL` |
weak_object | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected |
error | If not `NULL`, used to raise an error if `NULL` is returned |

#### Returns

a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_connection_interface_contact_groups_signal_callback_group_renamed ()

    void
    (*tp_cli_connection_interface_contact_groups_signal_callback_group_renamed)
                                   (TpConnection *proxy,
                                    const gchar *arg_Old_Name,
                                    const gchar *arg_New_Name,
                                    gpointer user_data,
                                    GObject *weak_object);

Represents the signature of a callback for the signal GroupRenamed.

#### Parameters

proxy | The proxy on which `tp_cli_connection_interface_contact_groups_connect_to_group_renamed()` was called |
arg_Old_Name | The old name of the group. |
arg_New_Name | The new name of the group. |
user_data | User-supplied data |
weak_object | User-supplied weakly referenced object |

### tp_cli_connection_interface_contact_groups_signal_callback_groups_changed ()

    void
    (*tp_cli_connection_interface_contact_groups_signal_callback_groups_changed)
                                   (TpConnection *proxy,
                                    const GArray *arg_Contact,
                                    const gchar **arg_Added,
                                    const gchar **arg_Removed,
                                    gpointer user_data,
                                    GObject *weak_object);

Represents the signature of a callback for the signal GroupsChanged.

#### Parameters

proxy | The proxy on which `tp_cli_connection_interface_contact_groups_connect_to_groups_changed()` was called |
arg_Contact | The relevant contacts. |
arg_Added | The names of groups to which the contacts were added. |
arg_Removed | The names of groups from which the contacts were removed. |
user_data | User-supplied data |
weak_object | User-supplied weakly referenced object |

### tp_cli_connection_interface_contact_groups_signal_callback_groups_created ()

    void
    (*tp_cli_connection_interface_contact_groups_signal_callback_groups_created)
                                   (TpConnection *proxy,
                                    const gchar **arg_Names,
                                    gpointer user_data,
                                    GObject *weak_object);

Represents the signature of a callback for the signal GroupsCreated.

#### Parameters

proxy | The proxy on which `tp_cli_connection_interface_contact_groups_connect_to_groups_created()` was called |
arg_Names | The names of the new groups. |
user_data | User-supplied data |
weak_object | User-supplied weakly referenced object |

### tp_cli_connection_interface_contact_groups_signal_callback_groups_removed ()

    void
    (*tp_cli_connection_interface_contact_groups_signal_callback_groups_removed)
                                   (TpConnection *proxy,
                                    const gchar **arg_Names,
                                    gpointer user_data,
                                    GObject *weak_object);

Represents the signature of a callback for the signal GroupsRemoved.

#### Parameters

proxy | The proxy on which `tp_cli_connection_interface_contact_groups_connect_to_groups_removed()` was called |
arg_Names | The names of the groups. |
user_data | User-supplied data |
weak_object | User-supplied weakly referenced object |

### tp_cli_connection_interface_contact_list_call_authorize_publication ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_list_call_authorize_publication
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    tp_cli_connection_interface_contact_list_callback_for_authorize_publication callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a AuthorizePublication method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>For each of the given contacts, request that the local user's presence is sent to that contact, i.e. that their publish attribute becomes Yes.</p> <p>Connection managers SHOULD NOT attempt to enforce a mutual-subscription policy (i.e. when this method is called, they should not automatically request that the contacts allow the user to subscribe to their presence). User interfaces that require mutual subscription MAY call <tp:member-ref>RequestSubscription</tp:member-ref> at the same time as this method.</p> <tp:rationale> <p>Whether to enforce mutual subscription is a matter of policy, so it is left to the user interface and/or the server.</p> </tp:rationale> <p>For contacts with publish=Yes, this method has no effect; it MUST return successfully if all contacts given have this state.</p> <p>For contacts with publish=Ask, this method accepts the contact's request to see the local user's presence, changing their publish attribute from Ask to Yes.</p> <p>For contacts with publish=No, if the protocol allows it, this method allows the contacts to see the local user's presence even though they have not requested it, changing their publish attribute from No to Yes. Otherwise, it merely records the fact that presence publication to those contacts is allowed; if any of those contacts ask to receive the local user's presence later in the lifetime of the connection, the connection SHOULD immediately allow them to do so, changing their publish attribute directly from No to Yes.</p> <tp:rationale> <p>This makes it easy to implement the common UI policy that if the user attempts to subscribe to a contact's presence, requests for reciprocal subscription are automatically approved.</p> </tp:rationale> <p>Any state changes that immediately result from this request MUST be signalled via <tp:member-ref>ContactsChanged</tp:member-ref> before this method returns.</p> <tp:rationale> <p>This makes it easy for user interfaces to see what practical effect this method had.</p> </tp:rationale> <p>This method SHOULD NOT be called until the <tp:member-ref>ContactListState</tp:member-ref> changes to Success. If the <tp:member-ref>ContactListState</tp:member-ref> changes to Failure, this method SHOULD raise the same error as <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Contacts | Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>One or more contacts to authorize.</p> |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_list_call_download ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_list_call_download
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    tp_cli_connection_interface_contact_list_callback_for_download callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a Download method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Download the contact list from the server. If <tp:member-ref>DownloadAtConnection</tp:member-ref> is true, Download does nothing.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_list_call_remove_contacts ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_list_call_remove_contacts
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    tp_cli_connection_interface_contact_list_callback_for_remove_contacts callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a RemoveContacts method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Remove the given contacts from the contact list entirely. It is protocol-dependent whether this works, and under which circumstances.</p> <p>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 <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p> <p>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 outstanding request to subscribe to the contact's presence, and it's not possible to cancel such requests). However, all signals that immediately result from this method call MUST be emitted before it returns, so that clients can interpret the result.</p> <tp:rationale> <p>User interfaces removing a contact from the contact list are unlikely to want spurious failure notifications resulting from limitations of a particular protocol. However, emitting the signals first means that if a client does want to check exactly what happened, it can wait for the method to return (while applying change-notification signals to its local cache of the contact list's state), then consult its local cache of the contact list's state to see whether the contact is still there.</p> </tp:rationale> <p>This method SHOULD NOT be called until the <tp:member-ref>ContactListState</tp:member-ref> changes to Success. If the <tp:member-ref>ContactListState</tp:member-ref> changes to Failure, this method SHOULD raise the same error as <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Contacts | Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>One or more contacts to remove.</p> |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_list_call_request_subscription ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_list_call_request_subscription
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    const gchar *in_Message,
                                    tp_cli_connection_interface_contact_list_callback_for_request_subscription callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a RequestSubscription method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Request that the given contacts allow the local user to subscribe to their presence, i.e. that their subscribe attribute becomes Yes.</p> <p>Connection managers SHOULD NOT attempt to enforce a mutual-subscription policy (i.e. when this method is called, they should not automatically allow the contacts to see the local user's presence). User interfaces that require mutual subscription MAY call <tp:member-ref>AuthorizePublication</tp:member-ref> at the same time as this method.</p> <tp:rationale> <p>Whether to enforce mutual subscription is a matter of policy, so it is left to the user interface and/or the server.</p> </tp:rationale> <p>Before calling this method on a connection where <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface.Aliasing">GetAliasFlags</tp:dbus-ref> returns the <code>User_Set</code> flag, user interfaces SHOULD obtain, from the user, an alias to identify the contact in future, and store it using <tp:dbus-ref namespace="org.freedesktop.Telepathy.Connection.Interface.Aliasing">SetAliases</tp:dbus-ref>.</p> <p>The user MAY be prompted using the contact's current self-assigned nickname, or something derived from the contact's (presumably self-assigned) identifier, as a default, but these names chosen by the contact SHOULD NOT be used without user approval.</p> <tp:rationale> <p>This is a generalization of <a href="http://xmpp.org/extensions/xep-0165.html">XEP-0165 &quot;Best Practices to Discourage JID Mimicking&quot;</a>) to protocols other than XMPP. A reasonable user interface for this, as used in many XMPP clients, is to have a text entry for the alias adjacent to the text entry for the identifier to add.</p> </tp:rationale> <p>For contacts with subscribe=Yes, this method has no effect. It MUST return successfully if all contacts are in this state.</p> <p>For contacts with subscribe=Ask, this method SHOULD send a new request, with the given message, if allowed by the underlying protocol.</p> <p>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).</p> <p>Any state changes that immediately result from this request MUST be signalled via <tp:member-ref>ContactsChanged</tp:member-ref> before this method returns.</p> <tp:rationale> <p>This makes it easy for user interfaces to see what practical effect this method had.</p> </tp:rationale> <p>If the remote contact accepts the request, their subscribe attribute will later change from Ask to Yes.</p> <p>If the remote contact explicitly rejects the request (in protocols that allow this), their subscribe attribute will later change from Ask to Rejected.</p> <p>If the subscription request is cancelled by the local user, the contact's subscribe attribute will change from Ask to No.</p> <p>This method SHOULD NOT be called until the <tp:member-ref>ContactListState</tp:member-ref> changes to Success. If the <tp:member-ref>ContactListState</tp:member-ref> changes to Failure, this method SHOULD raise the same error as <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Contacts | Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>One or more contacts to whom requests are to be sent.</p> |
in_Message | Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>An optional plain-text message from the user, to send to those contacts with the subscription request. The <tp:member-ref>RequestUsesMessage</tp:member-ref> property indicates whether this message will be used or ignored.</p> <p>Clients SHOULD NOT send a non-empty message without first giving the user an opportunity to edit it.</p> <tp:rationale> <p>These messages are typically presented to the remote contact as if the user had typed them, so as a minimum, the user should be allowed to see what the UI will be saying on their behalf.</p> </tp:rationale> <p>Connections where this message is not useful MUST still allow it to be non-empty.</p> |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_list_call_unpublish ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_list_call_unpublish
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    tp_cli_connection_interface_contact_list_callback_for_unpublish callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a Unpublish method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Attempt to set the given contacts' publish attribute to No, i.e. stop sending presence to them.</p> <p>For contacts with publish=Ask, this method explicitly rejects the contact's request to subscribe to the user's presence; for contacts with publish=Yes, this method attempts to prevent the user's presence from being received by the contact.</p> <p>As with <tp:member-ref>RemoveContacts</tp:member-ref>, this method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.</p> <p>This method SHOULD NOT be called until the <tp:member-ref>ContactListState</tp:member-ref> changes to Success. If the <tp:member-ref>ContactListState</tp:member-ref> changes to Failure, this method SHOULD raise the same error as <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Contacts | Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>One or more contacts to remove.</p> |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_list_call_unsubscribe ()

    TpProxyPendingCall *
    tp_cli_connection_interface_contact_list_call_unsubscribe
                                   (TpConnection *proxy,
                                    gint timeout_ms,
                                    const GArray *in_Contacts,
                                    tp_cli_connection_interface_contact_list_callback_for_unsubscribe callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object);

Start a Unsubscribe method call.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Attempt to set the given contacts' subscribe attribute to No, i.e. stop receiving their presence.</p> <p>For contacts with subscribe=Ask, this attempts to cancel an earlier request to subscribe to the contact's presence; for contacts with subscribe=Yes, this attempts to unsubscribe from the contact's presence.</p> <p>As with <tp:member-ref>RemoveContacts</tp:member-ref>, this method SHOULD succeed even if it was not possible to carry out the request entirely or for all contacts; however, all signals that immediately result from this method call MUST be emitted before it returns.</p> <p>This method SHOULD NOT be called until the <tp:member-ref>ContactListState</tp:member-ref> changes to Success. If the <tp:member-ref>ContactListState</tp:member-ref> changes to Failure, this method SHOULD raise the same error as <tp:member-ref>GetContactListAttributes</tp:member-ref>.</p>

#### Parameters

proxy | the TpProxy |
timeout_ms | the timeout in milliseconds, or -1 to use the default |
in_Contacts | Used to pass an 'in' argument: <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>One or more contacts to remove.</p> |
callback | called when the method call succeeds or fails; may be `NULL` to make a "fire and forget" call with no reply tracking |
user_data | user-supplied data passed to the callback; must be `NULL` if `callback` is `NULL` |
destroy | called with the user_data as argument, after the call has succeeded, failed or been cancelled; must be `NULL` if `callback` is `NULL` |
weak_object | If not `NULL`, a GObject which will be weakly referenced; if it is destroyed, this call will automatically be cancelled. Must be `NULL` if `callback` is `NULL` |

#### Returns

a TpProxyPendingCall representing the call in progress. It is borrowed from the object, and will become invalid when the callback is called, the call is cancelled or the TpProxy becomes invalid.

### tp_cli_connection_interface_contact_list_callback_for_authorize_publication ()

    void
    (*tp_cli_connection_interface_contact_list_callback_for_authorize_publication)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a AuthorizePublication method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_list_callback_for_download ()

    void
    (*tp_cli_connection_interface_contact_list_callback_for_download)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a Download method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_list_callback_for_remove_contacts ()

    void
    (*tp_cli_connection_interface_contact_list_callback_for_remove_contacts)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a RemoveContacts method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_list_callback_for_request_subscription ()

    void
    (*tp_cli_connection_interface_contact_list_callback_for_request_subscription)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a RequestSubscription method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_list_callback_for_unpublish ()

    void
    (*tp_cli_connection_interface_contact_list_callback_for_unpublish)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a Unpublish method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_list_callback_for_unsubscribe ()

    void
    (*tp_cli_connection_interface_contact_list_callback_for_unsubscribe)
                                   (TpConnection *proxy,
                                    const GError *error,
                                    gpointer user_data,
                                    GObject *weak_object);

Signature of the callback called when a Unsubscribe method call succeeds or fails.

#### Parameters

proxy | the proxy on which the call was made |
error | `NULL` on success, or an error on failure |
user_data | user-supplied data |
weak_object | user-supplied object |

### tp_cli_connection_interface_contact_list_connect_to_contacts_changed ()

    TpProxySignalConnection *
    tp_cli_connection_interface_contact_list_connect_to_contacts_changed
                                   (TpConnection *proxy,
                                    tp_cli_connection_interface_contact_list_signal_callback_contacts_changed callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object,
                                    GError **error);

Connect a handler to the signal ContactsChanged.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>Emitted immediately after <tp:member-ref>ContactsChangedWithID</tp:member-ref>, under the same circumstances.</p> <p>If clients receive this signal without first receiving a corresponding <tp:member-ref>ContactsChangedWithID</tp:member-ref>, they MUST assume that only this signal will be emitted.</p>

#### Parameters

proxy | A TpConnection or subclass |
callback | Callback to be called when the signal is received |
user_data | User-supplied data for the callback |
destroy | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL` |
weak_object | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected |
error | If not `NULL`, used to raise an error if `NULL` is returned |

#### Returns

a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_connection_interface_contact_list_signal_callback_contacts_changed_with_id ()

    void
    (*tp_cli_connection_interface_contact_list_signal_callback_contacts_changed_with_id)
                                   (TpConnection *proxy,
                                    GHashTable *arg_Changes,
                                    GHashTable *arg_Identifiers,
                                    GHashTable *arg_Removals,
                                    gpointer user_data,
                                    GObject *weak_object);

Represents the signature of a callback for the signal ContactsChangedWithID.

#### Parameters

proxy | The proxy on which `tp_cli_connection_interface_contact_list_connect_to_contacts_changed_with_id()` was called |
arg_Changes | The new <tp:token-ref>subscribe</tp:token-ref>, <tp:token-ref>publish</tp:token-ref> and <tp:token-ref>publish-request</tp:token-ref> attributes of all the contacts that have been added, and all the contacts for which those attributes have changed. |
arg_Identifiers | <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The identifiers of the contacts in the <var>Changes</var> map. |
arg_Removals | <tp:docstring xmlns="http://www.w3.org/1999/xhtml"> The contacts that have been removed from the list that would be returned by <tp:member-ref>GetContactListAttributes</tp:member-ref>. This also implies that they have subscribe = No and publish = No; contacts MUST NOT be listed both here and in <var>Changes</var>. |
user_data | User-supplied data |
weak_object | User-supplied weakly referenced object |

### tp_cli_connection_interface_contact_list_connect_to_contacts_changed_with_id ()

    TpProxySignalConnection *
    tp_cli_connection_interface_contact_list_connect_to_contacts_changed_with_id
                                   (TpConnection *proxy,
                                    tp_cli_connection_interface_contact_list_signal_callback_contacts_changed_with_id callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object,
                                    GError **error);

Connect a handler to the signal ContactsChangedWithID.

<tp:docstring xmlns="http://www.w3.org/1999/xhtml"> <p>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 <tp:member-ref>GetContactListAttributes</tp:member-ref>, or when contacts are removed from that list.</p> <tp:rationale> <p>This provides change notification for that list, and for contacts' <tp:token-ref>subscribe</tp:token-ref>, <tp:token-ref>publish</tp:token-ref> and <tp:token-ref>publish-request</tp:token-ref> attributes.</p> </tp:rationale> <p>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 <tp:token>publish</tp:token> attribute is already Ask and the <tp:token>publish-request</tp:token> has not changed.</p> <tp:rationale> <p>If the same contact sends 10 identical requests, 10 identical signals should be emitted.</p> </tp:rationale>

#### Parameters

proxy | A TpConnection or subclass |
callback | Callback to be called when the signal is received |
user_data | User-supplied data for the callback |
destroy | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL` |
weak_object | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected |
error | If not `NULL`, used to raise an error if `NULL` is returned |

#### Returns

a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_connection_interface_contact_list_signal_callback_contacts_changed ()

    void
    (*tp_cli_connection_interface_contact_list_signal_callback_contacts_changed)
                                   (TpConnection *proxy,
                                    GHashTable *arg_Changes,
                                    const GArray *arg_Removals,
                                    gpointer user_data,
                                    GObject *weak_object);

Represents the signature of a callback for the signal ContactsChanged.

#### Parameters

proxy | The proxy on which `tp_cli_connection_interface_contact_list_connect_to_contacts_changed()` was called |
arg_Changes | The same as the corresponding argument to <tp:member-ref>ContactsChangedWithID</tp:member-ref>. |
arg_Removals | The same as the corresponding argument to <tp:member-ref>ContactsChangedWithID</tp:member-ref>, except that it only includes handles and not identifiers. |
user_data | User-supplied data |
weak_object | User-supplied weakly referenced object |

### tp_cli_connection_interface_contact_list_connect_to_contact_list_state_changed ()

    TpProxySignalConnection *
    tp_cli_connection_interface_contact_list_connect_to_contact_list_state_changed
                                   (TpConnection *proxy,
                                    tp_cli_connection_interface_contact_list_signal_callback_contact_list_state_changed callback,
                                    gpointer user_data,
                                    GDestroyNotify destroy,
                                    GObject *weak_object,
                                    GError **error);

Connect a handler to the signal ContactListStateChanged.

Emitted when <tp:member-ref>ContactListState</tp:member-ref> changes.

#### Parameters

proxy | A TpConnection or subclass |
callback | Callback to be called when the signal is received |
user_data | User-supplied data for the callback |
destroy | Destructor for the user-supplied data, which will be called when this signal is disconnected, or before this function returns `NULL` |
weak_object | A GObject which will be weakly referenced; if it is destroyed, this callback will automatically be disconnected |
error | If not `NULL`, used to raise an error if `NULL` is returned |

#### Returns

a TpProxySignalConnection containing all of the above, which can be used to disconnect the signal; or `NULL` if the proxy does not have the desired interface or has become invalid.

### tp_cli_connection_interface_contact_list_signal_callback_contact_list_state_changed ()

    void
    (*tp_cli_connection_interface_contact_list_signal_callback_contact_list_state_changed)
                                   (TpConnection *proxy,
                                    guint arg_Contact_List_State,
                                    gpointer user_data,
                                    GObject *weak_object);

Represents the signature of a callback for the signal ContactListStateChanged.

#### Parameters

proxy | The proxy on which `tp_cli_connection_interface_contact_list_connect_to_contact_list_state_changed()` was called |
arg_Contact_List_State | The new value of <tp:member-ref>ContactListState</tp:member-ref>. (TpContactListState) |
user_data | User-supplied data |
weak_object | User-supplied weakly referenced object |

## See Also

TpConnection