#include <telepathy-glib/account-manager.h>
-#include <libempathy/empathy-contact-manager.h>
-#include <libempathy/empathy-contact-list.h>
#include <libempathy/empathy-tp-contact-factory.h>
#include <libempathy/empathy-utils.h>
static GList *subscription_dialogs = NULL;
static GList *information_dialogs = NULL;
-static GList *edit_dialogs = NULL;
-static GtkWidget *personal_dialog = NULL;
static GtkWidget *new_contact_dialog = NULL;
static gint
gint response,
GtkWidget *contact_widget)
{
- EmpathyContactManager *manager;
EmpathyContact *contact;
- manager = empathy_contact_manager_dup_singleton ();
contact = empathy_contact_widget_get_contact (contact_widget);
if (response == GTK_RESPONSE_YES) {
- empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager),
- contact, "");
+ empathy_contact_add_to_contact_list (contact, "");
empathy_contact_set_alias (contact,
empathy_contact_widget_get_alias (contact_widget));
}
else if (response == GTK_RESPONSE_NO) {
- empathy_contact_list_remove (EMPATHY_CONTACT_LIST (manager),
- contact, "");
+ empathy_contact_remove_from_contact_list (contact);
}
else if (response == GTK_RESPONSE_REJECT) {
gboolean abusive;
/* confirm the blocking */
- if (empathy_block_contact_dialog_show (GTK_WINDOW (dialog),
- contact, &abusive)) {
- empathy_contact_list_remove (
- EMPATHY_CONTACT_LIST (manager),
- contact, "");
- empathy_contact_list_set_blocked (
- EMPATHY_CONTACT_LIST (manager),
- contact, TRUE, abusive);
+ if (empathy_block_contact_dialog_show (GTK_WINDOW (dialog), contact,
+ NULL, &abusive)) {
+ TpContact *tp_contact;
+
+ empathy_contact_remove_from_contact_list (contact);
+
+ tp_contact = empathy_contact_get_tp_contact (contact);
+
+ tp_contact_block_async (tp_contact, abusive, NULL, NULL);
} else {
/* if they don't confirm, return back to the
* first dialog */
- goto finally;
+ return;
}
}
subscription_dialogs = g_list_remove (subscription_dialogs, dialog);
gtk_widget_destroy (GTK_WIDGET (dialog));
-
-finally:
- g_object_unref (manager);
}
void
GtkWidget *block_user_button;
GList *l;
gchar *filename;
- EmpathyContactManager *manager;
- EmpathyContactListFlags flags;
-
- manager = empathy_contact_manager_dup_singleton ();
+ TpConnection *conn;
g_return_if_fail (EMPATHY_IS_CONTACT (contact));
g_free (filename);
g_object_unref (gui);
- vbox = gtk_vbox_new (FALSE, 6);
+ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
gtk_box_pack_end (GTK_BOX (hbox_subscription), vbox,
TRUE, TRUE, 0);
G_CALLBACK (subscription_dialog_response_cb),
contact_widget);
- flags = empathy_contact_manager_get_flags_for_connection (manager,
- empathy_contact_get_connection (contact));
+ conn = empathy_contact_get_connection (contact);
- if (flags & EMPATHY_CONTACT_LIST_CAN_BLOCK)
+ if (tp_proxy_has_interface_by_id (conn,
+ TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING))
gtk_widget_show (block_user_button);
if (parent) {
gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
}
- g_object_unref (manager);
gtk_widget_show (dialog);
}
gtk_widget_show (dialog);
}
-void
-empathy_contact_edit_dialog_show (EmpathyContact *contact,
- GtkWindow *parent)
-{
- GtkWidget *dialog;
- GtkWidget *button;
- GtkWidget *contact_widget;
- GList *l;
-
- g_return_if_fail (EMPATHY_IS_CONTACT (contact));
-
- l = g_list_find_custom (edit_dialogs,
- contact,
- (GCompareFunc) contact_dialogs_find);
- if (l) {
- gtk_window_present (GTK_WINDOW (l->data));
- return;
- }
-
- /* Create dialog */
- dialog = gtk_dialog_new ();
- gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
- gtk_window_set_title (GTK_WINDOW (dialog), _("Edit Contact Information"));
-
- /* Close button */
- button = gtk_button_new_with_label (GTK_STOCK_CLOSE);
- gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
- gtk_dialog_add_action_widget (GTK_DIALOG (dialog),
- button,
- GTK_RESPONSE_CLOSE);
- gtk_widget_set_can_default (button, TRUE);
- gtk_window_set_default (GTK_WINDOW (dialog), button);
- gtk_widget_show (button);
-
- /* Contact info widget */
- contact_widget = empathy_contact_widget_new (contact,
- EMPATHY_CONTACT_WIDGET_EDIT_ALIAS |
- EMPATHY_CONTACT_WIDGET_EDIT_GROUPS |
- EMPATHY_CONTACT_WIDGET_EDIT_FAVOURITE);
- gtk_container_set_border_width (GTK_CONTAINER (contact_widget), 8);
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
- contact_widget,
- TRUE, TRUE, 0);
- gtk_widget_show (contact_widget);
-
- g_object_set_data (G_OBJECT (dialog), "contact_widget", contact_widget);
- edit_dialogs = g_list_prepend (edit_dialogs, dialog);
-
- g_signal_connect (dialog, "response",
- G_CALLBACK (contact_dialogs_response_cb),
- &edit_dialogs);
-
- if (parent) {
- gtk_window_set_transient_for (GTK_WINDOW (dialog), parent);
- }
-
- gtk_widget_show (dialog);
-}
-
-void
-empathy_contact_personal_dialog_show (GtkWindow *parent)
-{
- GtkWidget *button;
- GtkWidget *contact_widget;
-
- if (personal_dialog) {
- gtk_window_present (GTK_WINDOW (personal_dialog));
- return;
- }
-
- /* Create dialog */
- personal_dialog = gtk_dialog_new ();
- gtk_window_set_resizable (GTK_WINDOW (personal_dialog), FALSE);
- gtk_window_set_title (GTK_WINDOW (personal_dialog), _("Personal Information"));
-
- /* Close button */
- button = gtk_button_new_with_label (GTK_STOCK_CLOSE);
- gtk_button_set_use_stock (GTK_BUTTON (button), TRUE);
- gtk_dialog_add_action_widget (GTK_DIALOG (personal_dialog),
- button,
- GTK_RESPONSE_CLOSE);
- gtk_widget_set_can_default (button, TRUE);
- gtk_window_set_default (GTK_WINDOW (personal_dialog), button);
- gtk_widget_show (button);
-
- /* Contact info widget */
- contact_widget = empathy_contact_widget_new (NULL,
- EMPATHY_CONTACT_WIDGET_EDIT_ACCOUNT |
- EMPATHY_CONTACT_WIDGET_EDIT_ALIAS |
- EMPATHY_CONTACT_WIDGET_EDIT_AVATAR |
- EMPATHY_CONTACT_WIDGET_EDIT_DETAILS);
- gtk_container_set_border_width (GTK_CONTAINER (contact_widget), 8);
- gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (personal_dialog))),
- contact_widget,
- TRUE, TRUE, 0);
- empathy_contact_widget_set_account_filter (contact_widget,
- empathy_account_chooser_filter_is_connected, NULL);
- gtk_widget_show (contact_widget);
-
- g_signal_connect (personal_dialog, "response",
- G_CALLBACK (gtk_widget_destroy), NULL);
- g_object_add_weak_pointer (G_OBJECT (personal_dialog),
- (gpointer) &personal_dialog);
-
- if (parent) {
- gtk_window_set_transient_for (GTK_WINDOW (personal_dialog), parent);
- }
-
- gtk_widget_show (personal_dialog);
-}
-
/*
* New contact dialog
*/
gpointer callback_data,
gpointer user_data)
{
- EmpathyContactManager *contact_manager;
TpConnection *connection;
gboolean result;
return;
}
- contact_manager = empathy_contact_manager_dup_singleton ();
- result = empathy_contact_manager_get_flags_for_connection (
- contact_manager, connection) & EMPATHY_CONTACT_LIST_CAN_ADD;
- g_object_unref (contact_manager);
+ result = tp_connection_get_can_change_contact_list (connection);
callback (result, callback_data);
}
gint response,
GtkWidget *contact_widget)
{
- EmpathyContactManager *manager;
EmpathyContact *contact;
- manager = empathy_contact_manager_dup_singleton ();
contact = empathy_contact_widget_get_contact (contact_widget);
if (contact && response == GTK_RESPONSE_OK) {
- empathy_contact_list_add (EMPATHY_CONTACT_LIST (manager),
- contact, "");
+ empathy_contact_add_to_contact_list (contact, "");
}
new_contact_dialog = NULL;
gtk_widget_destroy (GTK_WIDGET (dialog));
- g_object_unref (manager);
}
void
gboolean
empathy_block_contact_dialog_show (GtkWindow *parent,
EmpathyContact *contact,
+ GdkPixbuf *avatar,
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));
+ TpConnection *conn;
dialog = gtk_message_dialog_new (parent,
GTK_DIALOG_MODAL,
_("_Block"), GTK_RESPONSE_REJECT,
NULL);
+ if (avatar != NULL) {
+ GtkWidget *image = gtk_image_new_from_pixbuf (avatar);
+ gtk_message_dialog_set_image (GTK_MESSAGE_DIALOG (dialog), image);
+ gtk_widget_show (image);
+ }
+
+ conn = empathy_contact_get_connection (contact);
+
/* ask the user if they want to also report the contact as abusive */
- if (flags & EMPATHY_CONTACT_LIST_CAN_REPORT_ABUSIVE) {
+ if (tp_connection_can_report_abusive (conn)) {
GtkWidget *vbox;
vbox = gtk_message_dialog_get_message_area (
}
gtk_widget_destroy (dialog);
- g_object_unref (manager);
return res == GTK_RESPONSE_REJECT;
}