[glib/gio-thumbnail-sizes: 71/73] glocalfileinfo: Add support for xx-large and x-large thumbnails
- From: Marco Trevisan <marcotrevi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib/gio-thumbnail-sizes: 71/73] glocalfileinfo: Add support for xx-large and x-large thumbnails
- Date: Tue, 11 Oct 2022 19:00:20 +0000 (UTC)
commit e7a68531b34ce250be54a0668916de382eaf4946
Author: Marco Trevisan (Treviño) <mail 3v1n0 net>
Date: Tue Oct 11 16:20:05 2022 +0200
glocalfileinfo: Add support for xx-large and x-large thumbnails
Co-Authored-by: António Fernandes <antoniof gnome org>
Closes: #2767
gio/glocalfileinfo.c | 42 ++++++++++++++++++------------------------
gio/tests/file-thumbnail.c | 2 ++
2 files changed, 20 insertions(+), 24 deletions(-)
---
diff --git a/gio/glocalfileinfo.c b/gio/glocalfileinfo.c
index ecbc629c6b..b2a497a44c 100644
--- a/gio/glocalfileinfo.c
+++ b/gio/glocalfileinfo.c
@@ -1426,8 +1426,10 @@ get_thumbnail_attributes (const char *path,
{
GChecksum *checksum;
char *uri;
- char *filename;
+ char *filename = NULL;
char *basename;
+ const char *size_dirs[4] = { "xx-large", "x-large", "large", "normal" };
+ gsize i;
uri = g_filename_to_uri (path, NULL, NULL);
@@ -1437,11 +1439,18 @@ get_thumbnail_attributes (const char *path,
basename = g_strconcat (g_checksum_get_string (checksum), ".png", NULL);
g_checksum_free (checksum);
- filename = g_build_filename (g_get_user_cache_dir (),
- "thumbnails", "large", basename,
- NULL);
+ for (i = 0; i < G_N_ELEMENTS (size_dirs); i++)
+ {
+ filename = g_build_filename (g_get_user_cache_dir (),
+ "thumbnails", size_dirs[i], basename,
+ NULL);
+ if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
+ break;
- if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
+ g_clear_pointer (&filename, g_free);
+ }
+
+ if (filename)
{
_g_file_info_set_attribute_byte_string_by_id (info, G_FILE_ATTRIBUTE_ID_THUMBNAIL_PATH, filename);
_g_file_info_set_attribute_boolean_by_id (info, G_FILE_ATTRIBUTE_ID_THUMBNAIL_IS_VALID,
@@ -1449,33 +1458,18 @@ get_thumbnail_attributes (const char *path,
}
else
{
- g_free (filename);
filename = g_build_filename (g_get_user_cache_dir (),
- "thumbnails", "normal", basename,
+ "thumbnails", "fail",
+ "gnome-thumbnail-factory",
+ basename,
NULL);
if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
{
- _g_file_info_set_attribute_byte_string_by_id (info, G_FILE_ATTRIBUTE_ID_THUMBNAIL_PATH, filename);
+ _g_file_info_set_attribute_boolean_by_id (info, G_FILE_ATTRIBUTE_ID_THUMBNAILING_FAILED, TRUE);
_g_file_info_set_attribute_boolean_by_id (info, G_FILE_ATTRIBUTE_ID_THUMBNAIL_IS_VALID,
thumbnail_verify (filename, uri, stat_buf));
}
- else
- {
- g_free (filename);
- filename = g_build_filename (g_get_user_cache_dir (),
- "thumbnails", "fail",
- "gnome-thumbnail-factory",
- basename,
- NULL);
-
- if (g_file_test (filename, G_FILE_TEST_IS_REGULAR))
- {
- _g_file_info_set_attribute_boolean_by_id (info, G_FILE_ATTRIBUTE_ID_THUMBNAILING_FAILED, TRUE);
- _g_file_info_set_attribute_boolean_by_id (info, G_FILE_ATTRIBUTE_ID_THUMBNAIL_IS_VALID,
- thumbnail_verify (filename, uri, stat_buf));
- }
- }
}
g_free (basename);
g_free (filename);
diff --git a/gio/tests/file-thumbnail.c b/gio/tests/file-thumbnail.c
index 0d7370b440..6e8768a733 100644
--- a/gio/tests/file-thumbnail.c
+++ b/gio/tests/file-thumbnail.c
@@ -35,6 +35,8 @@
static const char * SIZES_NAMES[] = {
"normal",
"large",
+ "x-large",
+ "xx-large",
};
static GFile *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]