From 3eb439ded3d3bd5e644b82b9cec910e0ad5b23fc Mon Sep 17 00:00:00 2001 From: Patryk Zawadzki Date: Fri, 19 Jun 2009 13:50:11 +0200 Subject: Support fallback avatars provided by adium themes --- libempathy-gtk/empathy-theme-adium.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) (limited to 'libempathy-gtk/empathy-theme-adium.c') diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index edbdbcd04..97a1bdf45 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -50,6 +50,8 @@ typedef struct { GList *message_queue; gchar *path; gchar *default_avatar_filename; + gchar *default_incoming_avatar_filename; + gchar *default_outgoing_avatar_filename; gchar *template_html; gchar *basedir; gchar *in_content_html; @@ -114,6 +116,20 @@ theme_adium_load (EmpathyThemeAdium *theme) g_file_get_contents (file, &priv->status_html, &priv->status_len, NULL); g_free (file); + file = g_build_filename (priv->basedir, "Incoming", "buddy_icon.png", NULL); + if (g_file_test (file, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) { + priv->default_incoming_avatar_filename = file; + } else { + g_free (file); + } + + file = g_build_filename (priv->basedir, "Outgoing", "buddy_icon.png", NULL); + if (g_file_test (file, G_FILE_TEST_EXISTS | G_FILE_TEST_IS_REGULAR)) { + priv->default_outgoing_avatar_filename = file; + } else { + g_free (file); + } + css_path = g_build_filename (priv->basedir, "main.css", NULL); /* There is 2 formats for Template.html: The old one has 4 parameters, @@ -495,12 +511,19 @@ theme_adium_append_message (EmpathyChatView *view, avatar_filename = avatar->filename; } if (!avatar_filename) { - if (!priv->default_avatar_filename) { - priv->default_avatar_filename = - empathy_filename_from_icon_name ("stock_person", - GTK_ICON_SIZE_DIALOG); + if (empathy_contact_is_user (sender)) { + avatar_filename = priv->default_outgoing_avatar_filename; + } else { + avatar_filename = priv->default_incoming_avatar_filename; + } + if (!avatar_filename) { + if (!priv->default_avatar_filename) { + priv->default_avatar_filename = + empathy_filename_from_icon_name ("stock_person", + GTK_ICON_SIZE_DIALOG); + } + avatar_filename = priv->default_avatar_filename; } - avatar_filename = priv->default_avatar_filename; } /* Get the right html/func to add the message */ @@ -700,6 +723,8 @@ theme_adium_finalize (GObject *object) g_free (priv->out_content_html); g_free (priv->out_nextcontent_html); g_free (priv->default_avatar_filename); + g_free (priv->default_incoming_avatar_filename); + g_free (priv->default_outgoing_avatar_filename); g_free (priv->path); G_OBJECT_CLASS (empathy_theme_adium_parent_class)->finalize (object); -- cgit v1.2.3