Hello there,
I added bindings for TrackerConfigFile and TrackerKeyfileObject in
libtracker-common.vapi, I attach the patch and a tiny other one
that fixes the include paths in the VAPI file.
If they look good to you, I'll push them to master.

Cheers

Adrien
>From f1483a80434ea1b16efaefcb2ca0c5cb47aef9a8 Mon Sep 17 00:00:00 2001
From: Adrien Bustany <abust...@gnome.org>
Date: Mon, 31 May 2010 10:15:22 -0400
Subject: [PATCH 1/2] libtracker-common: Fix cheader_filename in VAPI

This commit sets the cheader_filename attribute of the classes bound in
libtracker-common.vapi to use tracker-common.h, as direct inclusion of
other files is now forbidden.
---
 src/libtracker-common/libtracker-common.vapi |    5 +-
 src/miners/flickr/tracker-config.c           |  353 ++++++++++++++++++++++++++
 2 files changed, 356 insertions(+), 2 deletions(-)
 create mode 100644 src/miners/flickr/tracker-config.c

diff --git a/src/libtracker-common/libtracker-common.vapi b/src/libtracker-common/libtracker-common.vapi
index b1d738d..d737529 100644
--- a/src/libtracker-common/libtracker-common.vapi
+++ b/src/libtracker-common/libtracker-common.vapi
@@ -1,5 +1,6 @@
 /*
  * Copyright (C) 2008-2009, Nokia
+ * Copyright (C) 2010, Adrien Bustany <abust...@gnome.org>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -18,10 +19,10 @@
  */
 
 namespace Tracker {
-	[CCode (cheader_filename = "libtracker-common/tracker-date-time.h")]
+	[CCode (cheader_filename = "libtracker-common/tracker-common.h")]
 	public int string_to_date (string date_string, out int offset) throws DateError;
 
-	[CCode (cheader_filename = "libtracker-common/tracker-date-time.h")]
+	[CCode (cheader_filename = "libtracker-common/tracker-common.h")]
 	public errordomain DateError {
 		OFFSET,
 		INVALID_ISO8601
diff --git a/src/miners/flickr/tracker-config.c b/src/miners/flickr/tracker-config.c
new file mode 100644
index 0000000..ab2e608
--- /dev/null
+++ b/src/miners/flickr/tracker-config.c
@@ -0,0 +1,353 @@
+/* tracker-config.c generated by valac, the Vala compiler
+ * generated from tracker-config.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <libtracker-common/tracker-common.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+#define TRACKER_TYPE_CONFIG (tracker_config_get_type ())
+#define TRACKER_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TRACKER_TYPE_CONFIG, TrackerConfig))
+#define TRACKER_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TRACKER_TYPE_CONFIG, TrackerConfigClass))
+#define TRACKER_IS_CONFIG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TRACKER_TYPE_CONFIG))
+#define TRACKER_IS_CONFIG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TRACKER_TYPE_CONFIG))
+#define TRACKER_CONFIG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TRACKER_TYPE_CONFIG, TrackerConfigClass))
+
+typedef struct _TrackerConfig TrackerConfig;
+typedef struct _TrackerConfigClass TrackerConfigClass;
+typedef struct _TrackerConfigPrivate TrackerConfigPrivate;
+
+#define TRACKER_CONFIG_TYPE_DOWNLOAD_BEHAVIOUR (tracker_config_download_behaviour_get_type ())
+
+#define TRACKER_CONFIG_TYPE_CONFIG_KEY (tracker_config_config_key_get_type ())
+typedef struct _TrackerConfigConfigKey TrackerConfigConfigKey;
+#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
+#define _g_free0(var) (var = (g_free (var), NULL))
+
+struct _TrackerConfig {
+	TrackerConfigFile parent_instance;
+	TrackerConfigPrivate * priv;
+};
+
+struct _TrackerConfigClass {
+	TrackerConfigFileClass parent_class;
+};
+
+struct _TrackerConfigPrivate {
+	guint _download_behaviour;
+};
+
+typedef enum  {
+	TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_LAN,
+	TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_3G,
+	TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_EDGE,
+	TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_GPRS
+} TrackerConfigDownloadBehaviour;
+
+struct _TrackerConfigConfigKey {
+	GType type;
+	char* property;
+	char* group;
+	char* key;
+};
+
+
+static gpointer tracker_config_parent_class = NULL;
+
+GType tracker_config_get_type (void);
+#define TRACKER_CONFIG_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRACKER_TYPE_CONFIG, TrackerConfigPrivate))
+enum  {
+	TRACKER_CONFIG_DUMMY_PROPERTY,
+	TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR
+};
+GType tracker_config_download_behaviour_get_type (void);
+#define TRACKER_CONFIG_DEFAULT_DOWNLOAD_BEHAVIOUR ((guint) TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_3G)
+#define TRACKER_CONFIG_GROUP_GENERAL "General"
+#define TRACKER_CONFIG_GROUP_NETWORK "Network"
+#define TRACKER_CONFIG_TYPE_INT ((gint) G_TYPE_INT)
+static GType tracker_config_config_key_get_type (void) G_GNUC_UNUSED;
+static TrackerConfigConfigKey* tracker_config_config_key_dup (const TrackerConfigConfigKey* self);
+static void tracker_config_config_key_free (TrackerConfigConfigKey* self);
+static void tracker_config_config_key_copy (const TrackerConfigConfigKey* self, TrackerConfigConfigKey* dest);
+static void tracker_config_config_key_destroy (TrackerConfigConfigKey* self);
+void tracker_config_load (TrackerConfig* self, gboolean use_defaults);
+static void tracker_config_real_changed (TrackerConfigFile* base);
+static void tracker_config_create_with_defaults (TrackerConfig* self);
+gboolean tracker_config_save (TrackerConfig* self);
+TrackerConfig* tracker_config_new (void);
+TrackerConfig* tracker_config_construct (GType object_type);
+guint tracker_config_get_download_behaviour (TrackerConfig* self);
+void tracker_config_set_download_behaviour (TrackerConfig* self, guint value);
+static GObject * tracker_config_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
+static void tracker_config_finalize (GObject* obj);
+static void tracker_config_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
+static void tracker_config_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
+
+static const TrackerConfigConfigKey TRACKER_CONFIG_config_keys[1] = {{G_TYPE_INT, "download-behaviour", TRACKER_CONFIG_GROUP_NETWORK, "DownloadBehaviour"}};
+
+
+GType tracker_config_download_behaviour_get_type (void) {
+	static volatile gsize tracker_config_download_behaviour_type_id__volatile = 0;
+	if (g_once_init_enter (&tracker_config_download_behaviour_type_id__volatile)) {
+		static const GEnumValue values[] = {{TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_LAN, "TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_LAN", "lan"}, {TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_3G, "TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_3G", "3g"}, {TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_EDGE, "TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_EDGE", "edge"}, {TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_GPRS, "TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_GPRS", "gprs"}, {0, NULL, NULL}};
+		GType tracker_config_download_behaviour_type_id;
+		tracker_config_download_behaviour_type_id = g_enum_register_static ("TrackerConfigDownloadBehaviour", values);
+		g_once_init_leave (&tracker_config_download_behaviour_type_id__volatile, tracker_config_download_behaviour_type_id);
+	}
+	return tracker_config_download_behaviour_type_id__volatile;
+}
+
+
+static void tracker_config_real_changed (TrackerConfigFile* base) {
+	TrackerConfig * self;
+	self = (TrackerConfig*) base;
+	tracker_config_load (self, FALSE);
+}
+
+
+void tracker_config_load (TrackerConfig* self, gboolean use_defaults) {
+	g_return_if_fail (self != NULL);
+	if (use_defaults) {
+		tracker_config_create_with_defaults (self);
+	}
+	if (!((TrackerConfigFile*) self)->file_exists) {
+		tracker_config_file_save (TRACKER_CONFIG_FILE (self));
+	}
+	{
+		TrackerConfigConfigKey* key_collection;
+		int key_collection_length1;
+		int key_it;
+		key_collection = TRACKER_CONFIG_config_keys;
+		key_collection_length1 = G_N_ELEMENTS (TRACKER_CONFIG_config_keys);
+		for (key_it = 0; key_it < G_N_ELEMENTS (TRACKER_CONFIG_config_keys); key_it = key_it + 1) {
+			TrackerConfigConfigKey key;
+			key = key_collection[key_it];
+			{
+				if (key.type == G_TYPE_INT) {
+					tracker_keyfile_object_load_int (self, key.property, ((TrackerConfigFile*) self)->key_file, key.group, key.key);
+				} else {
+					g_assert_not_reached ();
+				}
+			}
+		}
+	}
+}
+
+
+gboolean tracker_config_save (TrackerConfig* self) {
+	gboolean result = FALSE;
+	g_return_val_if_fail (self != NULL, FALSE);
+	if (((TrackerConfigFile*) self)->key_file == NULL) {
+		g_critical ("tracker-config.vala:73: Could not save config, GKeyFile was NULL, has " \
+"the config been loaded?");
+		result = FALSE;
+		return result;
+	}
+	tracker_keyfile_object_save_int (self, "download-behaviour", ((TrackerConfigFile*) self)->key_file, TRACKER_CONFIG_GROUP_NETWORK, "DownloadBehaviour");
+	result = tracker_config_file_save (TRACKER_CONFIG_FILE (self));
+	return result;
+}
+
+
+static void tracker_config_create_with_defaults (TrackerConfig* self) {
+	GError * _inner_error_;
+	g_return_if_fail (self != NULL);
+	_inner_error_ = NULL;
+	{
+		g_key_file_has_key (((TrackerConfigFile*) self)->key_file, TRACKER_CONFIG_GROUP_NETWORK, "DownloadBehaviour", &_inner_error_);
+		if (_inner_error_ != NULL) {
+			goto __catch19_g_error;
+		}
+	}
+	goto __finally19;
+	__catch19_g_error:
+	{
+		GError * e;
+		e = _inner_error_;
+		_inner_error_ = NULL;
+		{
+			gboolean _tmp0_ = FALSE;
+			if (!g_error_matches (e, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_KEY_NOT_FOUND)) {
+				_tmp0_ = !g_error_matches (e, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND);
+			} else {
+				_tmp0_ = FALSE;
+			}
+			if (_tmp0_) {
+				g_critical ("tracker-config.vala:87: Could not load config default: %s", e->message);
+			} else {
+				g_key_file_set_integer (((TrackerConfigFile*) self)->key_file, TRACKER_CONFIG_GROUP_NETWORK, "DownloadBehaviour", (gint) TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_3G);
+			}
+			_g_error_free0 (e);
+		}
+	}
+	__finally19:
+	if (_inner_error_ != NULL) {
+		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
+		g_clear_error (&_inner_error_);
+		return;
+	}
+}
+
+
+TrackerConfig* tracker_config_construct (GType object_type) {
+	TrackerConfig * self;
+	self = g_object_newv (object_type, 0, NULL);
+	return self;
+}
+
+
+TrackerConfig* tracker_config_new (void) {
+	return tracker_config_construct (TRACKER_TYPE_CONFIG);
+}
+
+
+guint tracker_config_get_download_behaviour (TrackerConfig* self) {
+	guint result;
+	g_return_val_if_fail (self != NULL, 0U);
+	result = self->priv->_download_behaviour;
+	return result;
+}
+
+
+void tracker_config_set_download_behaviour (TrackerConfig* self, guint value) {
+	gboolean _tmp0_ = FALSE;
+	g_return_if_fail (self != NULL);
+	if (value < ((guint) TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_LAN)) {
+		_tmp0_ = TRUE;
+	} else {
+		_tmp0_ = value > ((guint) TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR_GPRS);
+	}
+	if (_tmp0_) {
+		return;
+	}
+	self->priv->_download_behaviour = value;
+	g_object_notify ((GObject *) self, "download-behaviour");
+}
+
+
+static GObject * tracker_config_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
+	GObject * obj;
+	GObjectClass * parent_class;
+	TrackerConfig * self;
+	parent_class = G_OBJECT_CLASS (tracker_config_parent_class);
+	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+	self = TRACKER_CONFIG (obj);
+	{
+		g_object_set ((TrackerConfigFile*) self, "domain", "tracker-miner-flickr", NULL);
+		G_OBJECT_CLASS (tracker_config_parent_class)->constructed ((GObject*) TRACKER_CONFIG_FILE (self));
+		tracker_config_load (self, TRUE);
+	}
+	return obj;
+}
+
+
+static void tracker_config_config_key_copy (const TrackerConfigConfigKey* self, TrackerConfigConfigKey* dest) {
+	dest->type = self->type;
+	dest->property = g_strdup (self->property);
+	dest->group = g_strdup (self->group);
+	dest->key = g_strdup (self->key);
+}
+
+
+static void tracker_config_config_key_destroy (TrackerConfigConfigKey* self) {
+	_g_free0 (self->property);
+	_g_free0 (self->group);
+	_g_free0 (self->key);
+}
+
+
+static TrackerConfigConfigKey* tracker_config_config_key_dup (const TrackerConfigConfigKey* self) {
+	TrackerConfigConfigKey* dup;
+	dup = g_new0 (TrackerConfigConfigKey, 1);
+	tracker_config_config_key_copy (self, dup);
+	return dup;
+}
+
+
+static void tracker_config_config_key_free (TrackerConfigConfigKey* self) {
+	tracker_config_config_key_destroy (self);
+	g_free (self);
+}
+
+
+static GType tracker_config_config_key_get_type (void) {
+	static volatile gsize tracker_config_config_key_type_id__volatile = 0;
+	if (g_once_init_enter (&tracker_config_config_key_type_id__volatile)) {
+		GType tracker_config_config_key_type_id;
+		tracker_config_config_key_type_id = g_boxed_type_register_static ("TrackerConfigConfigKey", (GBoxedCopyFunc) tracker_config_config_key_dup, (GBoxedFreeFunc) tracker_config_config_key_free);
+		g_once_init_leave (&tracker_config_config_key_type_id__volatile, tracker_config_config_key_type_id);
+	}
+	return tracker_config_config_key_type_id__volatile;
+}
+
+
+static void tracker_config_class_init (TrackerConfigClass * klass) {
+	tracker_config_parent_class = g_type_class_peek_parent (klass);
+	g_type_class_add_private (klass, sizeof (TrackerConfigPrivate));
+	TRACKER_CONFIG_FILE_CLASS (klass)->changed = tracker_config_real_changed;
+	G_OBJECT_CLASS (klass)->get_property = tracker_config_get_property;
+	G_OBJECT_CLASS (klass)->set_property = tracker_config_set_property;
+	G_OBJECT_CLASS (klass)->constructor = tracker_config_constructor;
+	G_OBJECT_CLASS (klass)->finalize = tracker_config_finalize;
+	g_object_class_install_property (G_OBJECT_CLASS (klass), TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR, g_param_spec_uint ("download-behaviour", "download-behaviour", "download-behaviour", 0, G_MAXUINT, 0U, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
+}
+
+
+static void tracker_config_instance_init (TrackerConfig * self) {
+	self->priv = TRACKER_CONFIG_GET_PRIVATE (self);
+	self->priv->_download_behaviour = TRACKER_CONFIG_DEFAULT_DOWNLOAD_BEHAVIOUR;
+}
+
+
+static void tracker_config_finalize (GObject* obj) {
+	TrackerConfig * self;
+	self = TRACKER_CONFIG (obj);
+	G_OBJECT_CLASS (tracker_config_parent_class)->finalize (obj);
+}
+
+
+GType tracker_config_get_type (void) {
+	static volatile gsize tracker_config_type_id__volatile = 0;
+	if (g_once_init_enter (&tracker_config_type_id__volatile)) {
+		static const GTypeInfo g_define_type_info = { sizeof (TrackerConfigClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) tracker_config_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (TrackerConfig), 0, (GInstanceInitFunc) tracker_config_instance_init, NULL };
+		GType tracker_config_type_id;
+		tracker_config_type_id = g_type_register_static (TRACKER_TYPE_CONFIG_FILE, "TrackerConfig", &g_define_type_info, 0);
+		g_once_init_leave (&tracker_config_type_id__volatile, tracker_config_type_id);
+	}
+	return tracker_config_type_id__volatile;
+}
+
+
+static void tracker_config_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
+	TrackerConfig * self;
+	self = TRACKER_CONFIG (object);
+	switch (property_id) {
+		case TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR:
+		g_value_set_uint (value, tracker_config_get_download_behaviour (self));
+		break;
+		default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+
+static void tracker_config_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
+	TrackerConfig * self;
+	self = TRACKER_CONFIG (object);
+	switch (property_id) {
+		case TRACKER_CONFIG_DOWNLOAD_BEHAVIOUR:
+		tracker_config_set_download_behaviour (self, g_value_get_uint (value));
+		break;
+		default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+		break;
+	}
+}
+
+
+
+
-- 
1.7.0.1

>From b4415c5a960c8af1862d277380773151019427fe Mon Sep 17 00:00:00 2001
From: Adrien Bustany <abust...@gnome.org>
Date: Mon, 31 May 2010 10:16:13 -0400
Subject: [PATCH 2/2] libtracker-common: Add config file Vala bindings

This commit adds bindings for both TrackerConfigFile and
TrackerKeyfileObject in libtracker-common.vapi
---
 src/libtracker-common/libtracker-common.vapi |   30 ++++++++++++++++++++++++++
 1 files changed, 30 insertions(+), 0 deletions(-)

diff --git a/src/libtracker-common/libtracker-common.vapi b/src/libtracker-common/libtracker-common.vapi
index d737529..6424007 100644
--- a/src/libtracker-common/libtracker-common.vapi
+++ b/src/libtracker-common/libtracker-common.vapi
@@ -27,5 +27,35 @@ namespace Tracker {
 		OFFSET,
 		INVALID_ISO8601
 	}
+
+	[CCode (cheader_filename = "libtracker-common/tracker-common.h")]
+	public class ConfigFile : GLib.Object {
+		[NoAccessorMethod]
+		public string domain { get; construct; }
+		public bool save ();
+		public virtual signal void changed ();
+		public GLib.File file;
+		public GLib.FileMonitor monitor;
+		public bool file_exists;
+		public GLib.KeyFile key_file;
+	}
+
+	[CCode (cheader_filename = "libtracker-common/tracker-common.h")]
+	public class KeyfileObject {
+		public static string blurb (void *object, string property);
+		public static bool default_boolean (void *object, string property);
+		public static int  default_int (void *object, string property);
+		public static bool validate_int (void *object, string propery, int value);
+		public static void load_int (void *object, string property, GLib.KeyFile key_file, string group, string key);
+		public static void load_boolean (void *object, string property, GLib.KeyFile key_file, string group, string key);
+		public static void load_string (void *object, string property, GLib.KeyFile key_file, string group, string key);
+		public static void load_string_list (void *object, string property, GLib.KeyFile key_file, string group, string key, out GLib.SList return_instead);
+		public static void load_directory_list (void *object, string property, GLib.KeyFile key_file, string group, string key, bool is_recursive, out GLib.SList return_instead);
+		public static void save_int (void *object, string property, GLib.KeyFile key_file, string group, string key);
+		public static void save_boolean (void *object, string property, GLib.KeyFile key_file, string group, string key);
+		public static void save_string (void *object, string property, GLib.KeyFile key_file, string group, string key);
+		public static void save_string_list (void *object, string property, GLib.KeyFile key_file, string group, string key);
+		public static void save_directory_list (void *object, string property, GLib.KeyFile key_file, string group, string key);
+	}
 }
 
-- 
1.7.0.1

_______________________________________________
tracker-list mailing list
tracker-list@gnome.org
http://mail.gnome.org/mailman/listinfo/tracker-list

Reply via email to