Mercurial > geeqie.yaz
diff src/filedata.c @ 1205:3ff2aa99108b
use the workflow in utilops.c for metadata approving and writting
TODO: configuration
author | nadvornik |
---|---|
date | Sat, 20 Dec 2008 20:43:56 +0000 |
parents | 1646720364cf |
children | e2bbe90b0dcd |
line wrap: on
line diff
--- a/src/filedata.c Tue Dec 16 12:59:23 2008 +0000 +++ b/src/filedata.c Sat Dec 20 20:43:56 2008 +0000 @@ -18,13 +18,13 @@ #include "cache.h" #include "thumb_standard.h" #include "ui_fileops.h" +#include "metadata.h" static GHashTable *file_data_pool = NULL; static GHashTable *file_data_planned_change_hash = NULL; static gint sidecar_file_priority(const gchar *path); -static void file_data_apply_ci(FileData *fd); /* @@ -1320,6 +1320,11 @@ return TRUE; } +gboolean file_data_add_ci_write_metadata(FileData *fd) +{ + return file_data_add_ci(fd, FILEDATA_CHANGE_WRITE_METADATA, NULL, NULL); +} + void file_data_sc_free_ci(FileData *fd) { GList *work; @@ -1409,6 +1414,37 @@ return file_data_sc_add_ci_list_call_func(fd_list, dest, file_data_sc_add_ci_unspecified); } +gboolean file_data_add_ci_write_metadata_list(GList *fd_list) +{ + GList *work; + gboolean ret = TRUE; + + work = fd_list; + while (work) + { + FileData *fd = work->data; + + if (!file_data_add_ci_write_metadata(fd)) ret = FALSE; + work = work->next; + } + + return ret; +} + +void file_data_free_ci_list(GList *fd_list) +{ + GList *work; + + work = fd_list; + while (work) + { + FileData *fd = work->data; + + file_data_free_ci(fd); + work = work->next; + } +} + void file_data_sc_free_ci_list(GList *fd_list) { GList *work; @@ -1796,7 +1832,7 @@ return g_string_free(result, FALSE); } -gint file_data_sc_verify_ci_list(GList *list, gchar **desc) +gint file_data_verify_ci_list(GList *list, gchar **desc, gboolean with_sidecars) { GList *work; gint all_errors = 0; @@ -1819,7 +1855,7 @@ fd = work->data; work = work->next; - error = file_data_sc_verify_ci(fd); + error = with_sidecars ? file_data_sc_verify_ci(fd) : file_data_verify_ci(fd); all_errors |= error; common_errors &= error; @@ -1896,7 +1932,7 @@ return unlink_file(fd->path); } -static gboolean file_data_perform_ci(FileData *fd) +gboolean file_data_perform_ci(FileData *fd) { FileDataChangeType type = fd->change->type; switch (type) @@ -1909,6 +1945,8 @@ return file_data_perform_move(fd); /* the same as move */ case FILEDATA_CHANGE_DELETE: return file_data_perform_delete(fd); + case FILEDATA_CHANGE_WRITE_METADATA: + return metadata_write_perform(fd); case FILEDATA_CHANGE_UNSPECIFIED: /* nothing to do here */ break; @@ -1944,10 +1982,10 @@ * updates FileData structure according to FileDataChangeInfo */ -static void file_data_apply_ci(FileData *fd) +gint file_data_apply_ci(FileData *fd) { FileDataChangeType type = fd->change->type; - + /* FIXME delete ?*/ if (type == FILEDATA_CHANGE_MOVE || type == FILEDATA_CHANGE_RENAME) { @@ -1970,6 +2008,8 @@ } file_data_increment_version(fd); file_data_send_notification(fd, NOTIFY_TYPE_CHANGE); + + return TRUE; } gint file_data_sc_apply_ci(FileData *fd)