From 73a749cafbd78b45494aa5eba645ef2fe9c4e21a Mon Sep 17 00:00:00 2001 From: Xavier Claessens Date: Fri, 20 Jul 2007 15:26:30 +0000 Subject: Initial room list support. It does not works yet. 2007-07-20 Xavier Claessens * libempathy/Makefile.am: * libempathy/empathy-tp-roomlist.h: * libempathy/empathy-tp-roomlist.c: * libempathy-gtk/empathy-chatrooms-window.c: * libempathy-gtk/empathy-new-chatroom-dialog.c: Initial room list support. It does not works yet. * libempathy-gtk/empathy-account-widget-generic.c: Add support for all types of integer and float. Fixes bug #457740 (Jamey Hicks). * libempathy/empathy-tp-chat.c: * libempathy-gtk/empathy-chat.c: If there is an error sending a message, show an error message to the user. * libempathy-gtk/empathy-accounts-dialog.c: Fix a leak, profile should be unrefed after mc_account_get_profile. * libempathy/empathy-utils.c: * libempathy/empathy-utils.h: * libempathy/empathy-tp-chatroom.c: * libempathy/empathy-tp-group.h: * libempathy/empathy-tp-group.c: * src/empathy.c: Rename empathy_get_channel_id() to empathy_inspect_channel(). We now have empathy_inspect_handle(). * po/POTFILES.in: * libempathy/empathy-tp-contact-list.c: Set all contacts from salut protocol to the "Local Network" group. * libempathy/empathy-idle.c: Fix NetworkManager support. * libempathy/empathy-chatroom.h: Fix indentation. * libempathy-gtk/empathy-status-icon.c: * libempathy-gtk/empathy-ui-utils.c: * libempathy-gtk/empathy-ui-utils.h: - Iconify main window to the status icon like in rhythmbox. Fixes bug #458106 (Jaap A. Haitsma). - Rounded avatars. Fixes bug #457992 (Raphael Slinckx) * Makefile.am: Fix distcheck for gtkdoc (Vincent Untz) * data/empathy.desktop.in.in: Change application description (Jaap A. Haitsma). svn path=/trunk/; revision=190 --- libempathy/empathy-tp-chat.c | 46 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) (limited to 'libempathy/empathy-tp-chat.c') diff --git a/libempathy/empathy-tp-chat.c b/libempathy/empathy-tp-chat.c index e52b4a086..691d7a2f1 100644 --- a/libempathy/empathy-tp-chat.c +++ b/libempathy/empathy-tp-chat.c @@ -88,6 +88,12 @@ static void tp_chat_sent_cb (DBusGProxy guint message_type, gchar *message_body, EmpathyTpChat *chat); +static void tp_chat_send_error_cb (DBusGProxy *text_iface, + guint error_code, + guint timestamp, + guint message_type, + gchar *message_body, + EmpathyTpChat *chat); static void tp_chat_state_changed_cb (DBusGProxy *chat_state_iface, guint handle, TelepathyChannelChatState state, @@ -127,6 +133,7 @@ enum { enum { MESSAGE_RECEIVED, + SEND_ERROR, CHAT_STATE_CHANGED, DESTROY, LAST_SIGNAL @@ -291,6 +298,16 @@ empathy_tp_chat_class_init (EmpathyTpChatClass *klass) G_TYPE_NONE, 1, EMPATHY_TYPE_MESSAGE); + signals[SEND_ERROR] = + g_signal_new ("send-error", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + empathy_marshal_VOID__OBJECT_UINT, + G_TYPE_NONE, + 2, EMPATHY_TYPE_MESSAGE, G_TYPE_UINT); + signals[CHAT_STATE_CHANGED] = g_signal_new ("chat-state-changed", G_TYPE_FROM_CLASS (klass), @@ -399,6 +416,9 @@ tp_chat_constructor (GType type, dbus_g_proxy_connect_signal (priv->text_iface, "Sent", G_CALLBACK (tp_chat_sent_cb), chat, NULL); + dbus_g_proxy_connect_signal (priv->text_iface, "SendError", + G_CALLBACK (tp_chat_send_error_cb), + chat, NULL); if (priv->chat_state_iface != NULL) { dbus_g_proxy_connect_signal (priv->chat_state_iface, @@ -733,7 +753,7 @@ empathy_tp_chat_get_id (EmpathyTpChat *chat) return priv->id; } - priv->id = empathy_get_channel_id (priv->account, priv->tp_chan); + priv->id = empathy_inspect_channel (priv->account, priv->tp_chan); return priv->id; } @@ -770,7 +790,6 @@ tp_chat_closed_cb (TpChan *text_chan, tp_chat_destroy_cb, chat); tp_chat_destroy_cb (text_chan, chat); - } static void @@ -831,6 +850,29 @@ tp_chat_sent_cb (DBusGProxy *text_iface, g_object_unref (message); } +static void +tp_chat_send_error_cb (DBusGProxy *text_iface, + guint error_code, + guint timestamp, + guint message_type, + gchar *message_body, + EmpathyTpChat *chat) +{ + EmpathyMessage *message; + + empathy_debug (DEBUG_DOMAIN, "Message sent error: %s (%d)", + message_body, error_code); + + message = tp_chat_build_message (chat, + message_type, + timestamp, + 0, + message_body); + + g_signal_emit (chat, signals[SEND_ERROR], 0, message, error_code); + g_object_unref (message); +} + static void tp_chat_state_changed_cb (DBusGProxy *chat_state_iface, guint handle, -- cgit v1.2.3