Index: src/tracker-indexer/modules/files.c
===================================================================
--- src/tracker-indexer/modules/files.c	(revision 1882)
+++ src/tracker-indexer/modules/files.c	(working copy)
@@ -125,8 +125,9 @@ tracker_metadata_get_embedded (const cha
 		if (!utf_value)
 			continue;
 
-		/* FIXME: name should be const */
-		g_hash_table_insert (table, g_strdup (name), utf_value);
+		g_hash_table_insert (table, 
+				     g_object_ref (tracker_ontology_get_field_def (name)), 
+				     utf_value);
 	}
 
 	g_strfreev (values);
@@ -215,38 +216,51 @@ tracker_module_file_get_metadata (Tracke
 	}
 
 	g_lstat (path, &st);
-	metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
-					  NULL,
+	metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+					  (GDestroyNotify) g_object_unref,
 					  (GDestroyNotify) g_free);
 	ext = strrchr (path, '.');
 
 	if (ext) {
-		g_hash_table_insert (metadata, METADATA_FILE_EXT, g_strdup (ext + 1));
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_EXT)), 
+				     g_strdup (ext + 1));
 	}
 
 	mimetype = tracker_file_get_mime_type (path);
 
-	g_hash_table_insert (metadata, METADATA_FILE_NAME, g_filename_display_basename (path));
-	g_hash_table_insert (metadata, METADATA_FILE_PATH, g_path_get_dirname (path));
-	g_hash_table_insert (metadata, METADATA_FILE_NAME_DELIMITED,
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)), 
+			     g_filename_display_basename (path));
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)),
+			     g_path_get_dirname (path));
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME_DELIMITED)),
 			     g_filename_to_utf8 (path, -1, NULL, NULL, NULL));
-	g_hash_table_insert (metadata, METADATA_FILE_MIMETYPE, mimetype);
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_MIMETYPE)), 
+			     mimetype);
 
 	if (S_ISLNK (st.st_mode)) {
 		gchar *link_path;
 
 		link_path = g_file_read_link (path, NULL);
-		g_hash_table_insert (metadata, METADATA_FILE_LINK,
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_LINK)),
 				     g_filename_to_utf8 (link_path, -1, NULL, NULL, NULL));
 		g_free (link_path);
 	}
 
 	/* FIXME: These should be dealt directly as integer/times/whatever, not strings */
-	g_hash_table_insert (metadata, METADATA_FILE_SIZE,
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_SIZE)),
 			     tracker_uint_to_string (st.st_size));
-	g_hash_table_insert (metadata, METADATA_FILE_MODIFIED,
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_MODIFIED)),
 			     tracker_uint_to_string (st.st_mtime));
-	g_hash_table_insert (metadata, METADATA_FILE_ACCESSED,
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_ACCESSED)),
 			     tracker_uint_to_string (st.st_atime));
 
 	tracker_metadata_get_embedded (path, mimetype, metadata);
Index: src/tracker-indexer/modules/evolution.c
===================================================================
--- src/tracker-indexer/modules/evolution.c	(revision 1882)
+++ src/tracker-indexer/modules/evolution.c	(working copy)
@@ -30,6 +30,7 @@
 #include <libtracker-common/tracker-utils.h>
 #include <libtracker-common/tracker-file-utils.h>
 #include <libtracker-common/tracker-type-utils.h>
+#include <libtracker-common/tracker-ontology.h>
 
 #define METADATA_FILE_PATH           "File:Path"
 #define METADATA_FILE_NAME           "File:Name"
@@ -578,24 +579,34 @@ get_metadata_for_mbox (TrackerFile *file
                 return NULL;
         }
 
-	metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
-					  NULL,
-					  (GDestroyNotify) g_free);
-
-        dir = tracker_string_replace (file->path, local_dir, NULL);
-        name = g_strdup_printf ("%s;uid=%d", dir, get_mbox_message_id (message));
-
-        g_hash_table_insert (metadata, METADATA_FILE_PATH, g_strdup ("email://local@local"));
-        g_hash_table_insert (metadata, METADATA_FILE_NAME, name);
-
-        g_mime_message_get_date (message, &date, NULL);
-	g_hash_table_insert (metadata, METADATA_EMAIL_DATE,
-                             tracker_uint_to_string (date));
-
-        g_hash_table_insert (metadata, METADATA_EMAIL_SENDER,
-                             g_strdup (g_mime_message_get_sender (message)));
-        g_hash_table_insert (metadata, METADATA_EMAIL_SUBJECT,
-                             g_strdup (g_mime_message_get_subject (message)));
+		metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+						  (GDestroyNotify) g_object_unref,
+						  (GDestroyNotify) g_free);
+
+		dir = tracker_string_replace (file->path, local_dir, NULL);
+		name = g_strdup_printf ("%s;uid=%d", dir, get_mbox_message_id (message));
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)),
+				     g_strdup ("email://local@local"));
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)),
+				     name);
+
+		g_mime_message_get_date (message, &date, NULL);
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_DATE)),
+				     tracker_uint_to_string (date));
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SENDER)),
+				     g_strdup (g_mime_message_get_sender (message)));
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SUBJECT)),
+				     g_strdup (g_mime_message_get_subject (message)));
 
         /* Missing:
          *
@@ -716,21 +727,33 @@ get_metadata_for_imap (TrackerFile *file
                       SUMMARY_TYPE_STRING, NULL, /* mlist */
                       -1);
 
-	metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
-					  NULL,
-					  (GDestroyNotify) g_free);
+		metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+						  (GDestroyNotify) g_object_unref,
+						  (GDestroyNotify) g_free);
 
-        get_imap_uri (file->path, &dirname, &basename);
+		get_imap_uri (file->path, &dirname, &basename);
 
-        g_hash_table_insert (metadata, METADATA_FILE_PATH, dirname);
-        g_hash_table_insert (metadata, METADATA_FILE_NAME, g_strdup_printf ("%s;uid=%s", basename, uid));
-        g_free (basename);
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_PATH)),
+				     dirname);
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)),
+				     g_strdup_printf ("%s;uid=%s", basename, uid));
+
+		g_free (basename);
+
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_DATE)),
+				     tracker_uint_to_string (date));
 
-	g_hash_table_insert (metadata, METADATA_EMAIL_DATE,
-                             tracker_uint_to_string (date));
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SENDER)), 
+				     from);
 
-        g_hash_table_insert (metadata, METADATA_EMAIL_SENDER, from);
-        g_hash_table_insert (metadata, METADATA_EMAIL_SUBJECT, subject);
+		g_hash_table_insert (metadata, 
+				     g_object_ref (tracker_ontology_get_field_def (METADATA_EMAIL_SUBJECT)), 
+				     subject);
 
         g_free (uid);
         g_free (to);
Index: src/tracker-indexer/modules/applications.c
===================================================================
--- src/tracker-indexer/modules/applications.c	(revision 1882)
+++ src/tracker-indexer/modules/applications.c	(working copy)
@@ -19,7 +19,9 @@
 
 #include <stdlib.h>
 #include <glib.h>
+#include <glib-object.h>
 #include <tracker-indexer/tracker-module.h>
+#include <libtracker-common/tracker-ontology.h>
 
 #define GROUP_DESKTOP_ENTRY "Desktop Entry"
 #define KEY_TYPE            "Type"
@@ -102,21 +104,53 @@ tracker_module_file_get_metadata (Tracke
 	}
 
 	/* Begin collecting data */
-	metadata = g_hash_table_new_full (g_str_hash, g_str_equal,
-					  NULL,
+	metadata = g_hash_table_new_full (g_direct_hash, g_direct_equal,
+					  (GDestroyNotify) g_object_unref,
 					  (GDestroyNotify) g_free);
 
-	insert_data_from_desktop_file (metadata, METADATA_APP_NAME, key_file, KEY_NAME, FALSE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_DISPLAY_NAME, key_file, KEY_NAME, TRUE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_GENERIC_NAME, key_file, KEY_GENERIC_NAME, TRUE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_COMMENT, key_file, KEY_COMMENT, TRUE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_EXECUTABLE, key_file, KEY_EXECUTABLE, FALSE);
-	insert_data_from_desktop_file (metadata, METADATA_APP_ICON, key_file, KEY_ICON, FALSE);
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_NAME)), 
+				       key_file, 
+				       KEY_NAME, 
+				       FALSE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_DISPLAY_NAME)),
+				       key_file,
+				       KEY_NAME,
+				       TRUE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_GENERIC_NAME)),
+				       key_file,
+				       KEY_GENERIC_NAME,
+				       TRUE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_COMMENT)),
+				       key_file,
+				       KEY_COMMENT,
+				       TRUE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_EXECUTABLE)),
+				       key_file,
+				       KEY_EXECUTABLE,
+				       FALSE);
+
+	insert_data_from_desktop_file (metadata, 
+				       g_object_ref (tracker_ontology_get_field_def (METADATA_APP_ICON)),
+				       key_file,
+				       KEY_ICON,
+				       FALSE);
 
 	/* FIXME: mimetypes list and categories? */
 
 	filename = g_filename_display_basename (file->path);
-	g_hash_table_insert (metadata, METADATA_FILE_NAME, filename);
+
+	g_hash_table_insert (metadata, 
+			     g_object_ref (tracker_ontology_get_field_def (METADATA_FILE_NAME)),
+			     filename);
 
 	g_key_file_free (key_file);
 	g_free (type);
Index: src/tracker-indexer/tracker-indexer.c
===================================================================
--- src/tracker-indexer/tracker-indexer.c	(revision 1882)
+++ src/tracker-indexer/tracker-indexer.c	(working copy)
@@ -706,7 +706,7 @@ index_metadata_foreach (gpointer key,
 	}
 
 	/* Parse */
-	field = tracker_ontology_get_field_def ((gchar *) key);
+	field = key; /* tracker_ontology_get_field_def ((gchar *) key); */
 
 	parsed_value = tracker_parser_text_to_string ((gchar *) value,
 						      data->language,
Index: ChangeLog
===================================================================
--- ChangeLog	(revision 1882)
+++ ChangeLog	(working copy)
@@ -15,6 +15,18 @@
 	
 2008-07-17  Philip Van Hoof  <pvanhoof@gnome.org>
 
+	* src/tracker-indexer/modules/files.c:
+	* src/tracker-indexer/modules/evolution.c:
+	* src/tracker-indexer/modules/applications.c:
+	* src/tracker-indexer/tracker-indexer.c:
+
+	tracker-indexer modules returned a GHashTable with field name/value
+	pairs, we now use TrackerField pointers for the hashtable keys, so we
+	could deal with values in their native format (instead of having to
+	convert everything to strings)
+
+2008-07-17  Philip Van Hoof  <pvanhoof@gnome.org>
+
 	* src/libtracker-db/tracker-db-manager.c: Add the functions for the
 	combine-attached db connections
 

