summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcus Lundblad <malu@pidgin.im>2010-03-16 23:14:54 +0000
committerMarcus Lundblad <malu@pidgin.im>2010-03-16 23:14:54 +0000
commit249b06fbe3795dba6b4d04fd8981ed1182851bba (patch)
tree81d9de10f5462a7082a87cc8cc10f03887896018
parentb1b0e31e78eb5c85628a27b3519e9d8d218a805f (diff)
downloadpidgin-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.c4
-rw-r--r--libpurple/ft.h6
-rw-r--r--libpurple/protocols/jabber/libxmpp.c3
-rw-r--r--libpurple/protocols/jabber/si.c2
-rw-r--r--libpurple/protocols/msn/msn.c3
-rw-r--r--libpurple/protocols/msn/slplink.c2
-rw-r--r--libpurple/prpl.h13
-rw-r--r--pidgin/gtkft.c28
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);
}
}
}