From deacc63d54e522f51b6f36d8c6b3067c8bd834b1 Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Wed, 8 Mar 2023 00:01:53 +0100 Subject: [PATCH] searchengine: Ensure some GFileInfo fields The search provider should make it sure there are some specific GFileInfo fields set. Fix the mimetype extraction from the query, and use that to fill in the missing gaps the best we can. --- gtk/gtksearchenginetracker3.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/gtk/gtksearchenginetracker3.c b/gtk/gtksearchenginetracker3.c index cb4dd2d6ce..5ce8916f39 100644 --- a/gtk/gtksearchenginetracker3.c +++ b/gtk/gtksearchenginetracker3.c @@ -41,7 +41,7 @@ #define SEARCH_QUERY_BASE(__PATTERN__) \ "SELECT ?url " \ " nfo:fileName(?urn) " \ - " nie:mimeType(?urn)" \ + " nie:mimeType(?ie)" \ " nfo:fileSize(?urn)" \ " nfo:fileLastModified(?urn)" \ "FROM tracker:FileSystem " \ @@ -49,6 +49,7 @@ " ?urn a nfo:FileDataObject ;" \ " nie:url ?url ; " \ " fts:match ~match . " \ + " OPTIONAL { ?urn nie:interpretedAs ?ie } ." \ __PATTERN__ \ "} " \ "ORDER BY DESC(fts:rank(?urn)) DESC(?url)" @@ -142,7 +143,18 @@ create_file_info (GFile *file, str = tracker_sparql_cursor_get_string (cursor, 2, NULL); if (str) - g_file_info_set_content_type (info, str); + { + g_file_info_set_content_type (info, str); + g_file_info_set_attribute_uint32 (info, "standard::type", + strcmp (str, "inode/directory") == 0 ? + G_FILE_TYPE_DIRECTORY : + G_FILE_TYPE_REGULAR); + } + else + { + g_file_info_set_content_type (info, "application/text"); + g_file_info_set_attribute_uint32 (info, "standard::type", G_FILE_TYPE_UNKNOWN); + } g_file_info_set_size (info, tracker_sparql_cursor_get_integer (cursor, 3));