diff options
-rw-r--r-- | libempathy-gtk/empathy-contact-dialogs.c | 33 | ||||
-rw-r--r-- | libempathy/empathy-contact-list.h | 1 |
2 files changed, 31 insertions, 3 deletions
diff --git a/libempathy-gtk/empathy-contact-dialogs.c b/libempathy-gtk/empathy-contact-dialogs.c index 11b608bef..8408ed6ca 100644 --- a/libempathy-gtk/empathy-contact-dialogs.c +++ b/libempathy-gtk/empathy-contact-dialogs.c @@ -502,9 +502,16 @@ empathy_block_contact_dialog_show (GtkWindow *parent, EmpathyContact *contact, gboolean *abusive) { + EmpathyContactManager *manager; + EmpathyContactListFlags flags; GtkWidget *dialog; + GtkWidget *abusive_check = NULL; int res; + manager = empathy_contact_manager_dup_singleton (); + flags = empathy_contact_manager_get_flags_for_connection (manager, + empathy_contact_get_connection (contact)); + dialog = gtk_message_dialog_new (parent, GTK_DIALOG_MODAL, GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, @@ -520,13 +527,33 @@ empathy_block_contact_dialog_show (GtkWindow *parent, _("_Block"), GTK_RESPONSE_REJECT, NULL); - /* FIXME: support reporting abusive contacts */ + /* ask the user if they want to also report the contact as abusive */ + if (flags & EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE) { + GtkWidget *vbox; + + vbox = gtk_message_dialog_get_message_area ( + GTK_MESSAGE_DIALOG (dialog)); + abusive_check = gtk_check_button_new_with_mnemonic ( + _("_Report this contact as abusive")); + + gtk_box_pack_start (GTK_BOX (vbox), abusive_check, + FALSE, TRUE, 0); + gtk_widget_show (abusive_check); + } res = gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); - if (abusive != NULL) - *abusive = FALSE; + if (abusive != NULL) { + if (abusive_check != NULL) { + *abusive = gtk_toggle_button_get_active ( + GTK_TOGGLE_BUTTON (abusive_check)); + } else { + *abusive = FALSE; + } + } + + g_object_unref (manager); return res == GTK_RESPONSE_REJECT; } diff --git a/libempathy/empathy-contact-list.h b/libempathy/empathy-contact-list.h index 683974906..8be93baf9 100644 --- a/libempathy/empathy-contact-list.h +++ b/libempathy/empathy-contact-list.h @@ -40,6 +40,7 @@ typedef enum { EMPATHY_CONTACT_LIST_CAN_ALIAS = 1 << 2, EMPATHY_CONTACT_LIST_CAN_GROUP = 1 << 3, EMPATHY_CONTACT_LIST_CAN_BLOCK = 1 << 4, + EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE = 1 << 5, } EmpathyContactListFlags; typedef struct _EmpathyContactListIface EmpathyContactListIface; |