Mercurial > pidgin
diff libpurple/ft.c @ 29801:0db570ed5570
propagate from branch 'im.pidgin.pidgin' (head 0d319bbd23fdd7e6cf2065b21e92612657c6e8cb)
to branch 'im.pidgin.cpw.malu.ft_thumbnails' (head a8e7713b46e016ab9b39700c105307911804119b)
author | Marcus Lundblad <ml@update.uu.se> |
---|---|
date | Thu, 15 Oct 2009 21:25:07 +0000 |
parents | 53aab96e61a9 7763697a85c8 |
children | cb09d358d777 |
line wrap: on
line diff
--- a/libpurple/ft.c Thu Oct 15 16:13:57 2009 +0000 +++ b/libpurple/ft.c Thu Oct 15 21:25:07 2009 +0000 @@ -136,6 +136,7 @@ g_free(xfer->local_filename); g_hash_table_remove(xfers_data, xfer); + g_free(xfer->thumbnail_data); PURPLE_DBUS_UNREGISTER_POINTER(xfer); xfers = g_list_remove(xfers, xfer); @@ -398,13 +399,20 @@ serv_got_im(purple_account_get_connection(xfer->account), xfer->who, xfer->message, 0, time(NULL)); - purple_request_accept_cancel(xfer, NULL, buf, NULL, - PURPLE_DEFAULT_ACTION_NONE, - xfer->account, xfer->who, NULL, - xfer, - G_CALLBACK(purple_xfer_choose_file), - G_CALLBACK(cancel_recv_cb)); - + if (purple_xfer_get_thumbnail_data(xfer)) { + purple_request_accept_cancel_with_icon(xfer, NULL, buf, NULL, + PURPLE_DEFAULT_ACTION_NONE, xfer->account, xfer->who, NULL, + purple_xfer_get_thumbnail_data(xfer), + purple_xfer_get_thumbnail_size(xfer), xfer, + G_CALLBACK(purple_xfer_choose_file), + G_CALLBACK(cancel_recv_cb)); + } else { + purple_request_accept_cancel(xfer, NULL, buf, NULL, + PURPLE_DEFAULT_ACTION_NONE, xfer->account, xfer->who, NULL, + xfer, G_CALLBACK(purple_xfer_choose_file), + G_CALLBACK(cancel_recv_cb)); + } + g_free(buf); } else purple_xfer_choose_file(xfer); @@ -1459,6 +1467,35 @@ ui_ops->update_progress(xfer, purple_xfer_get_progress(xfer)); } +const void * +purple_xfer_get_thumbnail_data(const PurpleXfer *xfer) +{ + return xfer->thumbnail_data; +} + +gsize +purple_xfer_get_thumbnail_size(const PurpleXfer *xfer) +{ + return xfer->thumbnail_size; +} + +void +purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail, + gsize size) +{ + if (thumbnail && size > 0) { + xfer->thumbnail_data = g_memdup(thumbnail, size); + xfer->thumbnail_size = size; + } +} + +void +purple_xfer_prepare_thumbnail(PurpleXfer *xfer) +{ + if (xfer->ui_ops->add_thumbnail) { + xfer->ui_ops->add_thumbnail(xfer); + } +} /************************************************************************** * File Transfer Subsystem API