static void comments__delete_metadata_cb (GFile *file, void **buffer, gsize *size) { GFile *comment_file; comment_file = gth_comment_get_comment_file (file); if (comment_file != NULL) { g_file_delete (comment_file, NULL, NULL); g_object_unref (comment_file); } }
static void gth_metadata_provider_comment_write (GthMetadataProvider *self, GthMetadataWriteFlags flags, GthFileData *file_data, const char *attributes, GCancellable *cancellable) { GthComment *comment; GthMetadata *metadata; const char *text; char *data; gsize length; GthStringList *categories; GFile *comment_file; GFile *comment_folder; comment = gth_comment_new (); /* caption */ text = NULL; metadata = (GthMetadata *) g_file_info_get_attribute_object (file_data->info, "general::title"); if (metadata != NULL) text = gth_metadata_get_raw (metadata); gth_comment_set_caption (comment, text); /* comment */ text = NULL; metadata = (GthMetadata *) g_file_info_get_attribute_object (file_data->info, "general::description"); if (metadata != NULL) text = gth_metadata_get_raw (metadata); gth_comment_set_note (comment, text); /* location */ text = NULL; metadata = (GthMetadata *) g_file_info_get_attribute_object (file_data->info, "general::location"); if (metadata != NULL) text = gth_metadata_get_raw (metadata); gth_comment_set_place (comment, text); /* time */ text = NULL; metadata = (GthMetadata *) g_file_info_get_attribute_object (file_data->info, "general::datetime"); if (metadata != NULL) text = gth_metadata_get_raw (metadata); gth_comment_set_time_from_exif_format (comment, text); /* keywords */ metadata = (GthMetadata *) g_file_info_get_attribute_object (file_data->info, "general::tags"); categories = gth_metadata_get_string_list (metadata); if (categories != NULL) { GList *list; GList *scan; list = gth_string_list_get_list (categories); for (scan = list; scan; scan = scan->next) gth_comment_add_category (comment, (char *) scan->data); } /* rating */ metadata = (GthMetadata *) g_file_info_get_attribute_object (file_data->info, "general::rating"); if (metadata != NULL) { int rating; sscanf (gth_metadata_get_raw (metadata), "%d", &rating); gth_comment_set_rating (comment, rating); } data = gth_comment_to_data (comment, &length); comment_file = gth_comment_get_comment_file (file_data->file); comment_folder = g_file_get_parent (comment_file); g_file_make_directory (comment_folder, NULL, NULL); _g_file_write (comment_file, FALSE, 0, data, length, cancellable, NULL); g_object_unref (comment_folder); g_object_unref (comment_file); g_free (data); g_object_unref (comment); }
static void comments__add_sidecars_cb (GFile *file, GList **sidecars) { *sidecars = g_list_prepend (*sidecars, gth_comment_get_comment_file (file)); }