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