diff -r 274086751523 -r d53c7b4cf1d2 libpurple/ft.c
--- 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("
%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("
", 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)