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);
}