Mercurial > pidgin
changeset 29806:56b67321b7c6
Print the thumbnail along with the offer message in the conversation
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Thu, 22 Oct 2009 21:21:47 +0000 |
parents | bc57ec419847 |
children | d0730ad1c7df |
files | libpurple/ft.c |
diffstat | 1 files changed, 37 insertions(+), 24 deletions(-) [+] |
line wrap: on
line diff
--- a/libpurple/ft.c Thu Oct 22 19:03:47 2009 +0000 +++ b/libpurple/ft.c Thu Oct 22 21:21:47 2009 +0000 @@ -212,12 +212,15 @@ } } -void purple_xfer_conversation_write(PurpleXfer *xfer, char *message, gboolean is_error) +static void +purple_xfer_conversation_write_internal(PurpleXfer *xfer, + const char *message, gboolean is_error, gboolean print_thumbnail) { PurpleConversation *conv = NULL; PurpleMessageFlags flags = PURPLE_MESSAGE_SYSTEM; char *escaped; - + const gpointer *thumbnail_data = purple_xfer_get_thumbnail_data(xfer); + g_return_if_fail(xfer != NULL); g_return_if_fail(message != NULL); @@ -232,10 +235,40 @@ if (is_error) flags = PURPLE_MESSAGE_ERROR; - purple_conversation_write(conv, NULL, escaped, flags, time(NULL)); + if (print_thumbnail && thumbnail_data) { + gchar *message_with_img; + gsize size = purple_xfer_get_thumbnail_size(xfer); + gpointer data = g_memdup(thumbnail_data, size); + int id = purple_imgstore_add_with_id(data, size, NULL); + + message_with_img = + g_strdup_printf("<img id='%d'/> %s", id, escaped); + purple_conversation_write(conv, NULL, message_with_img, flags, + time(NULL)); + purple_imgstore_unref_by_id(id); + g_free(message_with_img); + } else { + purple_conversation_write(conv, NULL, escaped, flags, time(NULL)); + } g_free(escaped); } +void +purple_xfer_conversation_write(PurpleXfer *xfer, gchar *message, + gboolean is_error) +{ + purple_xfer_conversation_write_internal(xfer, message, is_error, FALSE); +} + +/* maybe this one should be exported puplically? */ +static void +purple_xfer_conversation_write_with_thumbnail(PurpleXfer *xfer, + const gchar *message) +{ + purple_xfer_conversation_write_internal(xfer, message, FALSE, TRUE); +} + + static void purple_xfer_show_file_error(PurpleXfer *xfer, const char *filename) { int err = errno; @@ -478,33 +511,13 @@ else if (purple_xfer_get_filename(xfer) || purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_ACCEPTED) { - /* write thumbnail to the conversation, if there is one */ - const gpointer *thumbnail_data = - purple_xfer_get_thumbnail_data(xfer); gchar* message = NULL; PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who); message = g_strdup_printf(_("%s is offering to send file %s"), buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer)); - purple_xfer_conversation_write(xfer, message, FALSE); + purple_xfer_conversation_write_with_thumbnail(xfer, message); g_free(message); - if (thumbnail_data) { - PurpleConversation *conv = - purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, - xfer->who, purple_xfer_get_account(xfer)); - if (conv) { - gsize size = purple_xfer_get_thumbnail_size(xfer); - gpointer data = g_memdup(thumbnail_data, size); - int id = purple_imgstore_add_with_id(data, size, NULL); - - message = g_strdup_printf("<img id='%d'/>", id); - purple_conversation_write(conv, NULL, message, - PURPLE_MESSAGE_SYSTEM, time(NULL)); - purple_imgstore_unref_by_id(id); - g_free(message); - } - } - /* Ask for a filename to save to if it's not already given by a plugin */ if (xfer->local_filename == NULL)