diff options
Diffstat (limited to 'libempathy-gtk/empathy-chat.c')
-rw-r--r-- | libempathy-gtk/empathy-chat.c | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index 0fb77f24c..e327b27d7 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -1165,14 +1165,48 @@ chat_members_changed_cb (EmpathyTpChat *tp_chat, EmpathyChatPriv *priv = GET_PRIV (chat); if (priv->block_events_timeout_id == 0) { + const gchar *name = empathy_contact_get_name (contact); gchar *str; if (is_member) { str = g_strdup_printf (_("%s has joined the room"), - empathy_contact_get_name (contact)); + name); } else { - str = g_strdup_printf (_("%s has left the room"), - empathy_contact_get_name (contact)); + const gchar *action; + + if (EMP_STR_EMPTY (message)) { + switch (reason) { + case TP_CHANNEL_GROUP_CHANGE_REASON_OFFLINE: + action = _("%s has disconnected"); + break; + case TP_CHANNEL_GROUP_CHANGE_REASON_KICKED: + action = _("%s was kicked"); + break; + case TP_CHANNEL_GROUP_CHANGE_REASON_BANNED: + action = _("%s was banned"); + break; + default: + action = _("%s has left the room"); + } + + str = g_strdup_printf (action, name); + } else { + switch (reason) { + case TP_CHANNEL_GROUP_CHANGE_REASON_OFFLINE: + action = _("%s has disconnected (%s)"); + break; + case TP_CHANNEL_GROUP_CHANGE_REASON_KICKED: + action = _("%s was kicked (%s)"); + break; + case TP_CHANNEL_GROUP_CHANGE_REASON_BANNED: + action = _("%s was banned (%s)"); + break; + default: + action = _("%s has left the room (%s)"); + } + + str = g_strdup_printf (action, name, message); + } } empathy_chat_view_append_event (chat->view, str); g_free (str); |