diff options
author | Marcus Lundblad <malu@pidgin.im> | 2010-03-16 23:14:54 +0000 |
---|---|---|
committer | Marcus Lundblad <malu@pidgin.im> | 2010-03-16 23:14:54 +0000 |
commit | 249b06fbe3795dba6b4d04fd8981ed1182851bba (patch) | |
tree | 81d9de10f5462a7082a87cc8cc10f03887896018 | |
parent | b1b0e31e78eb5c85628a27b3519e9d8d218a805f (diff) | |
download | pidgin-249b06fbe3795dba6b4d04fd8981ed1182851bba.tar.gz |
Set desired image formats for thumbnails as a parameter to
purple_xfer_prepare_thumbnail instead of putting it in PrplInfo
-rw-r--r-- | libpurple/ft.c | 4 | ||||
-rw-r--r-- | libpurple/ft.h | 6 | ||||
-rw-r--r-- | libpurple/protocols/jabber/libxmpp.c | 3 | ||||
-rw-r--r-- | libpurple/protocols/jabber/si.c | 2 | ||||
-rw-r--r-- | libpurple/protocols/msn/msn.c | 3 | ||||
-rw-r--r-- | libpurple/protocols/msn/slplink.c | 2 | ||||
-rw-r--r-- | libpurple/prpl.h | 13 | ||||
-rw-r--r-- | pidgin/gtkft.c | 28 |
8 files changed, 21 insertions, 40 deletions
diff --git a/libpurple/ft.c b/libpurple/ft.c index 4c4e246ad2..5e5d437c05 100644 --- a/libpurple/ft.c +++ b/libpurple/ft.c @@ -1649,10 +1649,10 @@ purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail, } void -purple_xfer_prepare_thumbnail(PurpleXfer *xfer) +purple_xfer_prepare_thumbnail(PurpleXfer *xfer, const gchar *formats) { if (xfer->ui_ops->add_thumbnail) { - xfer->ui_ops->add_thumbnail(xfer); + xfer->ui_ops->add_thumbnail(xfer, formats); } } diff --git a/libpurple/ft.h b/libpurple/ft.h index 7fcc747210..fd7ba351a6 100644 --- a/libpurple/ft.h +++ b/libpurple/ft.h @@ -125,7 +125,7 @@ typedef struct * * @param xfer The file transfer structure */ - void (*add_thumbnail)(PurpleXfer *xfer); + void (*add_thumbnail)(PurpleXfer *xfer, const gchar *formats); } PurpleXferUiOps; /** @@ -737,8 +737,10 @@ void purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail, * will be no-op in case the UI doesn't implement thumbnail creation * * @param xfer The file transfer to create a thumbnail for + * @param formats A comma-separated list of mimetypes for image formats + * the protocols can use for thumbnails. */ -void purple_xfer_prepare_thumbnail(PurpleXfer *xfer); +void purple_xfer_prepare_thumbnail(PurpleXfer *xfer, const gchar *formats); /*@}*/ diff --git a/libpurple/protocols/jabber/libxmpp.c b/libpurple/protocols/jabber/libxmpp.c index db70ddbd87..d41160b29d 100644 --- a/libpurple/protocols/jabber/libxmpp.c +++ b/libpurple/protocols/jabber/libxmpp.c @@ -127,8 +127,7 @@ static PurplePluginProtocolInfo prpl_info = NULL, /* get_account_text_table */ jabber_initiate_media, /* initiate_media */ jabber_get_media_caps, /* get_media_caps */ - jabber_get_moods, /* get_moods */ - {"jpeg,png"} /* file transfer thumbnail spec */ + jabber_get_moods /* get_moods */ }; static gboolean load_plugin(PurplePlugin *plugin) diff --git a/libpurple/protocols/jabber/si.c b/libpurple/protocols/jabber/si.c index 4953e7dd16..7885e32fb4 100644 --- a/libpurple/protocols/jabber/si.c +++ b/libpurple/protocols/jabber/si.c @@ -1246,7 +1246,7 @@ static void jabber_si_xfer_send_request(PurpleXfer *xfer) char buf[32]; xfer->filename = g_path_get_basename(xfer->local_filename); - purple_xfer_prepare_thumbnail(xfer); + purple_xfer_prepare_thumbnail(xfer, "jpeg,png"); iq = jabber_iq_new(jsx->js, JABBER_IQ_SET); xmlnode_set_attrib(iq->node, "to", xfer->who); diff --git a/libpurple/protocols/msn/msn.c b/libpurple/protocols/msn/msn.c index 67e303b910..0d34e0c298 100644 --- a/libpurple/protocols/msn/msn.c +++ b/libpurple/protocols/msn/msn.c @@ -2733,8 +2733,7 @@ static PurplePluginProtocolInfo prpl_info = msn_get_account_text_table, /* get_account_text_table */ NULL, /* initiate_media */ NULL, /* get_media_caps */ - NULL, /* get_moods */ - {"png"} /* file transfer thumbnail spec */ + NULL /* get_moods */ }; static PurplePluginInfo info = diff --git a/libpurple/protocols/msn/slplink.c b/libpurple/protocols/msn/slplink.c index 114e175a7c..61d970cef8 100644 --- a/libpurple/protocols/msn/slplink.c +++ b/libpurple/protocols/msn/slplink.c @@ -673,7 +673,7 @@ gen_context(PurpleXfer *xfer, const char *file_name, const char *file_path) size = purple_xfer_get_size(xfer); - purple_xfer_prepare_thumbnail(xfer); + purple_xfer_prepare_thumbnail(xfer, "png"); if (!file_name) { gchar *basename = g_path_get_basename(file_path); diff --git a/libpurple/prpl.h b/libpurple/prpl.h index 0d4e6b8e65..a0c509dbd2 100644 --- a/libpurple/prpl.h +++ b/libpurple/prpl.h @@ -97,14 +97,6 @@ struct _PurpleBuddyIconSpec { size_t max_filesize; /**< Maximum size in bytes */ PurpleIconScaleRules scale_rules; /**< How to stretch this icon */ }; - -/** @copydoc PurpleThumbnailSpec */ -struct _PurpleThumbnailSpec { - /** This is a comma-delimited list of image formats or @c NULL if the - * prpl does not support file transfer thumbnails - */ - char *format; -}; /** Represents an entry containing information that must be supplied by the * user when joining a chat. @@ -590,11 +582,6 @@ struct _PurplePluginProtocolInfo * "mood" set to @c NULL. */ PurpleMood *(*get_moods)(PurpleAccount *account); - - /** - * File transfer thumbnail spec - */ - PurpleThumbnailSpec thumbnail_spec; }; #define PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl, member) \ diff --git a/pidgin/gtkft.c b/pidgin/gtkft.c index e9c384fbc3..7da719d8bc 100644 --- a/pidgin/gtkft.c +++ b/pidgin/gtkft.c @@ -1161,23 +1161,17 @@ pidgin_xfer_cancel_remote(PurpleXfer *xfer) } static void -pidgin_xfer_add_thumbnail(PurpleXfer *xfer) -{ - PurpleAccount *account = purple_xfer_get_account(xfer); - PurpleConnection *gc = purple_account_get_connection(account); - PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); - const char *thumbnail_format = prpl_info->thumbnail_spec.format; - +pidgin_xfer_add_thumbnail(PurpleXfer *xfer, const gchar *formats) +{ purple_debug_info("pidgin", "creating thumbnail for transfer\n"); - if (thumbnail_format != NULL && - purple_xfer_get_size(xfer) <= PIDGIN_XFER_MAX_SIZE_IMAGE_THUMBNAIL) { + if (purple_xfer_get_size(xfer) <= PIDGIN_XFER_MAX_SIZE_IMAGE_THUMBNAIL) { GdkPixbuf *thumbnail = gdk_pixbuf_new_from_file_at_size( purple_xfer_get_local_filename(xfer), 128, 128, NULL); if (thumbnail) { - gchar **formats = g_strsplit(thumbnail_format, ",", 0); + gchar **formats_split = g_strsplit(formats, ",", 0); gchar *buffer = NULL; gsize size; char *option_keys[2] = {NULL, NULL}; @@ -1187,10 +1181,10 @@ pidgin_xfer_add_thumbnail(PurpleXfer *xfer) int i; gchar *format = NULL; - for (i = 0 ; formats[i] ; i++) { - if (purple_strequal(formats[i], "jpeg")) { + for (i = 0 ; formats_split[i] ; i++) { + if (purple_strequal(formats_split[i], "jpeg")) { supports_jpeg = TRUE; - } else if (purple_strequal(formats[i], "png")) { + } else if (purple_strequal(formats_split[i], "png")) { supports_png = TRUE; } } @@ -1214,15 +1208,15 @@ pidgin_xfer_add_thumbnail(PurpleXfer *xfer) } else { purple_debug_info("pidgin", "creating thumbnail of format %s as demanded by PRPL\n", - formats[0]); - format = formats[0]; + formats_split[0]); + format = formats_split[0]; } gdk_pixbuf_save_to_bufferv(thumbnail, &buffer, &size, format, option_keys, option_values, NULL); if (buffer) { - const gchar *mimetype = g_strdup_printf("image/%s", format); + const gchar *mimetype = g_strdup_printf("image/%s", format); purple_debug_info("pidgin", "created thumbnail of %" G_GSIZE_FORMAT " bytes\n", size); @@ -1231,7 +1225,7 @@ pidgin_xfer_add_thumbnail(PurpleXfer *xfer) g_free(mimetype); } g_object_unref(thumbnail); - g_strfreev(formats); + g_strfreev(formats_split); } } } |