diff options
author | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-08-01 11:04:15 +0800 |
---|---|---|
committer | Danielle Madeley <danielle.madeley@collabora.co.uk> | 2011-08-01 11:04:15 +0800 |
commit | e3d0a1862508fad3d16585b0210a2a9328453c2f (patch) | |
tree | 6b2e374f716488ff84e0ef5cf425dd784f0c42ea /libempathy-gtk/empathy-theme-adium.c | |
parent | d890a28335477c0e18cd68264467e7be45496388 (diff) | |
download | gsoc2013-empathy-e3d0a1862508fad3d16585b0210a2a9328453c2f.tar gsoc2013-empathy-e3d0a1862508fad3d16585b0210a2a9328453c2f.tar.gz gsoc2013-empathy-e3d0a1862508fad3d16585b0210a2a9328453c2f.tar.bz2 gsoc2013-empathy-e3d0a1862508fad3d16585b0210a2a9328453c2f.tar.lz gsoc2013-empathy-e3d0a1862508fad3d16585b0210a2a9328453c2f.tar.xz gsoc2013-empathy-e3d0a1862508fad3d16585b0210a2a9328453c2f.tar.zst gsoc2013-empathy-e3d0a1862508fad3d16585b0210a2a9328453c2f.zip |
Abstract WebKit string parsers into empathy-webkit-utils
This file is currently optionally built, but if the logviewer is going to
depend on WebKit, maybe that's a bad idea? Maybe we should just make WebKit
required (this will probably happen when we require Adium themes in the future).
Diffstat (limited to 'libempathy-gtk/empathy-theme-adium.c')
-rw-r--r-- | libempathy-gtk/empathy-theme-adium.c | 69 |
1 files changed, 4 insertions, 65 deletions
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index 14e149e18..874f5592f 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -39,8 +39,8 @@ #include "empathy-smiley-manager.h" #include "empathy-ui-utils.h" #include "empathy-plist.h" -#include "empathy-string-parser.h" #include "empathy-images.h" +#include "empathy-webkit-utils.h" #define DEBUG_FLAG EMPATHY_DEBUG_CHAT #include <libempathy/empathy-debug.h> @@ -293,65 +293,6 @@ theme_adium_load_template (EmpathyThemeAdium *theme) g_free (template); } -static void -theme_adium_match_newline (const gchar *text, - gssize len, - EmpathyStringReplace replace_func, - EmpathyStringParser *sub_parsers, - gpointer user_data) -{ - GString *string = user_data; - gint i; - gint prev = 0; - - if (len < 0) { - len = G_MAXSSIZE; - } - - /* Replace \n by <br/> */ - for (i = 0; i < len && text[i] != '\0'; i++) { - if (text[i] == '\n') { - empathy_string_parser_substr (text + prev, - i - prev, sub_parsers, - user_data); - g_string_append (string, "<br/>"); - prev = i + 1; - } - } - empathy_string_parser_substr (text + prev, i - prev, - sub_parsers, user_data); -} - -static void -theme_adium_replace_smiley (const gchar *text, - gssize len, - gpointer match_data, - gpointer user_data) -{ - EmpathySmileyHit *hit = match_data; - GString *string = user_data; - - /* Replace smiley by a <img/> tag */ - g_string_append_printf (string, - "<img src=\"%s\" alt=\"%.*s\" title=\"%.*s\"/>", - hit->path, (int)len, text, (int)len, text); -} - -static EmpathyStringParser string_parsers[] = { - {empathy_string_match_link, empathy_string_replace_link}, - {theme_adium_match_newline, NULL}, - {empathy_string_match_all, empathy_string_replace_escaped}, - {NULL, NULL} -}; - -static EmpathyStringParser string_parsers_with_smiley[] = { - {empathy_string_match_link, empathy_string_replace_link}, - {empathy_string_match_smiley, theme_adium_replace_smiley}, - {theme_adium_match_newline, NULL}, - {empathy_string_match_all, empathy_string_replace_escaped}, - {NULL, NULL} -}; - static gchar * theme_adium_parse_body (EmpathyThemeAdium *self, const gchar *text, @@ -362,11 +303,9 @@ theme_adium_parse_body (EmpathyThemeAdium *self, GString *string; /* Check if we have to parse smileys */ - if (g_settings_get_boolean (priv->gsettings_chat, - EMPATHY_PREFS_CHAT_SHOW_SMILEYS)) - parsers = string_parsers_with_smiley; - else - parsers = string_parsers; + parsers = empathy_webkit_get_string_parser ( + g_settings_get_boolean (priv->gsettings_chat, + EMPATHY_PREFS_CHAT_SHOW_SMILEYS)); /* Parse text and construct string with links and smileys replaced * by html tags. Also escape text to make sure html code is |