X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-conf.c;h=afeeb21b7b221a8ac06d8d5a47aa4fabe1c8daa1;hp=d87802877f995d31531f2822f71fa7325bda12dd;hb=e945917cdf9665580268ead123cd0df719990eda;hpb=ce20de84bc90c7a0f8f57b511d0a743efbbe4c9b diff --git a/src/modest-conf.c b/src/modest-conf.c index d878028..afeeb21 100644 --- a/src/modest-conf.c +++ b/src/modest-conf.c @@ -28,6 +28,7 @@ */ #include +#include #include "modest-conf.h" #include "modest-marshal.h" @@ -151,23 +152,26 @@ modest_conf_finalize (GObject *obj) } } -GObject* +ModestConf* modest_conf_new (void) { - ModestConf *conf = MODEST_CONF(g_object_new(MODEST_TYPE_CONF, NULL)); + ModestConf *conf; + ModestConfPrivate *priv; + + conf = MODEST_CONF(g_object_new(MODEST_TYPE_CONF, NULL)); if (!conf) { g_printerr ("modest: failed to init ModestConf (GConf)\n"); return NULL; } - ModestConfPrivate *priv = MODEST_CONF_GET_PRIVATE(conf); + priv = MODEST_CONF_GET_PRIVATE(conf); if (!priv->gconf_client) { g_printerr ("modest: failed to init gconf\n"); g_object_unref (conf); return NULL; } - return G_OBJECT(conf); + return conf; } @@ -212,6 +216,59 @@ modest_conf_get_bool (ModestConf* self, const gchar* key, GError **err) } + +gchar* +modest_conf_get_string_or_default (ModestConf* self, const gchar* key, + const gchar *defaultval) +{ + ModestConfPrivate *priv; + GConfValue *val; + const gchar *str; + + g_return_val_if_fail (self, g_strdup(defaultval)); + g_return_val_if_fail (key, g_strdup(defaultval)); + + priv = MODEST_CONF_GET_PRIVATE(self); + val = gconf_client_get (priv->gconf_client, key, NULL); + + if (!val) + str = defaultval; + else { + str = gconf_value_get_string (val); + gconf_value_free (val); + } + + return g_strdup (str); +} + + +gint +modest_conf_get_int_or_default (ModestConf* self, const gchar* key, + gint defaultval) +{ + ModestConfPrivate *priv; + GConfValue *val; + gint retval; + + g_return_val_if_fail (self, defaultval); + g_return_val_if_fail (key, defaultval); + + priv = MODEST_CONF_GET_PRIVATE(self); + val = gconf_client_get (priv->gconf_client, key, NULL); + + if (!val) + retval = defaultval; + else { + retval = gconf_value_get_int (val); + gconf_value_free (val); + } + + return retval; +} + + + + gboolean modest_conf_set_string (ModestConf* self, const gchar* key, const gchar* val, GError **err) @@ -302,22 +359,47 @@ modest_conf_remove_key (ModestConf* self, const gchar* key, GError **err) } - - gboolean modest_conf_key_exists (ModestConf* self, const gchar* key, GError **err) { ModestConfPrivate *priv; - + GConfValue *val; + g_return_val_if_fail (self,FALSE); g_return_val_if_fail (key, FALSE); priv = MODEST_CONF_GET_PRIVATE(self); - - return gconf_client_dir_exists (priv->gconf_client,key,err); + + /* the fast way... */ + if (gconf_client_dir_exists (priv->gconf_client,key,err)) + return TRUE; + + val = gconf_client_get (priv->gconf_client, key, NULL); + if (!val) + return FALSE; + else { + gconf_value_free (val); + return TRUE; + } +} + + +gchar* +modest_conf_key_escape (ModestConf *self, const gchar* key) +{ + g_return_val_if_fail (key, NULL); + + return gconf_escape_key (key, strlen(key)); } +gchar* +modest_conf_key_unescape (ModestConf *self, const gchar* key) +{ + g_return_val_if_fail (key, NULL); + + return gconf_unescape_key (key, strlen(key)); +}