[grilo-plugins] tracker: Ensure that Video is preferred to Image



commit 8c0ba4b2e69980342eced0147ee24d59aeac83d8
Author: Bastien Nocera <hadess hadess net>
Date:   Tue Dec 16 09:10:55 2014 +0100

    tracker: Ensure that Video is preferred to Image
    
    When creating a new object, prefer creating a Video to creating
    an Image when the object has both RDF types.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=730028

 src/tracker/grl-tracker-utils.c |   38 ++++++++++++++++++++------------------
 1 files changed, 20 insertions(+), 18 deletions(-)
---
diff --git a/src/tracker/grl-tracker-utils.c b/src/tracker/grl-tracker-utils.c
index 3b24eb9..b72a10b 100644
--- a/src/tracker/grl-tracker-utils.c
+++ b/src/tracker/grl-tracker-utils.c
@@ -571,6 +571,7 @@ grl_tracker_build_grilo_media (const gchar *rdf_type)
   GrlMedia *media = NULL;
   gchar **rdf_single_type;
   int i;
+  GHashTable *ht;
 
   if (!rdf_type) {
     return NULL;
@@ -579,26 +580,27 @@ grl_tracker_build_grilo_media (const gchar *rdf_type)
   /* As rdf_type can be formed by several types, split them */
   rdf_single_type = g_strsplit (rdf_type, ",", -1);
   i = g_strv_length (rdf_single_type) - 1;
-
-  while (!media && i >= 0) {
-    if (g_str_has_suffix (rdf_single_type[i], RDF_TYPE_MUSIC)) {
-      media = grl_media_audio_new ();
-    } else if (g_str_has_suffix (rdf_single_type[i], RDF_TYPE_VIDEO)) {
-      media = grl_media_video_new ();
-    } else if (g_str_has_suffix (rdf_single_type[i], RDF_TYPE_IMAGE)) {
-      media = grl_media_image_new ();
-    } else if (g_str_has_suffix (rdf_single_type[i], RDF_TYPE_ARTIST)) {
-      media = grl_media_box_new ();
-    } else if (g_str_has_suffix (rdf_single_type[i], RDF_TYPE_ALBUM)) {
-      media = grl_media_box_new ();
-    } else if (g_str_has_suffix (rdf_single_type[i], RDF_TYPE_BOX)) {
-      media = grl_media_box_new ();
-    } else if (g_str_has_suffix (rdf_single_type[i], RDF_TYPE_FOLDER)) {
-      media = grl_media_box_new ();
-    }
-    i--;
+  ht = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+  for (; i>= 0; i--)
+    g_hash_table_insert (ht, g_path_get_basename (rdf_single_type[i]), GINT_TO_POINTER(TRUE));
+
+  if (g_hash_table_lookup (ht, RDF_TYPE_MUSIC)) {
+    media = grl_media_audio_new ();
+  } else if (g_hash_table_lookup (ht, RDF_TYPE_VIDEO)) {
+    media = grl_media_video_new ();
+  } else if (g_hash_table_lookup (ht, RDF_TYPE_IMAGE)) {
+    media = grl_media_image_new ();
+  } else if (g_hash_table_lookup (ht, RDF_TYPE_ARTIST)) {
+    media = grl_media_box_new ();
+  } else if (g_hash_table_lookup (ht, RDF_TYPE_ALBUM)) {
+    media = grl_media_box_new ();
+  } else if (g_hash_table_lookup (ht, RDF_TYPE_BOX)) {
+    media = grl_media_box_new ();
+  } else if (g_hash_table_lookup (ht, RDF_TYPE_FOLDER)) {
+    media = grl_media_box_new ();
   }
 
+  g_hash_table_destroy (ht);
   g_strfreev (rdf_single_type);
 
   if (!media)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]