gnome-control-center r8685 - trunk/capplets/appearance
- From: jensg svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-control-center r8685 - trunk/capplets/appearance
- Date: Thu, 1 May 2008 15:12:06 +0100 (BST)
Author: jensg
Date: Thu May 1 14:12:06 2008
New Revision: 8685
URL: http://svn.gnome.org/viewvc/gnome-control-center?rev=8685&view=rev
Log:
2008-05-01 Jens Granseuer <jensgr gmx net>
* appearance-themes.c: (theme_get_mtime),
(theme_drag_data_received_cb):
* theme-util.c: (directory_delete_recursive),
(file_delete_recursive), (theme_is_writable), (theme_delete): port a
few more functions to gio (part of bug #524401)
Modified:
trunk/capplets/appearance/ChangeLog
trunk/capplets/appearance/appearance-themes.c
trunk/capplets/appearance/theme-util.c
Modified: trunk/capplets/appearance/appearance-themes.c
==============================================================================
--- trunk/capplets/appearance/appearance-themes.c (original)
+++ trunk/capplets/appearance/appearance-themes.c Thu May 1 14:12:06 2008
@@ -65,19 +65,21 @@
theme = gnome_theme_meta_info_find (name);
if (theme != NULL) {
- GnomeVFSFileInfo *file_info;
- GnomeVFSResult result;
+ GFile *file;
+ GFileInfo *file_info;
- file_info = gnome_vfs_file_info_new ();
-
- result = gnome_vfs_get_file_info (theme->path, file_info,
- GNOME_VFS_FILE_INFO_DEFAULT |
- GNOME_VFS_FILE_INFO_FOLLOW_LINKS);
-
- if (result == GNOME_VFS_OK)
- mtime = file_info->mtime;
-
- gnome_vfs_file_info_unref (file_info);
+ file = g_file_new_for_path (theme->path);
+ file_info = g_file_query_info (file,
+ G_FILE_ATTRIBUTE_TIME_MODIFIED,
+ G_FILE_QUERY_INFO_NONE,
+ NULL, NULL);
+ g_object_unref (file);
+
+ if (file_info != NULL) {
+ mtime = g_file_info_get_attribute_uint64 (file_info,
+ G_FILE_ATTRIBUTE_TIME_MODIFIED);
+ g_object_unref (file_info);
+ }
}
return mtime;
@@ -1010,28 +1012,24 @@
guint info, guint time,
AppearanceData *data)
{
- GList *uris;
+ gchar **uris;
if (!(info == TARGET_URI_LIST || info == TARGET_NS_URL))
return;
- uris = gnome_vfs_uri_list_parse ((gchar *) selection_data->data);
+ uris = g_uri_list_extract_uris ((gchar *) selection_data->data);
- if (uris != NULL && uris->data != NULL) {
- GnomeVFSURI *uri = (GnomeVFSURI *) uris->data;
- gchar *filename;
-
- if (gnome_vfs_uri_is_local (uri))
- filename = gnome_vfs_unescape_string (gnome_vfs_uri_get_path (uri), G_DIR_SEPARATOR_S);
- else
- filename = gnome_vfs_unescape_string (gnome_vfs_uri_to_string (uri, GNOME_VFS_URI_HIDE_NONE), G_DIR_SEPARATOR_S);
-
- gnome_vfs_uri_list_unref (uris);
+ if (uris != NULL && uris[0] != NULL) {
+ GFile *f = g_file_new_for_uri (uris[0]);
+ gchar *filename = g_file_get_path (f);
+ g_object_unref (f);
gnome_theme_install_from_uri (filename,
GTK_WINDOW (glade_xml_get_widget (data->xml, "appearance_window")));
g_free (filename);
}
+
+ g_strfreev (uris);
}
static void
Modified: trunk/capplets/appearance/theme-util.c
==============================================================================
--- trunk/capplets/appearance/theme-util.c (original)
+++ trunk/capplets/appearance/theme-util.c Thu May 1 14:12:06 2008
@@ -25,27 +25,88 @@
#include <glib/gi18n.h>
#include <string.h>
+static gboolean
+directory_delete_recursive (GFile *directory, GError **error)
+{
+ GFileEnumerator *enumerator;
+ GFileInfo *info;
+ gboolean success = TRUE;
+
+ enumerator = g_file_enumerate_children (directory,
+ G_FILE_ATTRIBUTE_STANDARD_NAME ","
+ G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_QUERY_INFO_NONE,
+ NULL, error);
+ if (enumerator == NULL)
+ return FALSE;
+
+ while (success &&
+ (info = g_file_enumerator_next_file (enumerator, NULL, NULL))) {
+ GFile *child;
+
+ child = g_file_get_child (directory, g_file_info_get_name (info));
+
+ if (g_file_info_get_file_type (info) == G_FILE_TYPE_DIRECTORY) {
+ success = directory_delete_recursive (child, error);
+ }
+ g_object_unref (info);
+
+ if (success)
+ success = g_file_delete (child, NULL, error);
+ }
+ g_file_enumerator_close (enumerator, NULL, NULL);
+
+ return success;
+}
+
+static gboolean
+file_delete_recursive (GFile *file, GError **error)
+{
+ GFileInfo *info;
+ GFileType type;
+
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ info = g_file_query_info (file,
+ G_FILE_ATTRIBUTE_STANDARD_TYPE,
+ G_FILE_QUERY_INFO_NONE,
+ NULL, error);
+ if (info == NULL)
+ return FALSE;
+
+ type = g_file_info_get_file_type (info);
+ g_object_unref (info);
+
+ if (type == G_FILE_TYPE_DIRECTORY)
+ return directory_delete_recursive (file, error);
+ else
+ return g_file_delete (file, NULL, error);
+}
+
gboolean
theme_is_writable (const gpointer theme)
{
GnomeThemeCommonInfo *info = theme;
- GnomeVFSResult vfs_result;
- GnomeVFSFileInfo *vfs_info;
+ GFile *file;
+ GFileInfo *file_info;
gboolean writable;
if (info == NULL || info->path == NULL)
return FALSE;
- vfs_info = gnome_vfs_file_info_new ();
- vfs_result = gnome_vfs_get_file_info (info->path,
- vfs_info,
- GNOME_VFS_FILE_INFO_GET_ACCESS_RIGHTS);
-
- writable = ((vfs_result == GNOME_VFS_OK) &&
- (vfs_info->valid_fields & GNOME_VFS_FILE_INFO_FIELDS_ACCESS) &&
- (vfs_info->permissions & GNOME_VFS_PERM_ACCESS_WRITABLE));
+ file = g_file_new_for_uri (info->path);
+ file_info = g_file_query_info (file,
+ G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE,
+ G_FILE_QUERY_INFO_NONE,
+ NULL, NULL);
+ g_object_unref (file);
+
+ if (file_info == NULL)
+ return FALSE;
- gnome_vfs_file_info_unref (vfs_info);
+ writable = g_file_info_get_attribute_boolean (file_info,
+ G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE);
+ g_object_unref (file_info);
return writable;
}
@@ -57,10 +118,8 @@
GtkDialog *dialog;
gchar *theme_dir;
gint response;
- GList *uri_list;
- GnomeVFSResult result;
- GnomeVFSURI *uri;
GnomeThemeCommonInfo *theme;
+ GFile *dir;
dialog = (GtkDialog *) gtk_message_dialog_new (NULL,
GTK_DIALOG_MODAL,
@@ -103,17 +162,10 @@
return FALSE;
}
- uri = gnome_vfs_uri_new (theme_dir);
+ dir = g_file_new_for_uri (theme_dir);
g_free (theme_dir);
- uri_list = g_list_prepend (NULL, uri);
-
- result = gnome_vfs_xfer_delete_list (uri_list,
- GNOME_VFS_XFER_ERROR_MODE_ABORT,
- GNOME_VFS_XFER_RECURSIVE,
- NULL, NULL);
-
- if (result != GNOME_VFS_OK) {
+ if (!file_delete_recursive (dir, NULL)) {
GtkWidget *info_dialog = gtk_message_dialog_new (NULL,
GTK_DIALOG_MODAL,
GTK_MESSAGE_ERROR,
@@ -124,14 +176,13 @@
rc = FALSE;
} else {
/* also delete empty parent directories */
- GnomeVFSURI *parent = gnome_vfs_uri_get_parent (uri);
- gnome_vfs_remove_directory_from_uri (parent);
- gnome_vfs_uri_unref (parent);
+ GFile *parent = g_file_get_parent (dir);
+ g_file_delete (parent, NULL, NULL);
+ g_object_unref (parent);
rc = TRUE;
}
- gnome_vfs_uri_list_free (uri_list);
-
+ g_object_unref (dir);
return rc;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]