static gboolean contact_manager_get_blocked (EmpathyContactList *manager, EmpathyContact *contact) { EmpathyContactManagerPriv *priv = GET_PRIV (manager); EmpathyContactList *list; TpConnection *connection; g_return_val_if_fail (EMPATHY_IS_CONTACT_MANAGER (manager), FALSE); connection = empathy_contact_get_connection (contact); list = g_hash_table_lookup (priv->lists, connection); if (list != NULL) { return empathy_contact_list_get_blocked (list, contact); } else { return FALSE; } }
static GtkWidget * empathy_contact_block_menu_item_new (EmpathyContact *contact) { GtkWidget *item; EmpathyContactManager *manager; TpConnection *connection; EmpathyContactListFlags flags; gboolean blocked; g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL); manager = empathy_contact_manager_dup_singleton (); if (!empathy_contact_manager_initialized ()) { return NULL; } connection = empathy_contact_get_connection (contact); flags = empathy_contact_manager_get_flags_for_connection (manager, connection); if (!(flags & EMPATHY_CONTACT_LIST_CAN_BLOCK)) { return NULL; } item = gtk_check_menu_item_new_with_mnemonic (_("_Block Contact")); blocked = empathy_contact_list_get_blocked ( EMPATHY_CONTACT_LIST (manager), contact); gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item), blocked); g_signal_connect (item, "toggled", G_CALLBACK (empathy_contact_block_menu_item_toggled), contact); return item; }