diff options
author | Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk> | 2011-05-18 00:49:39 +0800 |
---|---|---|
committer | Emilio Pozuelo Monfort <emilio.pozuelo@collabora.co.uk> | 2011-09-05 23:26:17 +0800 |
commit | 601297c0ea82f38432445a2dc4a211cbdb98e915 (patch) | |
tree | 7cd1e2fadf3f9d55fdd768065c757b7d9f56ba1e /libempathy-gtk/empathy-chat.c | |
parent | d22e151a1880642b5b4ee06e8566727ddfe9a79c (diff) | |
download | gsoc2013-empathy-601297c0ea82f38432445a2dc4a211cbdb98e915.tar gsoc2013-empathy-601297c0ea82f38432445a2dc4a211cbdb98e915.tar.gz gsoc2013-empathy-601297c0ea82f38432445a2dc4a211cbdb98e915.tar.bz2 gsoc2013-empathy-601297c0ea82f38432445a2dc4a211cbdb98e915.tar.lz gsoc2013-empathy-601297c0ea82f38432445a2dc4a211cbdb98e915.tar.xz gsoc2013-empathy-601297c0ea82f38432445a2dc4a211cbdb98e915.tar.zst gsoc2013-empathy-601297c0ea82f38432445a2dc4a211cbdb98e915.zip |
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
Diffstat (limited to 'libempathy-gtk/empathy-chat.c')
-rw-r--r-- | libempathy-gtk/empathy-chat.c | 50 |
1 files changed, 47 insertions, 3 deletions
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 @@ -1397,6 +1397,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." + " <a href='%s'>Top up</a>."), 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, TpChannelTextSendError error_code, @@ -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"); } |