gnome-control-center r8656 - trunk/capplets/appearance
- From: jensg svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-control-center r8656 - trunk/capplets/appearance
- Date: Thu, 17 Apr 2008 17:33:15 +0100 (BST)
Author: jensg
Date: Thu Apr 17 17:33:15 2008
New Revision: 8656
URL: http://svn.gnome.org/viewvc/gnome-control-center?rev=8656&view=rev
Log:
2008-04-17 Jens Granseuer <jensgr gmx net>
Patch by: Lincoln de Sousa <lincoln minaslivre org>
* gnome-wp-xml.c (gnome_wp_file_changed), (gnome_wp_xml_add_monitor),
(gnome_wp_xml_load_from_dir), (gnome_wp_xml_load_list): replace gnome-vfs by
gio (part of bug #524401)
Modified:
trunk/capplets/appearance/ChangeLog
trunk/capplets/appearance/gnome-wp-xml.c
Modified: trunk/capplets/appearance/gnome-wp-xml.c
==============================================================================
--- trunk/capplets/appearance/gnome-wp-xml.c (original)
+++ trunk/capplets/appearance/gnome-wp-xml.c Thu Apr 17 17:33:15 2008
@@ -20,6 +20,7 @@
#include "appearance.h"
#include "gnome-wp-item.h"
+#include <gio/gio.h>
#include <string.h>
#include <libxml/parser.h>
@@ -246,27 +247,93 @@
xmlFreeDoc (wplist);
}
-static void gnome_wp_file_changed (GnomeVFSMonitorHandle * handle,
- const gchar * monitor_uri,
- const gchar * info_uri,
- GnomeVFSMonitorEventType event_type,
- AppearanceData *data) {
+static void gnome_wp_file_changed (GFileMonitor *monitor,
+ GFile *file,
+ GFile *other_file,
+ GFileMonitorEvent event_type,
+ AppearanceData *data) {
gchar * filename;
switch (event_type) {
- case GNOME_VFS_MONITOR_EVENT_CHANGED:
- case GNOME_VFS_MONITOR_EVENT_CREATED:
- filename = gnome_vfs_get_local_path_from_uri (info_uri);
+ case G_FILE_MONITOR_EVENT_CHANGED:
+ case G_FILE_MONITOR_EVENT_CREATED:
+ filename = g_file_get_path (file);
gnome_wp_xml_load_xml (data, filename);
g_free (filename);
+ break;
default:
break;
}
}
+static void gnome_wp_xml_add_monitor (GFile *directory,
+ AppearanceData *data) {
+ GFileMonitor *monitor;
+ GError *error = NULL;
+
+ monitor = g_file_monitor_directory (directory,
+ G_FILE_MONITOR_NONE,
+ NULL,
+ &error);
+ if (error != NULL) {
+ gchar *path;
+
+ path = g_file_get_parse_name (directory);
+ g_warning ("Unable to monitor directory %s: %s",
+ path, error->message);
+ g_error_free (error);
+ g_free (path);
+ return;
+ }
+
+ g_signal_connect (monitor, "changed",
+ G_CALLBACK (gnome_wp_file_changed),
+ data);
+}
+
+static void gnome_wp_xml_load_from_dir (const gchar *path,
+ AppearanceData *data) {
+ GFile *directory;
+ GFileEnumerator *enumerator;
+ GError *error = NULL;
+ GFileInfo *info;
+
+ if (!g_file_test (path, G_FILE_TEST_IS_DIR)) {
+ return;
+ }
+
+ directory = g_file_new_for_path (path);
+ enumerator = g_file_enumerate_children (directory,
+ G_FILE_ATTRIBUTE_STANDARD_NAME,
+ G_FILE_QUERY_INFO_NONE,
+ NULL,
+ &error);
+ if (error != NULL) {
+ g_warning ("Unable to check directory %s: %s", path, error->message);
+ g_error_free (error);
+ g_object_unref (directory);
+ return;
+ }
+
+ while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL))) {
+ const gchar *filename;
+ gchar *fullpath;
+
+ filename = g_file_info_get_name (info);
+ fullpath = g_build_filename (path, filename, NULL);
+ g_object_unref (info);
+
+ gnome_wp_xml_load_xml (data, fullpath);
+ g_free (fullpath);
+ }
+ g_file_enumerator_close (enumerator, NULL, NULL);
+
+ gnome_wp_xml_add_monitor (directory, data);
+
+ g_object_unref (directory);
+}
+
void gnome_wp_xml_load_list (AppearanceData *data) {
- GnomeVFSMonitorHandle * handle;
- GList * list, * l;
const gchar * xdgdirslist;
gchar * wpdbfile;
gchar ** xdgdirs;
@@ -301,54 +368,12 @@
datadir = g_build_filename (xdgdirs[i], "gnome-background-properties",
NULL);
- if (g_file_test (datadir, G_FILE_TEST_IS_DIR)) {
- gnome_vfs_directory_list_load (&list, datadir,
- GNOME_VFS_FILE_INFO_DEFAULT |
- GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
-
- for (l = list; l != NULL; l = l->next) {
- GnomeVFSFileInfo * info = l->data;
-
- if (strcmp (".", info->name) != 0 && strcmp ("..", info->name) != 0) {
- gchar * filename;
-
- filename = g_build_filename (datadir, info->name, NULL);
- gnome_wp_xml_load_xml (data, filename);
- g_free (filename);
- }
- }
- gnome_vfs_file_info_list_free (list);
-
- gnome_vfs_monitor_add (&handle, datadir, GNOME_VFS_MONITOR_DIRECTORY,
- (GnomeVFSMonitorCallback) gnome_wp_file_changed,
- data);
- }
+ gnome_wp_xml_load_from_dir (datadir, data);
g_free (datadir);
}
g_strfreev (xdgdirs);
- if (g_file_test (WALLPAPER_DATADIR, G_FILE_TEST_IS_DIR)) {
- gnome_vfs_directory_list_load (&list, WALLPAPER_DATADIR,
- GNOME_VFS_FILE_INFO_DEFAULT |
- GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
-
- for (l = list; l != NULL; l = l->next) {
- GnomeVFSFileInfo * info = l->data;
-
- if (strcmp (".", info->name) != 0 && strcmp ("..", info->name) != 0) {
- gchar * filename;
-
- filename = g_build_filename (WALLPAPER_DATADIR, info->name, NULL);
- gnome_wp_xml_load_xml (data, filename);
- g_free (filename);
- }
- }
- gnome_vfs_file_info_list_free (list);
-
- gnome_vfs_monitor_add (&handle, WALLPAPER_DATADIR, GNOME_VFS_MONITOR_DIRECTORY,
- (GnomeVFSMonitorCallback) gnome_wp_file_changed,
- data);
- }
+ gnome_wp_xml_load_from_dir (WALLPAPER_DATADIR, data);
gnome_wp_load_legacy (data);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]