diff options
author | Zander Brown <zbrown@gnome.org> | 2021-04-10 14:32:48 +0100 |
---|---|---|
committer | Jordi Mas <jmas@softcatala.org> | 2021-04-27 10:07:03 +0000 |
commit | acf14cc04f1e66c4c726d9a0b193bf39a28ca8b0 (patch) | |
tree | cff6092f047dd768c881ac438fa397eaf6ecdbfc | |
parent | 0335efa94504c8ae4a66c9f3bddcfcb9d306f332 (diff) | |
download | gedit-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.c | 17 | ||||
-rw-r--r-- | gedit/gedit-open-document-selector-helper.h | 2 | ||||
-rw-r--r-- | gedit/gedit-open-document-selector-store.c | 31 | ||||
-rw-r--r-- | gedit/gedit-open-document-selector.c | 12 |
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 * |