From 6c8045628c9b9092e80aa0183d0e33798c37d661 Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Tue, 17 May 2011 16:34:55 +0100 Subject: Add empathy_chat_view_append_event_markup Conflicts: libempathy-gtk/empathy-chat-view.c libempathy-gtk/empathy-chat-view.h --- libempathy-gtk/empathy-chat-view.c | 16 ++++++++++++++++ libempathy-gtk/empathy-chat-view.h | 6 ++++++ 2 files changed, 22 insertions(+) (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/empathy-chat-view.c b/libempathy-gtk/empathy-chat-view.c index 49c384489..088b12084 100644 --- a/libempathy-gtk/empathy-chat-view.c +++ b/libempathy-gtk/empathy-chat-view.c @@ -83,6 +83,22 @@ empathy_chat_view_append_event (EmpathyChatView *view, } } +void +empathy_chat_view_append_event_markup (EmpathyChatView *view, + const gchar *markup_text, + const gchar *fallback_text) +{ + g_return_if_fail (EMPATHY_IS_CHAT_VIEW (view)); + + if (EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->append_event_markup) { + EMPATHY_TYPE_CHAT_VIEW_GET_IFACE (view)->append_event_markup (view, + markup_text, + fallback_text); + } else { + empathy_chat_view_append_event (view, fallback_text); + } +} + void empathy_chat_view_edit_message (EmpathyChatView *view, EmpathyMessage *message) diff --git a/libempathy-gtk/empathy-chat-view.h b/libempathy-gtk/empathy-chat-view.h index 1fa44450a..bc9e91761 100644 --- a/libempathy-gtk/empathy-chat-view.h +++ b/libempathy-gtk/empathy-chat-view.h @@ -46,6 +46,9 @@ struct _EmpathyChatViewIface { EmpathyMessage *msg); void (*append_event) (EmpathyChatView *view, const gchar *str); + void (*append_event_markup) (EmpathyChatView *view, + const gchar *markup_text, + const gchar *fallback_text); void (*edit_message) (EmpathyChatView *view, EmpathyMessage *message); void (*scroll) (EmpathyChatView *view, @@ -81,6 +84,9 @@ void empathy_chat_view_append_message (EmpathyChatView *view, EmpathyMessage *msg); void empathy_chat_view_append_event (EmpathyChatView *view, const gchar *str); +void empathy_chat_view_append_event_markup (EmpathyChatView *view, + const gchar *markup_text, + const gchar *fallback_text); void empathy_chat_view_edit_message (EmpathyChatView *view, EmpathyMessage *message); void empathy_chat_view_scroll (EmpathyChatView *view, -- cgit v1.2.3 From d22e151a1880642b5b4ee06e8566727ddfe9a79c Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Tue, 17 May 2011 16:35:21 +0100 Subject: EmpathyThemeAdium: implement append_event_markup Conflicts: libempathy-gtk/empathy-theme-adium.c --- libempathy-gtk/empathy-theme-adium.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index 4e32630d5..a6a697a29 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -975,6 +975,14 @@ theme_adium_append_event (EmpathyChatView *view, g_free (str_escaped); } +static void +theme_adium_append_event_markup (EmpathyChatView *view, + const gchar *markup_text, + const gchar *fallback_text) +{ + theme_adium_append_event_escaped (view, markup_text); +} + static void theme_adium_edit_message (EmpathyChatView *view, EmpathyMessage *message) @@ -1291,6 +1299,7 @@ theme_adium_iface_init (EmpathyChatViewIface *iface) { iface->append_message = theme_adium_append_message; iface->append_event = theme_adium_append_event; + iface->append_event_markup = theme_adium_append_event_markup; iface->edit_message = theme_adium_edit_message; iface->scroll = theme_adium_scroll; iface->scroll_down = theme_adium_scroll_down; -- cgit v1.2.3 From 601297c0ea82f38432445a2dc4a211cbdb98e915 Mon Sep 17 00:00:00 2001 From: Emilio Pozuelo Monfort Date: Tue, 17 May 2011 17:49:39 +0100 Subject: EmpathyChat: add a 'Top up' link when there's not enough credit This is only added for Adium themes since ChatTextView ones don't support markup. Conflicts: libempathy-gtk/empathy-chat.c --- libempathy-gtk/empathy-chat.c | 50 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) (limited to 'libempathy-gtk') diff --git a/libempathy-gtk/empathy-chat.c b/libempathy-gtk/empathy-chat.c index 032dd2464..ffd12de2b 100644 --- a/libempathy-gtk/empathy-chat.c +++ b/libempathy-gtk/empathy-chat.c @@ -1396,6 +1396,51 @@ chat_message_acknowledged_cb (EmpathyTpChat *tp_chat, } } +static void +append_balance_error (EmpathyChat *chat, + const gchar *message_body) +{ + EmpathyChatPriv *priv = GET_PRIV (chat); + TpConnection *conn = tp_channel_borrow_connection (TP_CHANNEL (priv->tp_chat)); + const gchar *uri = tp_connection_get_balance_uri (conn); + const gchar *error = _("insufficient balance to send message"); + gchar *str, *str_markup = NULL; + + if (message_body != NULL) { + str = g_strdup_printf (_("Error sending message '%s': %s"), message_body, error); + } else { + str = g_strdup_printf (_("Error sending message: %s"), error); + } + + if (!tp_str_empty (uri)) { + /* translators: error used when user doesn't have enough credit on his + * account to send the message. */ + gchar *markup_error = g_strdup_printf (_("insufficient balance to send message." + " Top up."), uri); + + if (message_body != NULL) { + gchar *escaped_body = g_markup_escape_text (message_body, -1); + + str_markup = g_strdup_printf (_("Error sending message '%s': %s"), + escaped_body, markup_error); + + g_free (escaped_body); + } else { + str_markup = g_strdup_printf (_("Error sending message: %s"), markup_error); + } + + g_free (markup_error); + } + + if (str_markup != NULL) + empathy_chat_view_append_event_markup (chat->view, str_markup, str); + else + empathy_chat_view_append_event (chat->view, str); + + g_free (str); + g_free (str_markup); +} + static void chat_send_error_cb (EmpathyTpChat *tp_chat, const gchar *message_body, @@ -1407,9 +1452,8 @@ chat_send_error_cb (EmpathyTpChat *tp_chat, gchar *str; if (!tp_strdiff (dbus_error, TP_ERROR_STR_INSUFFICIENT_BALANCE)) { - /* translators: error used when user doesn't have enough credit on his - * account to send the message. */ - error = _("insufficient balance to send message"); + append_balance_error (chat, message_body); + return; } else if (!tp_strdiff (dbus_error, TP_ERROR_STR_NOT_CAPABLE)) { error = _("not capable"); } -- cgit v1.2.3