diff options
author | Philip Van Hoof <philip@codeminded.be> | 2009-09-01 13:50:39 +0200 |
---|---|---|
committer | Philip Van Hoof <philip@codeminded.be> | 2009-09-01 13:50:39 +0200 |
commit | 74e3a534a679ee4bd1b94059e2c6777bc627bfa6 (patch) | |
tree | 365c90859ccd8a2ef1386c3c4600af83eacbedb2 /src/tracker-miner-fs | |
parent | b3aa4762e8555b96a34e0448e0e68b026f838714 (diff) | |
download | tracker-74e3a534a679ee4bd1b94059e2c6777bc627bfa6.tar.gz |
Fixes for softwarecategories
Diffstat (limited to 'src/tracker-miner-fs')
-rw-r--r-- | src/tracker-miner-fs/modules/applications.c | 45 |
1 files changed, 26 insertions, 19 deletions
diff --git a/src/tracker-miner-fs/modules/applications.c b/src/tracker-miner-fs/modules/applications.c index 7834e5a63..895c6d2a5 100644 --- a/src/tracker-miner-fs/modules/applications.c +++ b/src/tracker-miner-fs/modules/applications.c @@ -131,6 +131,7 @@ tracker_application_file_get_metadata (TrackerModuleFile *file, gchar **mime_typ gchar *path, *type, *filename, *name = NULL, *uri = NULL; GStrv cats = NULL; gsize cats_len; + gboolean is_software = TRUE; f = tracker_module_file_get_file (file); path = g_file_get_path (f); @@ -179,7 +180,7 @@ tracker_application_file_get_metadata (TrackerModuleFile *file, gchar **mime_typ g_key_file_get_string (key_file, GROUP_DESKTOP_ENTRY, "Name", NULL); if (name && g_ascii_strcasecmp (type, "Directory") == 0) { - gchar *canonical_uri = tracker_uri_printf_escaped (SOFTWARE_CATEGORY_URN_PREFIX "%s", name); + gchar *canonical_uri = tracker_uri_printf_escaped (SOFTWARE_CATEGORY_URN_PREFIX "%s", path); gchar *icon = g_key_file_get_string (key_file, GROUP_DESKTOP_ENTRY, "Icon", NULL); sparql = tracker_sparql_builder_new_update (); @@ -192,9 +193,6 @@ tracker_application_file_get_metadata (TrackerModuleFile *file, gchar **mime_typ tracker_sparql_builder_predicate (sparql, "a"); tracker_sparql_builder_object (sparql, "nfo:SoftwareCategory"); - tracker_sparql_builder_predicate (sparql, "nie:title"); - tracker_sparql_builder_object_string (sparql, name); - if (icon) { gchar *icon_uri = g_strdup_printf (THEME_ICON_URN_PREFIX "%s", icon); @@ -210,6 +208,8 @@ tracker_application_file_get_metadata (TrackerModuleFile *file, gchar **mime_typ g_free (icon); } + is_software = FALSE; + } else if (name && g_ascii_strcasecmp (type, "Application") == 0) { uri = tracker_module_file_get_uri (file); @@ -252,11 +252,14 @@ tracker_application_file_get_metadata (TrackerModuleFile *file, gchar **mime_typ } if (sparql && uri) { - gchar *icon; gchar *desktop_file_uri; tracker_sparql_builder_predicate (sparql, "a"); - tracker_sparql_builder_object (sparql, "nfo:Executable"); + + if (is_software) { + tracker_sparql_builder_object (sparql, "nfo:Executable"); + } + tracker_sparql_builder_object (sparql, "nfo:FileDataObject"); tracker_sparql_builder_object (sparql, "nie:DataObject"); @@ -267,24 +270,28 @@ tracker_application_file_get_metadata (TrackerModuleFile *file, gchar **mime_typ tracker_sparql_builder_predicate (sparql, "nie:title"); tracker_sparql_builder_object_string (sparql, name); - insert_data_from_desktop_file (sparql, uri, NIE_PREFIX "comment", key_file, "Comment", TRUE); - insert_data_from_desktop_file (sparql, uri, NFO_PREFIX "softwareCmdLine", key_file, "Exec", TRUE); + if (is_software) { + gchar *icon; - icon = g_key_file_get_string (key_file, GROUP_DESKTOP_ENTRY, "Icon", NULL); + insert_data_from_desktop_file (sparql, uri, NIE_PREFIX "comment", key_file, "Comment", TRUE); + insert_data_from_desktop_file (sparql, uri, NFO_PREFIX "softwareCmdLine", key_file, "Exec", TRUE); - if (icon) { - gchar *icon_uri = g_strdup_printf (THEME_ICON_URN_PREFIX "%s", icon); + icon = g_key_file_get_string (key_file, GROUP_DESKTOP_ENTRY, "Icon", NULL); - tracker_sparql_builder_subject_iri (sparql, icon_uri); - tracker_sparql_builder_predicate (sparql, "a"); - tracker_sparql_builder_object (sparql, "nfo:Image"); + if (icon) { + gchar *icon_uri = g_strdup_printf (THEME_ICON_URN_PREFIX "%s", icon); - tracker_sparql_builder_subject_iri (sparql, uri); - tracker_sparql_builder_predicate (sparql, "nfo:softwareIcon"); - tracker_sparql_builder_object_iri (sparql, icon_uri); + tracker_sparql_builder_subject_iri (sparql, icon_uri); + tracker_sparql_builder_predicate (sparql, "a"); + tracker_sparql_builder_object (sparql, "nfo:Image"); - g_free (icon_uri); - g_free (icon); + tracker_sparql_builder_subject_iri (sparql, uri); + tracker_sparql_builder_predicate (sparql, "nfo:softwareIcon"); + tracker_sparql_builder_object_iri (sparql, icon_uri); + + g_free (icon_uri); + g_free (icon); + } } if (cats) { |