From 7761eeb4a0e307c14a96906cca1a94346f39c3a6 Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Wed, 18 Mar 2009 01:28:03 +0100 Subject: [PATCH] Use tp_connection_get_self_handle where needed --- configure.ac | 2 +- libempathy-gtk/empathy-contact-widget.c | 36 +++++-------------------- libempathy/empathy-contact.c | 14 ---------- libempathy/empathy-tp-chat.c | 27 +++---------------- libempathy/empathy-tp-contact-factory.c | 9 ++++++- 5 files changed, 20 insertions(+), 68 deletions(-) diff --git a/configure.ac b/configure.ac index c3926fdb..a387b0e3 100644 --- a/configure.ac +++ b/configure.ac @@ -29,7 +29,7 @@ GLIB_REQUIRED=2.16.0 GTK_REQUIRED=2.16.0 GCONF_REQUIRED=1.2.0 LIBPANELAPPLET_REQUIRED=2.10.0 -TELEPATHY_GLIB_REQUIRED=0.7.23 +TELEPATHY_GLIB_REQUIRED=0.7.26 MISSION_CONTROL_REQUIRED=4.61 ENCHANT_REQUIRED=1.2.0 ISO_CODES_REQUIRED=0.35 diff --git a/libempathy-gtk/empathy-contact-widget.c b/libempathy-gtk/empathy-contact-widget.c index 18d7f415..e8ddc01a 100644 --- a/libempathy-gtk/empathy-contact-widget.c +++ b/libempathy-gtk/empathy-contact-widget.c @@ -706,31 +706,10 @@ contact_widget_got_contact_cb (EmpathyTpContactFactory *factory, contact_widget_set_contact (information, contact); } -static void -contact_widget_get_self_handle_cb (TpConnection *connection, - TpHandle self_handle, - const GError *error, - gpointer information, - GObject *weak_object) -{ - EmpathyTpContactFactory *factory; - - if (error != NULL) - { - DEBUG ("Error: %s", error->message); - return; - } - - factory = empathy_tp_contact_factory_dup_singleton (connection); - empathy_tp_contact_factory_get_from_handle (factory, self_handle, - contact_widget_got_contact_cb, information, NULL, - weak_object); - g_object_unref (factory); -} - static void contact_widget_change_contact (EmpathyContactWidget *information) { + EmpathyTpContactFactory *factory; TpConnection *connection; connection = empathy_account_chooser_get_connection ( @@ -738,6 +717,7 @@ contact_widget_change_contact (EmpathyContactWidget *information) if (!connection) return; + factory = empathy_tp_contact_factory_dup_singleton (connection); if (information->flags & EMPATHY_CONTACT_WIDGET_EDIT_ID) { const gchar *id; @@ -745,22 +725,20 @@ contact_widget_change_contact (EmpathyContactWidget *information) id = gtk_entry_get_text (GTK_ENTRY (information->widget_id)); if (!EMP_STR_EMPTY (id)) { - EmpathyTpContactFactory *factory; - - factory = empathy_tp_contact_factory_dup_singleton (connection); empathy_tp_contact_factory_get_from_id (factory, id, contact_widget_got_contact_cb, information, NULL, G_OBJECT (information->vbox_contact_widget)); - g_object_unref (factory); } } else { - /* FIXME: TpConnection should have a SelfHandle property */ - tp_cli_connection_call_get_self_handle (connection, -1, - contact_widget_get_self_handle_cb, information, NULL, + empathy_tp_contact_factory_get_from_handle (factory, + tp_connection_get_self_handle (connection), + contact_widget_got_contact_cb, information, NULL, G_OBJECT (information->vbox_contact_widget)); } + + g_object_unref (factory); } static void diff --git a/libempathy/empathy-contact.c b/libempathy/empathy-contact.c index 37910928..51259bdd 100644 --- a/libempathy/empathy-contact.c +++ b/libempathy/empathy-contact.c @@ -727,20 +727,6 @@ empathy_contact_is_user (EmpathyContact *contact) priv = GET_PRIV (contact); - /* FIXME: Uncomment this once we depend on tp-glib 0.7.26 - if (priv->tp_contact != NULL) - { - TpConnection *connection; - TpHandle handle; - TpHandle self_handle; - - connection = tp_contact_get_connection (priv->tp_contact); - self_handle = tp_connection_get_self_handle (connection); - handle = tp_contact_get_handle (priv->tp_contact); - return self_handle == handle; - } - */ - return priv->is_user; } diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index bc99ba51..ec28e262 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -962,27 +962,6 @@ tp_chat_got_self_contact_cb (EmpathyTpContactFactory *factory, tp_chat_check_if_ready (EMPATHY_TP_CHAT (chat)); } -static void -tp_chat_get_self_handle_cb (TpConnection *connection, - TpHandle self_handle, - const GError *error, - gpointer user_data, - GObject *chat) -{ - EmpathyTpChatPriv *priv = GET_PRIV (chat); - - if (error) { - DEBUG ("Error: %s", error->message); - tp_cli_channel_call_close (priv->channel, -1, - NULL, NULL, NULL, NULL); - return; - } - - empathy_tp_contact_factory_get_from_handle (priv->factory, - self_handle, tp_chat_got_self_contact_cb, - NULL, NULL, chat); -} - static GObject * tp_chat_constructor (GType type, guint n_props, @@ -1025,8 +1004,10 @@ tp_chat_constructor (GType type, G_CALLBACK (tp_chat_group_members_changed_cb), chat); } else { /* Get the self contact from the connection's self handle */ - tp_cli_connection_call_get_self_handle (connection, -1, - tp_chat_get_self_handle_cb, NULL, NULL, chat); + handle = tp_connection_get_self_handle (connection); + empathy_tp_contact_factory_get_from_handle (priv->factory, + handle, tp_chat_got_self_contact_cb, + NULL, NULL, chat); /* Get the remote contact */ handle = tp_channel_get_handle (priv->channel, NULL); diff --git a/libempathy/empathy-tp-contact-factory.c b/libempathy/empathy-tp-contact-factory.c index b96af76b..7735b0f1 100644 --- a/libempathy/empathy-tp-contact-factory.c +++ b/libempathy/empathy-tp-contact-factory.c @@ -502,6 +502,7 @@ tp_contact_factory_add_contact (EmpathyTpContactFactory *tp_factory, EmpathyContact *contact) { EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory); + TpHandle self_handle; TpHandle handle; GArray handles = {(gchar*) &handle, 1}; GHashTable *tokens; @@ -529,8 +530,14 @@ tp_contact_factory_add_contact (EmpathyTpContactFactory *tp_factory, empathy_contact_set_capabilities (contact, caps); } - /* FIXME: This should be done by TpContact */ + /* Set is-user property. Note that it could still be the handle is + * different from the connection's self handle, in the case the handle + * comes from a group interface. */ + self_handle = tp_connection_get_self_handle (priv->connection); handle = empathy_contact_get_handle (contact); + empathy_contact_set_is_user (contact, self_handle == handle); + + /* FIXME: This should be done by TpContact */ tp_cli_connection_interface_avatars_run_get_known_avatar_tokens (priv->connection, -1, &handles, -- 2.39.2