+
+
+static GConfValueType
+modest_conf_type_to_gconf_type (ModestConfValueType value_type, GError **err)
+{
+ GConfValueType gconf_type;
+
+ switch (value_type) {
+ case MODEST_CONF_VALUE_INT:
+ gconf_type = GCONF_VALUE_INT;
+ break;
+ case MODEST_CONF_VALUE_BOOL:
+ gconf_type = GCONF_VALUE_BOOL;
+ break;
+ case MODEST_CONF_VALUE_FLOAT:
+ gconf_type = GCONF_VALUE_FLOAT;
+ break;
+ case MODEST_CONF_VALUE_STRING:
+ gconf_type = GCONF_VALUE_STRING;
+ break;
+ default:
+ /* FIXME: use MODEST_ERROR, and error code */
+ gconf_type = GCONF_VALUE_INVALID;
+ g_printerr ("modest: invalid list value type %d\n", value_type);
+ *err = g_error_new_literal (0, 0, "invalid list value type");
+ }
+ return gconf_type;
+}
+
+
+
+////////////////////////////////////////////////////////////////////////////////
+/* workaround for the b0rked dbus-gconf on maemo */
+/* fires a fake change notification after 0.3 secs.
+ * Might not be necessary anymore. */
+#if 0
+#ifdef MODEST_PLATFORM_MAEMO
+typedef struct {
+ GObject *obj;
+ gchar *key;
+} ChangeHelper;
+
+ChangeHelper*
+change_helper_new (ModestConf *conf, const gchar *key)
+{
+ ChangeHelper *helper = g_slice_alloc (sizeof(ChangeHelper));
+ helper->obj = g_object_ref(G_OBJECT(conf));
+ helper->key = g_strdup (key);
+ return helper;
+}
+
+static void
+change_helper_free (ChangeHelper *helper)
+{
+ g_object_unref (helper->obj);
+ g_free (helper->key);
+ helper->key = NULL;
+ helper->obj = NULL;
+ g_slice_free (ChangeHelper,helper);
+}
+
+static gboolean
+emit_change_cb (ChangeHelper *helper)
+{
+ if (!helper)
+ return FALSE;
+ g_signal_emit (G_OBJECT(helper->obj),signals[KEY_CHANGED_SIGNAL], 0,
+ helper->key, MODEST_CONF_EVENT_KEY_CHANGED);
+ change_helper_free (helper);
+
+ return FALSE;
+}
+
+static gboolean
+emit_remove_cb (ChangeHelper *helper)
+{
+ if (!helper)
+ return FALSE;
+ g_signal_emit (G_OBJECT(helper->obj),signals[KEY_CHANGED_SIGNAL], 0,
+ helper->key, MODEST_CONF_EVENT_KEY_UNSET);
+ change_helper_free (helper);
+
+ return FALSE;
+}
+#endif /* MODEST_PLATFORM_MAEMO */
+#endif
+
+static void
+modest_conf_maemo_fake_on_change (ModestConf *conf, const gchar* key, ModestConfEvent event)
+{
+/* hack for faster notification, might not be necessary anymore: */
+#if 0
+#ifdef MODEST_PLATFORM_MAEMO
+
+ ChangeHelper *helper = change_helper_new (conf,key);
+ g_timeout_add (100, /* after 100 ms */
+ (event == MODEST_CONF_EVENT_KEY_CHANGED)
+ ? (GSourceFunc)emit_change_cb : (GSourceFunc)emit_remove_cb,
+ (gpointer)helper);
+#endif /* MODEST_PLATFORM_MAEMO */
+#endif
+}
+//////////////////////////////////////////////////////////////////////////////////