aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configure.ac2
-rw-r--r--libempathy-gtk/empathy-contact-widget.c36
-rw-r--r--libempathy/empathy-contact.c14
-rw-r--r--libempathy/empathy-tp-chat.c27
-rw-r--r--libempathy/empathy-tp-contact-factory.c9
5 files changed, 20 insertions, 68 deletions
diff --git a/configure.ac b/configure.ac
index c3926fdb2..a387b0e36 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 18d7f415a..e8ddc01a2 100644
--- a/libempathy-gtk/empathy-contact-widget.c
+++ b/libempathy-gtk/empathy-contact-widget.c
@@ -707,30 +707,9 @@ contact_widget_got_contact_cb (EmpathyTpContactFactory *factory,
}
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 379109285..51259bddf 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 bc99ba513..ec28e2625 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 b96af76b8..7735b0f1a 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,