X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fcfg.c;h=55f3c8e491d02cb13625471c48ebb1a9b2a0cb8b;hb=f3b05dae619a7909bd7422b3a82422c9442aa114;hp=5a6f8e80fbb5c810fe23bfcdc8f42c80f1d7ffdf;hpb=12388f81cb55cca6fba194a1fc02870242dddef5;p=psensor.git diff --git a/src/cfg.c b/src/cfg.c index 5a6f8e8..55f3c8e 100644 --- a/src/cfg.c +++ b/src/cfg.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2010-2012 jeanfi@gmail.com + * Copyright (C) 2010-2014 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -21,9 +21,8 @@ #include #include -#include - #include "cfg.h" +#include "log.h" static const char *KEY_SENSORS = "/apps/psensor/sensors"; @@ -34,6 +33,7 @@ static const char *ATT_SENSOR_COLOR = "color"; static const char *ATT_SENSOR_ENABLED = "enabled"; static const char *ATT_SENSOR_NAME = "name"; static const char *ATT_SENSOR_APPINDICATOR_DISABLED = "appindicator/disabled"; +static const char *ATT_SENSOR_POSITION = "position"; static const char *KEY_SENSOR_UPDATE_INTERVAL = "/apps/psensor/sensor/update_interval"; @@ -92,6 +92,9 @@ static const char *KEY_INTERFACE_TEMPERATURE_UNIT = "/apps/psensor/interface/temperature_unit"; static const char *KEY_SLOG_ENABLED = "/apps/psensor/slog/enabled"; +static const char *KEY_SLOG_INTERVAL = "/apps/psensor/slog/interval"; + +static const char *KEY_NOTIFICATION_SCRIPT = "/apps/psensor/notif_script"; static GConfClient *client; @@ -109,6 +112,29 @@ static char *get_string(const char *key, const char *default_value) return value; } +char *config_get_notif_script() +{ + char *str; + + str = gconf_client_get_string(client, KEY_NOTIFICATION_SCRIPT, NULL); + if (str && !strlen(str)) { + free(str); + str = NULL; + } + + return str; +} + +void config_set_notif_script(const char *str) +{ + if (str && strlen(str) > 0) + gconf_client_set_string(client, + KEY_NOTIFICATION_SCRIPT, str, NULL); + else + gconf_client_set_string(client, + KEY_NOTIFICATION_SCRIPT, "", NULL); +} + static struct color *get_background_color() { char *scolor; @@ -366,6 +392,27 @@ void config_set_sensor_name(const char *sid, const char *name) free(key); } +int config_get_sensor_position(const char *sid) +{ + char *key; + int pos; + + key = get_sensor_att_key(sid, ATT_SENSOR_POSITION); + pos = gconf_client_get_int(client, key, NULL); + free(key); + + return pos; +} + +void config_set_sensor_position(const char *sid, int pos) +{ + char *key; + + key = get_sensor_att_key(sid, ATT_SENSOR_POSITION); + gconf_client_set_int(client, key, pos, NULL); + free(key); +} + bool config_is_appindicator_enabled(const char *sid) { char *key; @@ -387,7 +434,7 @@ void config_set_appindicator_enabled(const char *sid, bool enabled) free(key); } -static bool is_slog_enabled() +bool is_slog_enabled() { return gconf_client_get_bool(client, KEY_SLOG_ENABLED, NULL); } @@ -397,6 +444,41 @@ static void set_slog_enabled(bool enabled) gconf_client_set_bool(client, KEY_SLOG_ENABLED, enabled, NULL); } +void config_slog_enabled_notify_add(GConfClientNotifyFunc cbk, void *data) +{ + log_debug("config_slog_enabled_notify_add"); + gconf_client_add_dir(client, + KEY_SLOG_ENABLED, + GCONF_CLIENT_PRELOAD_NONE, + NULL); + gconf_client_notify_add(client, + KEY_SLOG_ENABLED, + cbk, + data, + NULL, + NULL); +} + +int config_get_slog_interval() +{ + int res; + + res = gconf_client_get_int(client, KEY_SLOG_INTERVAL, NULL); + + if (res <= 0) + return 300; + else + return res; +} + +static void set_slog_interval(int interval) +{ + if (interval <= 0) + interval = 300; + + gconf_client_set_int(client, KEY_SLOG_INTERVAL, interval, NULL); +} + static bool is_window_decoration_enabled() { return !gconf_client_get_bool(client, @@ -458,6 +540,7 @@ struct config *config_load() c->window_decoration_enabled = is_window_decoration_enabled(); c->window_keep_below_enabled = is_window_keep_below_enabled(); c->slog_enabled = is_slog_enabled(); + c->slog_interval = config_get_slog_interval(); c->sensor_update_interval = gconf_client_get_int(client, KEY_SENSOR_UPDATE_INTERVAL, NULL); @@ -539,6 +622,7 @@ void config_save(const struct config *c) set_window_decoration_enabled(c->window_decoration_enabled); set_window_keep_below_enabled(c->window_keep_below_enabled); set_slog_enabled(c->slog_enabled); + set_slog_interval(c->slog_interval); gconf_client_set_int(client, KEY_GRAPH_UPDATE_INTERVAL,