aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libempathy-gtk/empathy-chat.c40
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);