[gthumb] Add a GFile to the FileData
- From: Michael J. Chudobiak <mjc src gnome org>
- To: svn-commits-list gnome org
- Subject: [gthumb] Add a GFile to the FileData
- Date: Sat, 6 Jun 2009 22:36:33 -0400 (EDT)
commit 310d2231bcc63bd16e10b859587ce27beb8eab42
Author: Michael J. Chudobiak <mjc avtechpulse com>
Date: Sat Jun 6 22:36:14 2009 -0400
Add a GFile to the FileData
---
libgthumb/file-data.c | 50 +++++++++++++++++++++++++++++++++++++++++++-----
libgthumb/file-data.h | 3 ++
2 files changed, 47 insertions(+), 6 deletions(-)
diff --git a/libgthumb/file-data.c b/libgthumb/file-data.c
index 4fbfcf4..d635f42 100644
--- a/libgthumb/file-data.c
+++ b/libgthumb/file-data.c
@@ -59,15 +59,14 @@ static void
load_info (FileData *fd)
{
GFileInfo *info;
- GFile *gfile;
GFile *gfile_resolved;
GError *error = NULL;
GTimeVal tv;
char *resolved_path;
g_free (fd->local_path);
- gfile = gfile_new (fd->utf8_path);
- fd->local_path = g_file_get_path (gfile);
+
+ fd->local_path = g_file_get_path (fd->gfile);
if ( (fd->local_path != NULL) &&
! is_local_file (fd->utf8_path) &&
@@ -87,7 +86,7 @@ load_info (FileData *fd)
g_object_unref (gfile_resolved);
g_free (resolved_path);
- info = g_file_query_info (gfile,
+ info = g_file_query_info (fd->gfile,
G_FILE_ATTRIBUTE_STANDARD_SIZE ","
G_FILE_ATTRIBUTE_TIME_CHANGED ","
G_FILE_ATTRIBUTE_TIME_MODIFIED ","
@@ -114,8 +113,40 @@ load_info (FileData *fd)
fd->mtime = (time_t) 0;
fd->can_read = TRUE;
}
+}
+
+
+FileData *
+file_data_new_from_gfile (GFile *gfile)
+{
+ FileData *fd;
+
+ if (gfile == NULL)
+ return NULL;
+
+ fd = g_new0 (FileData, 1);
+ fd->ref = 1;
- g_object_unref (gfile);
+ fd->gfile = gfile;
+ g_object_ref (gfile);
+ fd->utf8_path = g_file_get_parse_name (fd->gfile);
+ fd->utf8_name = file_name_from_path (fd->utf8_path);
+
+ load_info (fd);
+
+ /* The Exif DateTime tag is only recorded on an as-needed basis during
+ DateTime sorts. The tag in memory is refreshed if the file mtime has
+ changed, so it is recorded as well. */
+
+ fd_free_metadata (fd);
+
+ fd->error = FALSE;
+ fd->thumb_loaded = FALSE;
+ fd->thumb_created = FALSE;
+ fd->comment = g_strdup ("");
+ fd->tags = g_strdup ("");
+
+ return fd;
}
@@ -130,7 +161,9 @@ file_data_new (const char *path)
fd = g_new0 (FileData, 1);
fd->ref = 1;
- fd->utf8_path = get_utf8_display_name_from_uri (path);
+
+ fd->gfile = gfile_new (path);
+ fd->utf8_path = g_file_get_parse_name (fd->gfile);
fd->utf8_name = file_name_from_path (fd->utf8_path);
load_info (fd);
@@ -171,6 +204,7 @@ file_data_dup (FileData *source)
fd = g_new0 (FileData, 1);
fd->ref = 1;
+ fd->gfile = g_file_dup (source->gfile);
fd->utf8_path = g_strdup (source->utf8_path);
fd->utf8_name = file_name_from_path (fd->utf8_path);
fd->local_path = g_strdup (source->local_path);
@@ -211,6 +245,7 @@ file_data_unref (FileData *fd)
g_free (fd->comment);
g_free (fd->tags);
fd_free_metadata (fd);
+ g_object_unref (fd->gfile);
g_free (fd);
}
}
@@ -259,6 +294,9 @@ file_data_set_path (FileData *fd,
g_free (fd->utf8_path);
fd->utf8_path = get_utf8_display_name_from_uri (path);
+ g_object_unref (fd->gfile);
+ fd->gfile = gfile_new (path);
+
file_data_update (fd);
}
diff --git a/libgthumb/file-data.h b/libgthumb/file-data.h
index 0e37ba3..71aacfe 100644
--- a/libgthumb/file-data.h
+++ b/libgthumb/file-data.h
@@ -59,11 +59,14 @@ typedef struct {
file_data_get_comment (fd) instead. */
GList *metadata;
+
+ GFile *gfile;
} FileData;
#define GTH_TYPE_FILE_DATA (file_data_get_type ())
GType file_data_get_type (void);
+FileData * file_data_new_from_gfile (GFile *gfile);
FileData * file_data_new (const char *path);
FileData * file_data_dup (FileData *fd);
FileData * file_data_ref (FileData *fd);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]