[PATCH 09/17] tracker: avoid asking metadatas on fake directories in browsing mode
- From: lionel g landwerlin linux intel com
- To: grilo-list gnome org
- Subject: [PATCH 09/17] tracker: avoid asking metadatas on fake directories in browsing mode
- Date: Fri, 4 Mar 2011 15:54:19 +0000
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-api.c | 42 ++++++++++++++++++++++++++++++----
1 files changed, 37 insertions(+), 5 deletions(-)
diff --git a/src/media/tracker/grl-tracker-api.c b/src/media/tracker/grl-tracker-api.c
index 4b8530e..e007cc8 100644
--- a/src/media/tracker/grl-tracker-api.c
+++ b/src/media/tracker/grl-tracker-api.c
@@ -107,6 +107,10 @@ struct OperationSpec {
/**/
+static GrlKeyID grl_metadata_key_tracker_category;
+
+/**/
+
static struct OperationSpec *
tracker_operation_initiate (GrlMediaSource *source,
GrlTrackerSourcePriv *priv,
@@ -523,6 +527,11 @@ grl_tracker_source_metadata (GrlMediaSource *source,
GRL_DEBUG ("%s: id=%i", __FUNCTION__, ms->metadata_id);
+ if (grl_media_get_id (ms->media) == NULL) {
+ ms->callback (ms->source, ms->media, ms->user_data, NULL);
+ return;
+ }
+
sparql_select = grl_tracker_source_get_select_string (source, ms->keys);
sparql_final = g_strdup_printf (TRACKER_METADATA_REQUEST, sparql_select,
grl_media_get_id (ms->media));
@@ -593,33 +602,45 @@ grl_tracker_source_browse (GrlMediaSource *source,
gchar *sparql_final;
struct OperationSpec *os;
GrlMedia *media;
+ const gchar *category;
GRL_DEBUG ("%s: id=%u", __FUNCTION__, bs->browse_id);
- if ((bs->container == NULL || grl_media_get_id (bs->container) == NULL)) {
+ if (bs->container == NULL ||
+ !grl_data_has_key (GRL_DATA (bs->container),
+ grl_metadata_key_tracker_category)) {
/* Hardcoded categories */
media = grl_media_box_new ();
grl_media_set_title (media, "Music");
- grl_media_set_id (media, "nmm:MusicPiece");
+ grl_data_set_string (GRL_DATA (media),
+ grl_metadata_key_tracker_category,
+ "nmm:MusicPiece");
bs->callback (bs->source, bs->browse_id, media, 2, bs->user_data, NULL);
media = grl_media_box_new ();
grl_media_set_title (media, "Photo");
- grl_media_set_id (media, "nmm:Photo");
+ grl_data_set_string (GRL_DATA (media),
+ grl_metadata_key_tracker_category,
+ "nmm:Photo");
bs->callback (bs->source, bs->browse_id, media, 1, bs->user_data, NULL);
media = grl_media_box_new ();
grl_media_set_title (media, "Video");
- grl_media_set_id (media, "nmm:Video");
+ grl_data_set_string (GRL_DATA (media),
+ grl_metadata_key_tracker_category,
+ "nmm:Video");
bs->callback (bs->source, bs->browse_id, media, 0, bs->user_data, NULL);
return;
}
+ category = grl_data_get_string (GRL_DATA (bs->container),
+ grl_metadata_key_tracker_category);
+
constraint = grl_tracker_source_get_device_constraint (priv);
sparql_select = grl_tracker_source_get_select_string (bs->source, bs->keys);
sparql_final = g_strdup_printf (TRACKER_BROWSE_CATEGORY_REQUEST,
sparql_select,
- grl_media_get_id (bs->container),
+ category,
constraint,
bs->skip, bs->count);
@@ -680,5 +701,16 @@ grl_tracker_source_change_stop (GrlMediaSource *source, GError **error)
void
grl_tracker_init_requests (void)
{
+ grl_metadata_key_tracker_category =
+ grl_plugin_registry_register_metadata_key (grl_plugin_registry_get_default (),
+ g_param_spec_string ("tracker-category",
+ "Tracker category",
+ "Category a media belongs to",
+ NULL,
+ G_PARAM_STATIC_STRINGS |
+ G_PARAM_READWRITE),
+ NULL);
+
+
GRL_LOG_DOMAIN_INIT (tracker_request_log_domain, "tracker-request");
}
--
1.7.4.1
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]