static void tp_contact_list_remove (EmpathyContactList *list, EmpathyContact *contact, const gchar *message) { EmpathyTpContactListPriv *priv = GET_PRIV (list); TpHandle handle; GArray handles = {(gchar *) &handle, 1}; handle = empathy_contact_get_handle (contact); /* FIXME: this is racy if tp_contact_list_remove is called before the * 'stored' list has been retrieved. */ if (priv->stored != NULL) { tp_cli_channel_interface_group_call_remove_members (priv->stored, -1, &handles, message, NULL, NULL, NULL, NULL); } if (priv->subscribe) { tp_cli_channel_interface_group_call_remove_members (priv->subscribe, -1, &handles, message, NULL, NULL, NULL, NULL); } if (priv->publish) { tp_cli_channel_interface_group_call_remove_members (priv->publish, -1, &handles, message, NULL, NULL, NULL, NULL); } }
void empathy_tp_streamed_media_leave (EmpathyTpStreamedMedia *self) { EmpathyTpStreamedMediaPriv *priv = GET_PRIV (self); TpHandle self_handle; GArray array = { (gchar *) &self_handle, 1 }; if (!tp_proxy_has_interface_by_id (priv->channel, TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP)) { empathy_tp_streamed_media_close (self); return; } self_handle = tp_channel_group_get_self_handle (priv->channel); if (self_handle == 0) { /* we are not member of the channel */ empathy_tp_streamed_media_close (self); return; } tp_cli_channel_interface_group_call_remove_members (priv->channel, -1, &array, "", leave_remove_members_cb, self, NULL, G_OBJECT (self)); }
static void tp_contact_list_rename_group (EmpathyContactList *list, const gchar *old_group_name, const gchar *new_group_name) { EmpathyTpContactListPriv *priv = GET_PRIV (list); TpChannel *channel; const TpIntSet *members; GArray *handles; channel = g_hash_table_lookup (priv->groups, old_group_name); if (channel == NULL) { return; } DEBUG ("rename group %s to %s", old_group_name, new_group_name); /* Remove all members and close the old channel */ members = tp_channel_group_get_members (channel); handles = tp_intset_to_array (members); tp_cli_channel_interface_group_call_remove_members (channel, -1, handles, NULL, NULL, NULL, NULL, NULL); tp_cli_channel_call_close (channel, -1, NULL, NULL, NULL, NULL); tp_contact_list_group_add (EMPATHY_TP_CONTACT_LIST (list), new_group_name, handles); }
static void tp_chat_remove (EmpathyContactList *list, EmpathyContact *contact, const gchar *message) { EmpathyTpChatPriv *priv = GET_PRIV (list); TpHandle handle; GArray handles = {(gchar *) &handle, 1}; g_return_if_fail (EMPATHY_IS_TP_CHAT (list)); g_return_if_fail (EMPATHY_IS_CONTACT (contact)); handle = empathy_contact_get_handle (contact); tp_cli_channel_interface_group_call_remove_members (priv->channel, -1, &handles, NULL, NULL, NULL, NULL, NULL); }
NS_IMETHODIMP csTpChannelInterfaceGroup::CallRemoveMembers(PRUint32 aContactsCount, PRUint32 *aContacts, const nsACString &aMessage, csITpChannelInterfaceGroupRemoveMembersCB *cb) { if (!m_Proxy) return NS_ERROR_NOT_INITIALIZED; GArray *cContacts = g_array_new(false, false, sizeof(guint )); for (PRUint32 i=0; i<aContactsCount; i++) g_array_append_val(cContacts, aContacts[i]); char *cMessage = ToNewCString(aMessage); NS_IF_ADDREF(cb); tp_cli_channel_interface_group_call_remove_members(m_Proxy, -1, cContacts, cMessage, cb? RemoveMembersResponse: NULL, cb? cb: NULL, NULL, NULL); return NS_OK; }
void polari_room_remove_member (PolariRoom *room, TpContact *member) { TpChannel *channel; g_return_if_fail (POLARI_IS_ROOM (room)); channel = room->priv->channel; if (!tp_proxy_has_interface_by_id (TP_PROXY (channel), TP_IFACE_QUARK_CHANNEL_INTERFACE_GROUP)) return; { TpHandle handle = tp_contact_get_handle (member); GArray handles = { (char *)&handle, 1 }; tp_cli_channel_interface_group_call_remove_members (channel, -1, &handles, NULL, NULL, NULL, NULL, NULL); } }
static void tp_contact_list_remove_from_group (EmpathyContactList *list, EmpathyContact *contact, const gchar *group_name) { EmpathyTpContactListPriv *priv = GET_PRIV (list); TpChannel *channel; TpHandle handle; GArray handles = {(gchar *) &handle, 1}; channel = g_hash_table_lookup (priv->groups, group_name); if (channel == NULL) { return; } handle = empathy_contact_get_handle (contact); DEBUG ("remove contact %s (%d) from group %s", empathy_contact_get_id (contact), handle, group_name); tp_cli_channel_interface_group_call_remove_members (channel, -1, &handles, NULL, NULL, NULL, NULL, NULL); }
static void tp_contact_list_remove_group (EmpathyContactList *list, const gchar *group_name) { EmpathyTpContactListPriv *priv = GET_PRIV (list); TpChannel *channel; const TpIntSet *members; GArray *handles; channel = g_hash_table_lookup (priv->groups, group_name); if (channel == NULL) { return; } DEBUG ("remove group %s", group_name); /* Remove all members and close the channel */ members = tp_channel_group_get_members (channel); handles = tp_intset_to_array (members); tp_cli_channel_interface_group_call_remove_members (channel, -1, handles, NULL, NULL, NULL, NULL, NULL); tp_cli_channel_call_close (channel, -1, NULL, NULL, NULL, NULL); g_array_unref (handles); }