static void cc_background_panel_drag_uris (GtkWidget *widget, GdkDragContext *context, gint x, gint y, GtkSelectionData *data, guint info, guint time, CcBackgroundPanel *panel) { gint i; char *uri; gchar **uris; uris = gtk_selection_data_get_uris (data); if (!uris) return; gtk_drag_finish (context, TRUE, FALSE, time); for (i = 0; uris[i] != NULL; i++) { uri = uris[i]; if (!bg_pictures_source_is_known (panel->priv->pictures_source, uri)) { add_custom_wallpaper (panel, uri); } } g_strfreev(uris); }
static void file_added (GFile *file, BgPicturesSource *self) { char *uri; uri = g_file_get_uri (file); if (!bg_pictures_source_is_known (self, uri)) { g_file_query_info_async (file, ATTRIBUTES, G_FILE_QUERY_INFO_NONE, G_PRIORITY_LOW, NULL, file_info_ready, self); } g_free (uri); }
static void update_chooser_preview (GtkFileChooser *chooser, CcBackgroundPanel *panel) { GnomeDesktopThumbnailFactory *thumb_factory; char *uri; thumb_factory = panel->priv->thumb_factory; uri = gtk_file_chooser_get_preview_uri (chooser); if (uri) { GdkPixbuf *pixbuf = NULL; const gchar *mime_type = NULL; GFile *file; GFileInfo *file_info; GtkWidget *preview; preview = gtk_file_chooser_get_preview_widget (chooser); file = g_file_new_for_uri (uri); file_info = g_file_query_info (file, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE, G_FILE_QUERY_INFO_NONE, NULL, NULL); g_object_unref (file); if (file_info != NULL) { mime_type = g_file_info_get_content_type (file_info); g_object_unref (file_info); } if (mime_type) { pixbuf = gnome_desktop_thumbnail_factory_generate_thumbnail (thumb_factory, uri, mime_type); } gtk_dialog_set_response_sensitive (GTK_DIALOG (chooser), GTK_RESPONSE_ACCEPT, (pixbuf != NULL)); if (pixbuf != NULL) { gtk_image_set_from_pixbuf (GTK_IMAGE (preview), pixbuf); g_object_unref (pixbuf); } else { gtk_image_set_from_stock (GTK_IMAGE (preview), GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); } if (bg_pictures_source_is_known (panel->priv->pictures_source, uri)) gtk_dialog_set_response_sensitive (GTK_DIALOG (chooser), GTK_RESPONSE_ACCEPT, FALSE); else gtk_dialog_set_response_sensitive (GTK_DIALOG (chooser), GTK_RESPONSE_ACCEPT, TRUE); g_free (uri); } gtk_file_chooser_set_preview_widget_active (chooser, TRUE); }