[grilo-plugins] Tracker: Handle date-format keys
- From: Juan A. Suarez Romero <jasuarez src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [grilo-plugins] Tracker: Handle date-format keys
- Date: Sat, 23 Mar 2013 23:04:22 +0000 (UTC)
commit d21a34b195dcb531af780a4ad83358259d3d9367
Author: Juan A. Suarez Romero <jasuarez igalia com>
Date: Sat Mar 23 23:00:48 2013 +0000
Tracker: Handle date-format keys
src/tracker/grl-tracker-source-api.c | 72 +++++++++++++++++++---------------
1 files changed, 40 insertions(+), 32 deletions(-)
---
diff --git a/src/tracker/grl-tracker-source-api.c b/src/tracker/grl-tracker-source-api.c
index c00d52b..8adea4c 100644
--- a/src/tracker/grl-tracker-source-api.c
+++ b/src/tracker/grl-tracker-source-api.c
@@ -182,13 +182,23 @@ fill_grilo_media_from_sparql (GrlTrackerSource *source,
const gchar *str_val;
} val;
- if (assoc == NULL)
- return;
+ GrlKeyID grl_key;
+
+ if (assoc == NULL) {
+ /* Maybe the user is setting the key */
+ GrlRegistry *registry = grl_registry_get_default ();
+ grl_key = grl_registry_lookup_metadata_key (registry, sparql_key);
+ if (grl_key == GRL_METADATA_KEY_INVALID) {
+ return;
+ }
+ } else {
+ grl_key = assoc->grl_key;
+ }
GRL_ODEBUG ("\tSetting media prop (col=%i/var=%s/prop=%s) %s",
column,
sparql_key,
- GRL_METADATA_KEY_GET_NAME (assoc->grl_key),
+ GRL_METADATA_KEY_GET_NAME (grl_key),
tracker_sparql_cursor_get_string (cursor, column, NULL));
if (tracker_sparql_cursor_is_bound (cursor, column) == FALSE) {
@@ -196,41 +206,39 @@ fill_grilo_media_from_sparql (GrlTrackerSource *source,
return;
}
- if (grl_data_has_key (GRL_DATA (media), assoc->grl_key)) {
+ if (grl_data_has_key (GRL_DATA (media), grl_key)) {
GRL_ODEBUG ("\t\tDropping, already here");
return;
}
- if (assoc->set_value) {
+ if (assoc && assoc->set_value) {
assoc->set_value (cursor, column, media, assoc->grl_key);
} else {
- switch (GRL_METADATA_KEY_GET_TYPE (assoc->grl_key)) {
- case G_TYPE_STRING:
- /* Cache the source associated to this result. */
- if (assoc->grl_key == GRL_METADATA_KEY_ID) {
- grl_tracker_source_cache_add_item (grl_tracker_item_cache,
- tracker_sparql_cursor_get_integer (cursor,
- column),
- source);
- }
- val.str_val = tracker_sparql_cursor_get_string (cursor, column, NULL);
- if (val.str_val != NULL)
- grl_data_set_string (GRL_DATA (media), assoc->grl_key, val.str_val);
- break;
-
- case G_TYPE_INT:
- val.int_val = tracker_sparql_cursor_get_integer (cursor, column);
- grl_data_set_int (GRL_DATA (media), assoc->grl_key, val.int_val);
- break;
-
- case G_TYPE_FLOAT:
- val.double_val = tracker_sparql_cursor_get_double (cursor, column);
- grl_data_set_float (GRL_DATA (media), assoc->grl_key, (gfloat) val.double_val);
- break;
-
- default:
- GRL_ODEBUG ("\t\tUnexpected data type");
- break;
+ GType grl_type = GRL_METADATA_KEY_GET_TYPE (grl_key);
+ if (grl_type == G_TYPE_STRING) {
+ /* Cache the source associated to this result. */
+ if (grl_key == GRL_METADATA_KEY_ID) {
+ grl_tracker_source_cache_add_item (grl_tracker_item_cache,
+ tracker_sparql_cursor_get_integer (cursor,
+ column),
+ source);
+ }
+ val.str_val = tracker_sparql_cursor_get_string (cursor, column, NULL);
+ if (val.str_val != NULL)
+ grl_data_set_string (GRL_DATA (media), grl_key, val.str_val);
+ } else if (grl_type == G_TYPE_INT) {
+ val.int_val = tracker_sparql_cursor_get_integer (cursor, column);
+ grl_data_set_int (GRL_DATA (media), grl_key, val.int_val);
+ } else if (grl_type == G_TYPE_FLOAT) {
+ val.double_val = tracker_sparql_cursor_get_double (cursor, column);
+ grl_data_set_float (GRL_DATA (media), grl_key, (gfloat) val.double_val);
+ } else if (grl_type == G_TYPE_DATE_TIME) {
+ val.str_val = tracker_sparql_cursor_get_string (cursor, column, NULL);
+ GDateTime *date_time = grl_date_time_from_iso8601 (val.str_val);
+ grl_data_set_boxed (GRL_DATA (media), grl_key, date_time);
+ g_date_time_unref (date_time);
+ } else {
+ GRL_ODEBUG ("\t\tUnexpected data type");
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]