diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-05-25 13:06:00 +0200 |
---|---|---|
committer | Jean Felder <jean.felder@gmail.com> | 2020-08-21 15:05:10 +0000 |
commit | 105e601bb4c052d707b0066de5ad0b72be716679 (patch) | |
tree | 5f5d0aef262a32237a42da863cb9a8838bfdf8c8 | |
parent | 8d2e2567355d19c2c13162bfe10376d21de95bae (diff) | |
download | grilo-plugins-105e601bb4c052d707b0066de5ad0b72be716679.tar.gz |
tracker3: Let notification code figure out the media type
-rw-r--r-- | src/tracker3/grl-tracker-source-notif.c | 37 |
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); } |