summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-05-25 13:06:00 +0200
committerJean Felder <jean.felder@gmail.com>2020-08-21 15:05:10 +0000
commit105e601bb4c052d707b0066de5ad0b72be716679 (patch)
tree5f5d0aef262a32237a42da863cb9a8838bfdf8c8
parent8d2e2567355d19c2c13162bfe10376d21de95bae (diff)
downloadgrilo-plugins-105e601bb4c052d707b0066de5ad0b72be716679.tar.gz
tracker3: Let notification code figure out the media type
-rw-r--r--src/tracker3/grl-tracker-source-notif.c37
1 files changed, 24 insertions, 13 deletions
diff --git a/src/tracker3/grl-tracker-source-notif.c b/src/tracker3/grl-tracker-source-notif.c
index d77fb41..f86f741 100644
--- a/src/tracker3/grl-tracker-source-notif.c
+++ b/src/tracker3/grl-tracker-source-notif.c
@@ -57,18 +57,13 @@ G_DEFINE_TYPE (GrlTrackerSourceNotify, grl_tracker_source_notify, G_TYPE_OBJECT)
static GrlMedia *
media_for_event (GrlTrackerSourceNotify *self,
- TrackerNotifierEvent *event)
+ TrackerNotifierEvent *event,
+ GrlMediaType type)
{
- gchar *id_str;
GrlMedia *media;
- id_str = g_strdup_printf ("%" G_GINT64_FORMAT, tracker_notifier_event_get_id (event));
- // FIXME
- media = grl_tracker_build_grilo_media (GRL_MEDIA_TYPE_UNKNOWN);
- grl_media_set_id (media, id_str);
- grl_media_set_url (media, tracker_notifier_event_get_urn (event));
-
- g_free (id_str);
+ media = grl_tracker_build_grilo_media (type);
+ grl_media_set_id (media, tracker_notifier_event_get_urn (event));
return media;
}
@@ -76,6 +71,7 @@ media_for_event (GrlTrackerSourceNotify *self,
static void
handle_changes (GrlTrackerSourceNotify *self,
GPtrArray *events,
+ GrlMediaType media_type,
TrackerNotifierEventType tracker_type,
GrlSourceChangeType change_type)
{
@@ -91,7 +87,7 @@ handle_changes (GrlTrackerSourceNotify *self,
if (tracker_notifier_event_get_event_type (event) != tracker_type)
continue;
- media = media_for_event (self, event);
+ media = media_for_event (self, event, media_type);
g_ptr_array_add (change_list, media);
}
@@ -99,6 +95,19 @@ handle_changes (GrlTrackerSourceNotify *self,
change_type, FALSE);
}
+static GrlMediaType
+media_type_from_graph (const gchar *graph)
+{
+ if (g_str_has_suffix (graph, "#Audio"))
+ return GRL_MEDIA_TYPE_AUDIO;
+ else if (g_str_has_suffix (graph, "#Video"))
+ return GRL_MEDIA_TYPE_VIDEO;
+ else if (g_str_has_suffix (graph, "#Pictures"))
+ return GRL_MEDIA_TYPE_IMAGE;
+
+ return GRL_MEDIA_TYPE_UNKNOWN;
+}
+
static void
notifier_event_cb (GrlTrackerSourceNotify *self,
const gchar *service,
@@ -106,13 +115,15 @@ notifier_event_cb (GrlTrackerSourceNotify *self,
GPtrArray *events,
gpointer user_data)
{
- handle_changes (self, events,
+ GrlMediaType type = media_type_from_graph (graph);
+
+ handle_changes (self, events, type,
TRACKER_NOTIFIER_EVENT_CREATE,
GRL_CONTENT_ADDED);
- handle_changes (self, events,
+ handle_changes (self, events, type,
TRACKER_NOTIFIER_EVENT_UPDATE,
GRL_CONTENT_CHANGED);
- handle_changes (self, events,
+ handle_changes (self, events, type,
TRACKER_NOTIFIER_EVENT_DELETE,
GRL_CONTENT_REMOVED);
}