[PATCH] tracker: add support for specific upnp ontology
- From: lionel g landwerlin linux intel com
- To: grilo-list gnome org
- Subject: [PATCH] tracker: add support for specific upnp ontology
- Date: Wed, 30 Mar 2011 11:43:40 +0100
From: Lionel Landwerlin <lionel g landwerlin linux intel com>
Signed-off-by: Lionel Landwerlin <lionel g landwerlin linux intel com>
---
src/media/tracker/grl-tracker-media-priv.h | 1 +
src/media/tracker/grl-tracker-utils.c | 7 +++
src/media/tracker/grl-tracker.c | 59 ++++++++++++++++++++++++----
3 files changed, 59 insertions(+), 8 deletions(-)
diff --git a/src/media/tracker/grl-tracker-media-priv.h b/src/media/tracker/grl-tracker-media-priv.h
index 965c270..a1210fc 100644
--- a/src/media/tracker/grl-tracker-media-priv.h
+++ b/src/media/tracker/grl-tracker-media-priv.h
@@ -76,6 +76,7 @@ extern const GrlPluginInfo *grl_tracker_plugin;
/* shared data across */
extern GrlTrackerCache *grl_tracker_item_cache;
extern GHashTable *grl_tracker_media_sources_modified;
+extern gboolean grl_tracker_upnp_present;
/* tracker plugin config */
extern gboolean grl_tracker_per_device_source;
diff --git a/src/media/tracker/grl-tracker-utils.c b/src/media/tracker/grl-tracker-utils.c
index 14eecee..974b81b 100644
--- a/src/media/tracker/grl-tracker-utils.c
+++ b/src/media/tracker/grl-tracker-utils.c
@@ -279,6 +279,13 @@ grl_tracker_setup_key_mappings (void)
"nfo:lastPlayedPosition",
"nfo:lastPlayedPosition(?urn)",
"media");
+
+ if (grl_tracker_upnp_present) {
+ insert_key_mapping (GRL_METADATA_KEY_THUMBNAIL,
+ "upnp:thumbnail",
+ "upnp:thumbnail(?urn)",
+ "media");
+ }
}
tracker_grl_sparql_t *
diff --git a/src/media/tracker/grl-tracker.c b/src/media/tracker/grl-tracker.c
index 11a4e66..e48dbd4 100644
--- a/src/media/tracker/grl-tracker.c
+++ b/src/media/tracker/grl-tracker.c
@@ -52,6 +52,13 @@ GRL_LOG_DOMAIN_STATIC(tracker_general_log_domain);
"FILTER(fn:ends-with(?urn,\"nfo#Folder\")) " \
"}"
+#define TRACKER_UPNP_CLASS_REQUEST \
+ "SELECT ?urn WHERE " \
+ "{ " \
+ "?urn a rdfs:Class . " \
+ "FILTER(fn:ends-with(?urn,\"upnp#UPnPDataObject\")) " \
+ "}"
+
#define TRACKER_NOTIFY_FOLDER_UPDATE \
"INSERT " \
"{ " \
@@ -68,6 +75,7 @@ gboolean grl_tracker_plugin_init (GrlPluginRegistry *registry,
TrackerSparqlConnection *grl_tracker_connection = NULL;
const GrlPluginInfo *grl_tracker_plugin;
+gboolean grl_tracker_upnp_present = FALSE;
/* tracker plugin config */
gboolean grl_tracker_per_device_source = FALSE;
@@ -78,6 +86,8 @@ gboolean grl_tracker_browse_filesystem = FALSE;
static void
init_sources (void)
{
+ grl_tracker_setup_key_mappings ();
+
if (grl_tracker_connection != NULL) {
grl_tracker_media_dbus_start_watch ();
@@ -133,15 +143,30 @@ tracker_get_folder_class_cb (GObject *object,
}
static void
-tracker_get_connection_cb (GObject *object,
- GAsyncResult *res,
- const GrlPluginInfo *plugin)
+tracker_get_upnp_class_cb (GObject *object,
+ GAsyncResult *result,
+ gpointer data)
{
- /* GrlTrackerMedia *source; */
+ GError *error = NULL;
+ TrackerSparqlCursor *cursor;
- GRL_DEBUG ("%s", __FUNCTION__);
+ GRL_DEBUG ("%s", G_STRFUNC);
- grl_tracker_connection = tracker_sparql_connection_get_finish (res, NULL);
+ cursor = tracker_sparql_connection_query_finish (grl_tracker_connection,
+ result, &error);
+ if (error) {
+ GRL_WARNING ("Could not execute sparql query for upnp class: %s",
+ error->message);
+ g_error_free (error);
+ } else {
+ if (tracker_sparql_cursor_next (cursor, NULL, NULL)) {
+ GRL_DEBUG ("\tUPnP ontology present");
+ grl_tracker_upnp_present = TRUE;
+ }
+ }
+
+ if (cursor)
+ g_object_unref (cursor);
if (grl_tracker_browse_filesystem)
tracker_sparql_connection_query_async (grl_tracker_connection,
@@ -153,6 +178,26 @@ tracker_get_connection_cb (GObject *object,
init_sources ();
}
+static void
+tracker_get_connection_cb (GObject *object,
+ GAsyncResult *res,
+ const GrlPluginInfo *plugin)
+{
+ /* GrlTrackerMedia *source; */
+
+ GRL_DEBUG ("%s", __FUNCTION__);
+
+ grl_tracker_connection = tracker_sparql_connection_get_finish (res, NULL);
+
+ GRL_DEBUG ("\trequest : '%s'", TRACKER_UPNP_CLASS_REQUEST);
+
+ tracker_sparql_connection_query_async (grl_tracker_connection,
+ TRACKER_UPNP_CLASS_REQUEST,
+ NULL,
+ tracker_get_upnp_class_cb,
+ NULL);
+}
+
gboolean
grl_tracker_plugin_init (GrlPluginRegistry *registry,
const GrlPluginInfo *plugin,
@@ -166,8 +211,6 @@ grl_tracker_plugin_init (GrlPluginRegistry *registry,
grl_tracker_media_init_requests ();
grl_tracker_metadata_init_requests ();
- grl_tracker_setup_key_mappings ();
-
grl_tracker_plugin = plugin;
if (!configs) {
--
1.7.4.1
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]