Mercurial > pidgin
comparison libpurple/ft.c @ 29804:cb09d358d777
Make it work again, after some new xfer UI ops where added... :)
Display the thumbnail in the ongoing conversation.
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Wed, 21 Oct 2009 22:08:01 +0000 |
parents | 0db570ed5570 |
children | 56b67321b7c6 |
comparison
equal
deleted
inserted
replaced
29803:5502f855ec2b | 29804:cb09d358d777 |
---|---|
215 void purple_xfer_conversation_write(PurpleXfer *xfer, char *message, gboolean is_error) | 215 void purple_xfer_conversation_write(PurpleXfer *xfer, char *message, gboolean is_error) |
216 { | 216 { |
217 PurpleConversation *conv = NULL; | 217 PurpleConversation *conv = NULL; |
218 PurpleMessageFlags flags = PURPLE_MESSAGE_SYSTEM; | 218 PurpleMessageFlags flags = PURPLE_MESSAGE_SYSTEM; |
219 char *escaped; | 219 char *escaped; |
220 | 220 |
221 g_return_if_fail(xfer != NULL); | 221 g_return_if_fail(xfer != NULL); |
222 g_return_if_fail(message != NULL); | 222 g_return_if_fail(message != NULL); |
223 | 223 |
224 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, xfer->who, | 224 conv = purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, xfer->who, |
225 purple_xfer_get_account(xfer)); | 225 purple_xfer_get_account(xfer)); |
476 purple_xfer_cancel_local(xfer); | 476 purple_xfer_cancel_local(xfer); |
477 } | 477 } |
478 else if (purple_xfer_get_filename(xfer) || | 478 else if (purple_xfer_get_filename(xfer) || |
479 purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_ACCEPTED) | 479 purple_xfer_get_status(xfer) == PURPLE_XFER_STATUS_ACCEPTED) |
480 { | 480 { |
481 /* write thumbnail to the conversation, if there is one */ | |
482 const gpointer *thumbnail_data = | |
483 purple_xfer_get_thumbnail_data(xfer); | |
481 gchar* message = NULL; | 484 gchar* message = NULL; |
482 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who); | 485 PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who); |
486 | |
483 message = g_strdup_printf(_("%s is offering to send file %s"), | 487 message = g_strdup_printf(_("%s is offering to send file %s"), |
484 buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer)); | 488 buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer)); |
485 purple_xfer_conversation_write(xfer, message, FALSE); | 489 purple_xfer_conversation_write(xfer, message, FALSE); |
486 g_free(message); | 490 g_free(message); |
491 if (thumbnail_data) { | |
492 PurpleConversation *conv = | |
493 purple_find_conversation_with_account(PURPLE_CONV_TYPE_IM, | |
494 xfer->who, purple_xfer_get_account(xfer)); | |
495 if (conv) { | |
496 gsize size = purple_xfer_get_thumbnail_size(xfer); | |
497 gpointer data = g_memdup(thumbnail_data, size); | |
498 int id = purple_imgstore_add_with_id(data, size, NULL); | |
499 | |
500 message = g_strdup_printf("<img id='%d'/>", id); | |
501 purple_conversation_write(conv, NULL, message, | |
502 PURPLE_MESSAGE_SYSTEM, time(NULL)); | |
503 purple_imgstore_unref_by_id(id); | |
504 g_free(message); | |
505 } | |
506 } | |
507 | |
508 | |
487 /* Ask for a filename to save to if it's not already given by a plugin */ | 509 /* Ask for a filename to save to if it's not already given by a plugin */ |
488 if (xfer->local_filename == NULL) | 510 if (xfer->local_filename == NULL) |
489 purple_xfer_ask_recv(xfer); | 511 purple_xfer_ask_recv(xfer); |
490 } | 512 } |
491 else | 513 else |