[gnome-control-center] background: Only show the image types we support
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] background: Only show the image types we support
- Date: Thu, 17 May 2012 17:13:01 +0000 (UTC)
commit 3d79e1174e7287f29ad630a4aea55cfa0a6d2b2a
Author: Bastien Nocera <hadess hadess net>
Date: Thu May 17 18:12:13 2012 +0100
background: Only show the image types we support
And add image/bmp to those types.
https://bugzilla.gnome.org/show_bug.cgi?id=669960
panels/background/bg-pictures-source.c | 69 +++++++++++++++++++------------
panels/background/bg-pictures-source.h | 2 +
panels/background/cc-background-panel.c | 6 ++-
3 files changed, 50 insertions(+), 27 deletions(-)
---
diff --git a/panels/background/bg-pictures-source.c b/panels/background/bg-pictures-source.c
index e1e1483..2c04695 100644
--- a/panels/background/bg-pictures-source.c
+++ b/panels/background/bg-pictures-source.c
@@ -46,6 +46,14 @@ struct _BgPicturesSourcePrivate
GHashTable *known_items;
};
+const char * const content_types[] = {
+ "image/png",
+ "image/jpeg",
+ "image/bmp",
+ "image/svg+xml",
+ NULL
+};
+
static char *bg_pictures_source_get_unique_filename (const char *uri);
static void
@@ -281,45 +289,49 @@ picture_opened_for_read (GObject *source_object,
}
static gboolean
+in_content_types (const char *content_type)
+{
+ guint i;
+ for (i = 0; content_types[i]; i++)
+ if (g_str_equal (content_types[i], content_type))
+ return TRUE;
+ return FALSE;
+}
+
+static gboolean
add_single_file (BgPicturesSource *bg_source,
GFile *file,
GFileInfo *info,
const char *source_uri)
{
const gchar *content_type;
+ CcBackgroundItem *item;
+ char *uri;
/* find png and jpeg files */
content_type = g_file_info_get_content_type (info);
if (!content_type)
return FALSE;
+ if (!in_content_types (content_type))
+ return FALSE;
- if (g_str_equal ("image/png", content_type) ||
- g_str_equal ("image/jpeg", content_type) ||
- g_str_equal ("image/svg+xml", content_type))
- {
- CcBackgroundItem *item;
- char *uri;
-
- /* create a new CcBackgroundItem */
- uri = g_file_get_uri (file);
- item = cc_background_item_new (uri);
- g_free (uri);
- g_object_set (G_OBJECT (item),
- "flags", CC_BACKGROUND_ITEM_HAS_URI | CC_BACKGROUND_ITEM_HAS_SHADING,
- "shading", G_DESKTOP_BACKGROUND_SHADING_SOLID,
- "placement", G_DESKTOP_BACKGROUND_STYLE_ZOOM,
- NULL);
- if (source_uri != NULL)
- g_object_set (G_OBJECT (item), "source-url", source_uri, NULL);
-
- g_object_set_data (G_OBJECT (file), "item", item);
- g_file_read_async (file, 0, NULL, picture_opened_for_read, bg_source);
- g_object_unref (file);
- return TRUE;
- }
-
- return FALSE;
+ /* create a new CcBackgroundItem */
+ uri = g_file_get_uri (file);
+ item = cc_background_item_new (uri);
+ g_free (uri);
+ g_object_set (G_OBJECT (item),
+ "flags", CC_BACKGROUND_ITEM_HAS_URI | CC_BACKGROUND_ITEM_HAS_SHADING,
+ "shading", G_DESKTOP_BACKGROUND_SHADING_SOLID,
+ "placement", G_DESKTOP_BACKGROUND_STYLE_ZOOM,
+ NULL);
+ if (source_uri != NULL)
+ g_object_set (G_OBJECT (item), "source-url", source_uri, NULL);
+
+ g_object_set_data (G_OBJECT (file), "item", item);
+ g_file_read_async (file, 0, NULL, picture_opened_for_read, bg_source);
+ g_object_unref (file);
+ return TRUE;
}
gboolean
@@ -554,3 +566,8 @@ bg_pictures_source_new (void)
return g_object_new (BG_TYPE_PICTURES_SOURCE, NULL);
}
+const char * const *
+bg_pictures_get_support_content_types (void)
+{
+ return content_types;
+}
diff --git a/panels/background/bg-pictures-source.h b/panels/background/bg-pictures-source.h
index 9260cd1..554a5c6 100644
--- a/panels/background/bg-pictures-source.h
+++ b/panels/background/bg-pictures-source.h
@@ -80,6 +80,8 @@ gboolean bg_pictures_source_remove (BgPicturesSource *bg_source
gboolean bg_pictures_source_is_known (BgPicturesSource *bg_source,
const char *uri);
+const char * const * bg_pictures_get_support_content_types (void);
+
G_END_DECLS
#endif /* _BG_PICTURES_SOURCE_H */
diff --git a/panels/background/cc-background-panel.c b/panels/background/cc-background-panel.c
index 1ec9188..15b7221 100644
--- a/panels/background/cc-background-panel.c
+++ b/panels/background/cc-background-panel.c
@@ -992,11 +992,15 @@ add_button_clicked (GtkButton *button,
GtkWidget *preview;
GtkFileFilter *filter;
CcBackgroundPanelPrivate *priv;
+ const char * const * content_types;
+ guint i;
priv = panel->priv;
filter = gtk_file_filter_new ();
- gtk_file_filter_add_mime_type (filter, "image/*");
+ content_types = bg_pictures_get_support_content_types ();
+ for (i = 0; content_types[i] != NULL; i++)
+ gtk_file_filter_add_mime_type (filter, content_types[i]);
chooser = gtk_file_chooser_dialog_new (_("Browse for more pictures"),
GTK_WINDOW (gtk_widget_get_toplevel (WID ("background-panel"))),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]