- tp_proxy_prepare_async (conn, NULL,
- contact_blocking_dialog_connection_prepared, self);
- }
-}
-
-static void
-contact_blocking_dialog_deny_channel_members_changed (TpChannel *channel,
- const char *message,
- GArray *added,
- GArray *removed,
- GArray *local_pending,
- GArray *remote_pending,
- TpHandle actor,
- guint reason,
- EmpathyContactBlockingDialog *self)
-{
- TpConnection *conn = tp_channel_borrow_connection (channel);
- GtkTreeModel *model = GTK_TREE_MODEL (self->priv->blocked_contacts);
- GtkTreeIter iter;
- TpIntset *removed_set;
- gboolean valid;
-
- /* we only care about changes to the selected connection */
- /* FIXME: can we compare proxy pointers directly? */
- if (tp_strdiff (
- tp_proxy_get_object_path (tp_channel_borrow_connection (channel)),
- tp_proxy_get_object_path (empathy_account_chooser_get_connection (
- EMPATHY_ACCOUNT_CHOOSER (self->priv->account_chooser)))))
- return;
-
- DEBUG ("deny list changed on %s: %u added, %u removed",
- get_pretty_conn_name (conn), added->len, removed->len);
-
- /* add contacts */
- contact_blocking_dialog_add_contacts_to_list (self, conn, added);
-
- /* remove contacts */
- removed_set = tp_intset_from_array (removed);
-
- valid = gtk_tree_model_get_iter_first (model, &iter);
- while (valid)
- {
- TpHandle handle;
-
- gtk_tree_model_get (model, &iter,
- COL_BLOCKED_HANDLE, &handle,
- -1);
-
- if (tp_intset_is_member (removed_set, handle))
- valid = gtk_list_store_remove (self->priv->blocked_contacts, &iter);
- else
- valid = gtk_tree_model_iter_next (model, &iter);