summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZander Brown <zbrown@gnome.org>2021-04-10 14:32:48 +0100
committerJordi Mas <jmas@softcatala.org>2021-04-27 10:07:03 +0000
commitacf14cc04f1e66c4c726d9a0b193bf39a28ca8b0 (patch)
treecff6092f047dd768c881ac438fa397eaf6ecdbfc
parent0335efa94504c8ae4a66c9f3bddcfcb9d306f332 (diff)
downloadgedit-zbrown/cleanup-recents.tar.gz
open-selector: port to GDateTimezbrown/cleanup-recents
Based on the proposal at https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1089
-rw-r--r--gedit/gedit-open-document-selector-helper.c17
-rw-r--r--gedit/gedit-open-document-selector-helper.h2
-rw-r--r--gedit/gedit-open-document-selector-store.c31
-rw-r--r--gedit/gedit-open-document-selector.c12
4 files changed, 36 insertions, 26 deletions
diff --git a/gedit/gedit-open-document-selector-helper.c b/gedit/gedit-open-document-selector-helper.c
index 369d12ea2..0502e9cd6 100644
--- a/gedit/gedit-open-document-selector-helper.c
+++ b/gedit/gedit-open-document-selector-helper.c
@@ -26,23 +26,23 @@ gedit_open_document_selector_debug_print_list (const gchar *title,
{
FileItem *item;
GList *l;
- glong time_sec;
- glong time_usec;
+ char *accessed = NULL;
g_print ("%s\n", title);
for (l = fileitem_list; l != NULL; l = l->next)
{
item = (FileItem *)l->data;
- time_sec = item->access_time.tv_sec;
- time_usec = item->access_time.tv_usec;
- g_print ("%ld:%ld uri:%s (%s %s)\n",
- time_sec,
- time_usec,
+ accessed = g_date_time_format_iso8601 (item->accessed);
+
+ g_print ("%s uri:%s (%s %s)\n",
+ accessed,
item->uri,
item->name,
item->path);
+
+ g_clear_pointer (&accessed, g_free);
}
}
@@ -62,6 +62,7 @@ gedit_open_document_selector_free_fileitem_item (FileItem *item)
g_free (item->uri);
g_free (item->name);
g_free (item->path);
+ g_clear_pointer (&item->accessed, g_date_time_unref);
g_slice_free (FileItem, item);
}
@@ -76,7 +77,7 @@ gedit_open_document_selector_copy_fileitem_item (FileItem *item)
new_item->uri = g_strdup (item->uri);
new_item->name = g_strdup (item->name);
new_item->path = g_strdup (item->path);
- new_item->access_time = item->access_time;
+ new_item->accessed = g_date_time_ref (item->accessed);
return new_item;
}
diff --git a/gedit/gedit-open-document-selector-helper.h b/gedit/gedit-open-document-selector-helper.h
index 6feb65408..2cbfa9ad0 100644
--- a/gedit/gedit-open-document-selector-helper.h
+++ b/gedit/gedit-open-document-selector-helper.h
@@ -32,7 +32,7 @@ typedef struct
gchar *uri;
gchar *name;
gchar *path;
- GTimeVal access_time;
+ GDateTime *accessed;
} FileItem;
typedef enum
diff --git a/gedit/gedit-open-document-selector-store.c b/gedit/gedit-open-document-selector-store.c
index e3454f12c..5fea67530 100644
--- a/gedit/gedit-open-document-selector-store.c
+++ b/gedit/gedit-open-document-selector-store.c
@@ -83,6 +83,28 @@ G_DEFINE_TYPE (GeditOpenDocumentSelectorStore, gedit_open_document_selector_stor
G_DEFINE_QUARK (gedit-open-document-selector-store-error-quark,
gedit_open_document_selector_store_error)
+
+static GDateTime *
+_get_date_time (GFileInfo *info)
+{
+ guint32 time;
+ guint32 usecs;
+ GDateTime *dt = NULL, *dt2 = NULL;
+
+ g_return_val_if_fail (G_IS_FILE_INFO (info), NULL);
+
+ time = g_file_info_get_attribute_uint64 (info, G_FILE_ATTRIBUTE_TIME_ACCESS);
+ dt = g_date_time_new_from_unix_utc (time);
+
+ usecs = g_file_info_get_attribute_uint32 (info, G_FILE_ATTRIBUTE_TIME_ACCESS_USEC);
+ dt2 = g_date_time_add_seconds (dt, usecs / (gdouble) G_USEC_PER_SEC);
+
+ g_date_time_unref (dt);
+
+ return g_steal_pointer (&dt2);
+}
+
+
static GList *
get_current_docs_list (GeditOpenDocumentSelectorStore *selector_store G_GNUC_UNUSED,
GeditOpenDocumentSelector *selector)
@@ -119,8 +141,7 @@ get_current_docs_list (GeditOpenDocumentSelectorStore *selector_store G_GNUC_UNU
item = gedit_open_document_selector_create_fileitem_item ();
- item->access_time.tv_sec = g_file_info_get_attribute_uint64 (info, "time::access");
- item->access_time.tv_usec = g_file_info_get_attribute_uint32 (info, "time::access-usec");
+ item->accessed = _get_date_time (info);
item->uri = g_file_get_uri (file);
file_items_list = g_list_prepend (file_items_list, item);
@@ -216,8 +237,7 @@ get_children_from_dir (GeditOpenDocumentSelectorStore *selector_store G_GNUC_UNU
item = gedit_open_document_selector_create_fileitem_item ();
item->uri = g_file_get_uri (file);
- item->access_time.tv_sec = g_file_info_get_attribute_uint64 (info, "time::access");
- item->access_time.tv_usec = g_file_info_get_attribute_uint32 (info, "time::access-usec");
+ item->accessed = _get_date_time (info);
file_items_list = g_list_prepend (file_items_list, item);
g_object_unref (file);
@@ -480,8 +500,7 @@ convert_recent_item_list_to_fileitem_list (GList *uri_list)
item = gedit_open_document_selector_create_fileitem_item ();
item->uri = uri;
- item->access_time.tv_sec = gtk_recent_info_get_visited (l->data);
- item->access_time.tv_usec = 0;
+ item->accessed = g_date_time_new_from_unix_local (gtk_recent_info_get_visited (l->data));
fileitem_list = g_list_prepend (fileitem_list, item);
}
diff --git a/gedit/gedit-open-document-selector.c b/gedit/gedit-open-document-selector.c
index f67a6ba6d..bc3d0548d 100644
--- a/gedit/gedit-open-document-selector.c
+++ b/gedit/gedit-open-document-selector.c
@@ -310,19 +310,9 @@ sort_items_by_mru (FileItem *a,
FileItem *b,
gpointer unused G_GNUC_UNUSED)
{
- glong diff;
-
g_assert (a != NULL && b != NULL);
- diff = b->access_time.tv_sec - a->access_time.tv_sec;
- if (diff == 0)
- {
- return (b->access_time.tv_usec - a->access_time.tv_usec);
- }
- else
- {
- return diff;
- }
+ return g_date_time_compare (b, a);
}
static GList *