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