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.
This commit is contained in:
Pavel Cisler 2000-09-06 02:35:58 +00:00 committed by Pavel Cisler
parent 2293d4ca66
commit 49708b8ade
11 changed files with 178 additions and 52 deletions

View file

@ -1,3 +1,21 @@
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.
2000-09-05 Ramiro Estrugo <ramiro@eazel.com>
* libnautilus-extensions/nautilus-lib-self-check-functions.h:

View file

@ -30,9 +30,10 @@ typedef struct {
} URIPair;
/* Almost-public change notification calls */
void nautilus_directory_notify_files_added (GList *uris);
void nautilus_directory_notify_files_moved (GList *uri_pairs);
void nautilus_directory_notify_files_removed (GList *uris);
void nautilus_directory_schedule_metadata_copy (GList *uri_pairs);
void nautilus_directory_schedule_metadata_move (GList *uri_pairs);
void nautilus_directory_notify_files_added (GList *uris);
void nautilus_directory_notify_files_moved (GList *uri_pairs);
void nautilus_directory_notify_files_removed (GList *uris);
void nautilus_directory_schedule_metadata_copy (GList *uri_pairs);
void nautilus_directory_schedule_metadata_move (GList *uri_pairs);
void nautilus_directory_schedule_metadata_remove (GList *uris);

View file

@ -821,7 +821,9 @@ nautilus_direcotry_copy_move_metadata_key (NautilusDirectory *source_directory,
nautilus_directory_set_file_metadata (destination_directory,
destination_file, key, NULL, metadata);
/* FIXME: add metadata removal here */
/* FIXME bugzilla.eazel.com 2807:
* add metadata removal here
*/
g_free (metadata);
}
@ -858,7 +860,9 @@ nautilus_directory_move_metadata (const char *source_uri, const char *dest_uri)
source_file_name = uri_get_basename (source_uri);
destination_file_name = uri_get_basename (dest_uri);
/* FIXME: should have a way of iterating all significant file metadata keys */
/* FIXME bugzilla.eazel.com 2808:
* should have a way of iterating all significant file metadata keys
*/
nautilus_directory_move_metadata_key (source_directory, source_file_name,
destination_directory, destination_file_name, NAUTILUS_METADATA_KEY_NOTES);
nautilus_directory_move_metadata_key (source_directory, source_file_name,
@ -889,7 +893,9 @@ nautilus_directory_copy_metadata (const char *source_uri, const char *dest_uri)
source_file_name = uri_get_basename (source_uri);
destination_file_name = uri_get_basename (dest_uri);
/* FIXME: should have a way of iterating all significant file metadata keys */
/* FIXME bugzilla.eazel.com 2808:
* should have a way of iterating all significant file metadata keys
*/
nautilus_directory_copy_metadata_key (source_directory, source_file_name,
destination_directory, destination_file_name, NAUTILUS_METADATA_KEY_NOTES);
nautilus_directory_copy_metadata_key (source_directory, source_file_name,
@ -915,7 +921,7 @@ nautilus_directory_schedule_metadata_copy (GList *uri_pairs)
URIPair *pair;
for (p = uri_pairs; p != NULL; p = p->next) {
pair = p->data;
pair = (URIPair *)p->data;
#ifdef METADATA_COPY_DEBUG
g_print ("copy metadata from %s to %s\n", pair->from_uri, pair->to_uri);
#endif
@ -930,7 +936,7 @@ nautilus_directory_schedule_metadata_move (GList *uri_pairs)
URIPair *pair;
for (p = uri_pairs; p != NULL; p = p->next) {
pair = p->data;
pair = (URIPair *)p->data;
#ifdef METADATA_COPY_DEBUG
g_print ("move metadata from %s to %s\n", pair->from_uri, pair->to_uri);
#endif
@ -938,6 +944,23 @@ nautilus_directory_schedule_metadata_move (GList *uri_pairs)
}
}
void
nautilus_directory_schedule_metadata_remove (GList *uris)
{
GList *p;
const char *uri;
for (p = uris; p != NULL; p = p->next) {
uri = (const char *)p->data;
#ifdef METADATA_COPY_DEBUG
g_print ("removing metadata from %s\n", uri);
#endif
/* FIXME bugzilla.eazel.com 2807:
* call the metadata removal call here
*/
}
}
gboolean
nautilus_directory_contains_file (NautilusDirectory *directory,
NautilusFile *file)

View file

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

View file

@ -27,15 +27,16 @@
#include <glib.h>
void nautilus_file_changes_queue_file_added (const char *uri);
void nautilus_file_changes_queue_file_removed (const char *uri);
void nautilus_file_changes_queue_file_moved (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_copy (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_move (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_file_added (const char *uri);
void nautilus_file_changes_queue_file_removed (const char *uri);
void nautilus_file_changes_queue_file_moved (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_copy (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_move (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_remove (const char *uri);
void nautilus_file_changes_consume_changes (gboolean consume_all);
void nautilus_file_changes_consume_changes (gboolean consume_all);
#endif /* NAUTILUS_FILE_CHANGES_QUEUE_H */

View file

@ -605,6 +605,11 @@ sync_xfer_callback (GnomeVFSXferProgressInfo *progress_info, gpointer data)
break;
case GNOME_VFS_XFER_PHASE_DELETESOURCE:
if (progress_info->top_level_item) {
g_assert (progress_info->source_name != NULL);
nautilus_file_changes_queue_schedule_metadata_remove
(progress_info->source_name);
}
nautilus_file_changes_queue_file_removed (progress_info->source_name);
break;

View file

@ -30,9 +30,10 @@ typedef struct {
} URIPair;
/* Almost-public change notification calls */
void nautilus_directory_notify_files_added (GList *uris);
void nautilus_directory_notify_files_moved (GList *uri_pairs);
void nautilus_directory_notify_files_removed (GList *uris);
void nautilus_directory_schedule_metadata_copy (GList *uri_pairs);
void nautilus_directory_schedule_metadata_move (GList *uri_pairs);
void nautilus_directory_notify_files_added (GList *uris);
void nautilus_directory_notify_files_moved (GList *uri_pairs);
void nautilus_directory_notify_files_removed (GList *uris);
void nautilus_directory_schedule_metadata_copy (GList *uri_pairs);
void nautilus_directory_schedule_metadata_move (GList *uri_pairs);
void nautilus_directory_schedule_metadata_remove (GList *uris);

View file

@ -821,7 +821,9 @@ nautilus_direcotry_copy_move_metadata_key (NautilusDirectory *source_directory,
nautilus_directory_set_file_metadata (destination_directory,
destination_file, key, NULL, metadata);
/* FIXME: add metadata removal here */
/* FIXME bugzilla.eazel.com 2807:
* add metadata removal here
*/
g_free (metadata);
}
@ -858,7 +860,9 @@ nautilus_directory_move_metadata (const char *source_uri, const char *dest_uri)
source_file_name = uri_get_basename (source_uri);
destination_file_name = uri_get_basename (dest_uri);
/* FIXME: should have a way of iterating all significant file metadata keys */
/* FIXME bugzilla.eazel.com 2808:
* should have a way of iterating all significant file metadata keys
*/
nautilus_directory_move_metadata_key (source_directory, source_file_name,
destination_directory, destination_file_name, NAUTILUS_METADATA_KEY_NOTES);
nautilus_directory_move_metadata_key (source_directory, source_file_name,
@ -889,7 +893,9 @@ nautilus_directory_copy_metadata (const char *source_uri, const char *dest_uri)
source_file_name = uri_get_basename (source_uri);
destination_file_name = uri_get_basename (dest_uri);
/* FIXME: should have a way of iterating all significant file metadata keys */
/* FIXME bugzilla.eazel.com 2808:
* should have a way of iterating all significant file metadata keys
*/
nautilus_directory_copy_metadata_key (source_directory, source_file_name,
destination_directory, destination_file_name, NAUTILUS_METADATA_KEY_NOTES);
nautilus_directory_copy_metadata_key (source_directory, source_file_name,
@ -915,7 +921,7 @@ nautilus_directory_schedule_metadata_copy (GList *uri_pairs)
URIPair *pair;
for (p = uri_pairs; p != NULL; p = p->next) {
pair = p->data;
pair = (URIPair *)p->data;
#ifdef METADATA_COPY_DEBUG
g_print ("copy metadata from %s to %s\n", pair->from_uri, pair->to_uri);
#endif
@ -930,7 +936,7 @@ nautilus_directory_schedule_metadata_move (GList *uri_pairs)
URIPair *pair;
for (p = uri_pairs; p != NULL; p = p->next) {
pair = p->data;
pair = (URIPair *)p->data;
#ifdef METADATA_COPY_DEBUG
g_print ("move metadata from %s to %s\n", pair->from_uri, pair->to_uri);
#endif
@ -938,6 +944,23 @@ nautilus_directory_schedule_metadata_move (GList *uri_pairs)
}
}
void
nautilus_directory_schedule_metadata_remove (GList *uris)
{
GList *p;
const char *uri;
for (p = uris; p != NULL; p = p->next) {
uri = (const char *)p->data;
#ifdef METADATA_COPY_DEBUG
g_print ("removing metadata from %s\n", uri);
#endif
/* FIXME bugzilla.eazel.com 2807:
* call the metadata removal call here
*/
}
}
gboolean
nautilus_directory_contains_file (NautilusDirectory *directory,
NautilusFile *file)

View file

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

View file

@ -27,15 +27,16 @@
#include <glib.h>
void nautilus_file_changes_queue_file_added (const char *uri);
void nautilus_file_changes_queue_file_removed (const char *uri);
void nautilus_file_changes_queue_file_moved (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_copy (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_move (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_file_added (const char *uri);
void nautilus_file_changes_queue_file_removed (const char *uri);
void nautilus_file_changes_queue_file_moved (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_copy (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_move (const char *from_uri,
const char *to_uri);
void nautilus_file_changes_queue_schedule_metadata_remove (const char *uri);
void nautilus_file_changes_consume_changes (gboolean consume_all);
void nautilus_file_changes_consume_changes (gboolean consume_all);
#endif /* NAUTILUS_FILE_CHANGES_QUEUE_H */

View file

@ -605,6 +605,11 @@ sync_xfer_callback (GnomeVFSXferProgressInfo *progress_info, gpointer data)
break;
case GNOME_VFS_XFER_PHASE_DELETESOURCE:
if (progress_info->top_level_item) {
g_assert (progress_info->source_name != NULL);
nautilus_file_changes_queue_schedule_metadata_remove
(progress_info->source_name);
}
nautilus_file_changes_queue_file_removed (progress_info->source_name);
break;