static MateWPItem *
wp_add_image (AppearanceData *data,
              const gchar *filename)
{
  MateWPItem *item;

  if (!filename)
    return NULL;

  item = g_hash_table_lookup (data->wp_hash, filename);

  if (item != NULL)
  {
    if (item->deleted)
    {
      item->deleted = FALSE;
      wp_props_load_wallpaper (item->filename, item, data);
    }
  }
  else
  {
    item = mate_wp_item_new (filename, data->wp_hash, data->thumb_factory);

    if (item != NULL)
    {
      wp_props_load_wallpaper (item->filename, item, data);
    }
  }

  return item;
}
static void mate_wp_load_legacy (AppearanceData *data) {
    FILE * fp;
    gchar * foo, * filename;

    filename = g_build_filename (g_get_home_dir (), ".mate2",
                                 "wallpapers.list", NULL);

    if (g_file_test (filename, G_FILE_TEST_EXISTS)) {
        if ((fp = fopen (filename, "r")) != NULL) {
            foo = (gchar *) g_malloc (sizeof (gchar) * 4096);
            while (fgets (foo, 4096, fp)) {
                MateWPItem * item;

                if (foo[strlen (foo) - 1] == '\n') {
                    foo[strlen (foo) - 1] = '\0';
                }

                item = g_hash_table_lookup (data->wp_hash, foo);
                if (item != NULL) {
                    continue;
                }

                if (!g_file_test (foo, G_FILE_TEST_EXISTS)) {
                    continue;
                }

                item = mate_wp_item_new (foo, data->wp_hash, data->thumb_factory);
                if (item != NULL && item->fileinfo == NULL) {
                    mate_wp_item_free (item);
                }
            }
            fclose (fp);
            g_free (foo);
        }
    }

    g_free (filename);
}
static gboolean
wp_load_stuffs (void *user_data)
{
  AppearanceData *data;
  gchar *imagepath, *uri, *style;
  MateWPItem *item;

  data = (AppearanceData *) user_data;

  compute_thumbnail_sizes (data);

  mate_wp_xml_load_list (data);
  g_hash_table_foreach (data->wp_hash, (GHFunc) wp_props_load_wallpaper,
                        data);

  style = g_settings_get_string (data->wp_settings,
                                   WP_OPTIONS_KEY);
  if (style == NULL)
    style = g_strdup ("none");

  uri = g_settings_get_string (data->wp_settings,
                                 WP_FILE_KEY);

  if (uri && *uri == '\0')
  {
    g_free (uri);
    uri = NULL;
  }

  if (uri == NULL)
    uri = g_strdup ("(none)");

  if (g_utf8_validate (uri, -1, NULL) && g_file_test (uri, G_FILE_TEST_EXISTS))
    imagepath = g_strdup (uri);
  else
    imagepath = g_filename_from_utf8 (uri, -1, NULL, NULL, NULL);

  g_free (uri);

  item = g_hash_table_lookup (data->wp_hash, imagepath);

  if (item != NULL)
  {
    /* update with the current gsettings */
    mate_wp_item_update (item);

    if (strcmp (style, "none") != 0)
    {
      if (item->deleted == TRUE)
      {
        item->deleted = FALSE;
        wp_props_load_wallpaper (item->filename, item, data);
      }

      select_item (data, item, FALSE);
    }
  }
  else if (strcmp (style, "none") != 0)
  {
    item = wp_add_image (data, imagepath);
    if (item)
      select_item (data, item, FALSE);
  }

  item = g_hash_table_lookup (data->wp_hash, "(none)");
  if (item == NULL)
  {
    item = mate_wp_item_new ("(none)", data->wp_hash, data->thumb_factory);
    if (item != NULL)
    {
      wp_props_load_wallpaper (item->filename, item, data);
    }
  }
  else
  {
    if (item->deleted == TRUE)
    {
      item->deleted = FALSE;
      wp_props_load_wallpaper (item->filename, item, data);
    }

    if (!strcmp (style, "none"))
    {
      select_item (data, item, FALSE);
      wp_option_menu_set (data, MATE_BG_PLACEMENT_SCALED, FALSE);
    }
  }
  g_free (imagepath);
  g_free (style);

  if (data->wp_uris) {
    wp_add_images (data, data->wp_uris);
    data->wp_uris = NULL;
  }

  return FALSE;
}