summaryrefslogtreecommitdiff
path: root/libnautilus-private/nautilus-file-changes-queue.c
diff options
context:
space:
mode:
authorPavel Cisler <pavel@eazel.com>2000-09-06 02:35:58 +0000
committerPavel Cisler <pce@src.gnome.org>2000-09-06 02:35:58 +0000
commit49708b8ade5fa91a379913e17a34e6e16999d6a0 (patch)
tree0e56cd910abf5575ac6ddbc61ce738e05e66f1f3 /libnautilus-private/nautilus-file-changes-queue.c
parent2293d4ca661721e5f6727111aac937b32a66ba33 (diff)
downloadnautilus-49708b8ade5fa91a379913e17a34e6e16999d6a0.tar.gz
Add hooks for metadata removal.
2000-09-05 Pavel Cisler <pavel@eazel.com> * libnautilus-extensions/nautilus-directory-notify.h: * libnautilus-extensions/nautilus-directory.c: (nautilus_direcotry_copy_move_metadata_key), (nautilus_directory_move_metadata), (nautilus_directory_copy_metadata), (nautilus_directory_schedule_metadata_copy), (nautilus_directory_schedule_metadata_move), (nautilus_directory_schedule_metadata_remove): * libnautilus-extensions/nautilus-file-changes-queue.c: (nautilus_file_changes_queue_schedule_metadata_remove), (nautilus_file_changes_consume_changes): * libnautilus-extensions/nautilus-file-changes-queue.h: * libnautilus-extensions/nautilus-file-operations.c: (sync_xfer_callback): Add hooks for metadata removal.
Diffstat (limited to 'libnautilus-private/nautilus-file-changes-queue.c')
-rw-r--r--libnautilus-private/nautilus-file-changes-queue.c38
1 files changed, 31 insertions, 7 deletions
diff --git a/libnautilus-private/nautilus-file-changes-queue.c b/libnautilus-private/nautilus-file-changes-queue.c
index 3a3686ec9..5bc14f284 100644
--- a/libnautilus-private/nautilus-file-changes-queue.c
+++ b/libnautilus-private/nautilus-file-changes-queue.c
@@ -42,7 +42,8 @@ typedef enum {
CHANGE_FILE_REMOVED,
CHANGE_FILE_MOVED,
CHANGE_METADATA_COPY,
- CHANGE_METADATA_MOVE
+ CHANGE_METADATA_MOVE,
+ CHANGE_METADATA_REMOVE
} NautilusFileChangeKind;
typedef struct {
@@ -93,7 +94,6 @@ nautilus_file_change_free (NautilusFileChange *change)
g_free (change->to_uri);
}
-
void
nautilus_file_changes_queue_free (NautilusFileChangesQueue *queue)
{
@@ -210,6 +210,20 @@ nautilus_file_changes_queue_schedule_metadata_move (const char *from_uri,
nautilus_file_changes_queue_add_common (queue, new_item);
}
+void
+nautilus_file_changes_queue_schedule_metadata_remove (const char *uri)
+{
+ NautilusFileChange *new_item;
+ NautilusFileChangesQueue *queue;
+
+ queue = nautilus_file_changes_queue_get ();
+
+ new_item = g_new (NautilusFileChange, 1);
+ new_item->kind = CHANGE_METADATA_REMOVE;
+ new_item->from_uri = g_strdup (uri);
+ nautilus_file_changes_queue_add_common (queue, new_item);
+}
+
static NautilusFileChange *
nautilus_file_changes_queue_get_change (NautilusFileChangesQueue *queue)
{
@@ -266,10 +280,8 @@ void
nautilus_file_changes_consume_changes (gboolean consume_all)
{
NautilusFileChange *change;
- GList *additions;
- GList *deletions;
- GList *moves;
- GList *metadata_copy_requests, *metadata_move_requests;
+ GList *additions, *deletions, *moves;
+ GList *metadata_copy_requests, *metadata_move_requests, *metadata_remove_requests;
URIPair *pair;
int kind;
int chunk_count;
@@ -281,6 +293,7 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
moves = NULL;
metadata_copy_requests = NULL;
metadata_move_requests = NULL;
+ metadata_remove_requests = NULL;
kind = CHANGE_FILE_INITIAL;
queue = nautilus_file_changes_queue_get();
@@ -307,7 +320,8 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
g_assert ((deletions != NULL) + (moves != NULL)
+ (additions != NULL) + (metadata_copy_requests != NULL)
- + (metadata_move_requests != NULL) <= 1);
+ + (metadata_move_requests != NULL)
+ + (metadata_remove_requests != NULL) <= 1);
if (deletions != NULL) {
nautilus_directory_notify_files_removed (deletions);
@@ -334,6 +348,11 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
pairs_list_free (metadata_move_requests);
metadata_move_requests = NULL;
}
+ if (metadata_remove_requests != NULL) {
+ nautilus_directory_schedule_metadata_remove (metadata_remove_requests);
+ pairs_list_free (metadata_remove_requests);
+ metadata_remove_requests = NULL;
+ }
}
if (change == NULL) {
@@ -374,6 +393,11 @@ nautilus_file_changes_consume_changes (gboolean consume_all)
metadata_move_requests = g_list_append (metadata_move_requests, pair);
break;
+ case CHANGE_METADATA_REMOVE:
+ metadata_remove_requests = g_list_append (metadata_remove_requests,
+ change->from_uri);
+ break;
+
default:
g_assert_not_reached ();
break;