X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fcfg.c;h=6a7ce1bf50ea8e11166340336836e495286deefa;hb=c99f9324d18e175a05878f132f0f230be7595ca9;hp=13a6c8e7466729a93757f7610297d3ecd8b17237;hpb=b12012103df8a11a676ddd9fd6316073e40835b1;p=psensor.git diff --git a/src/cfg.c b/src/cfg.c index 13a6c8e..6a7ce1b 100644 --- a/src/cfg.c +++ b/src/cfg.c @@ -47,25 +47,25 @@ static const char *ATT_SENSOR_APPINDICATOR_MENU_DISABLED static const char *ATT_SENSOR_APPINDICATOR_LABEL_ENABLED = "appindicator_label_enabled"; static const char *ATT_SENSOR_POSITION = "position"; +static const char *ATT_SENSOR_HIDE = "hide"; /* Update interval of the measures of the sensors */ static const char *KEY_SENSOR_UPDATE_INTERVAL -= "/apps/psensor/sensor/update_interval"; += "sensor-update-interval"; /* Graph settings */ static const char *KEY_GRAPH_UPDATE_INTERVAL = "graph-update-interval"; static const char *KEY_GRAPH_MONITORING_DURATION = "graph-monitoring-duration"; -static const char *KEY_GRAPH_BACKGROUND_COLOR -= "/apps/psensor/graph/background_color"; +static const char *KEY_GRAPH_BACKGROUND_COLOR = "graph-background-color"; static const char *DEFAULT_GRAPH_BACKGROUND_COLOR = "#e8f4e8f4a8f5"; static const char *KEY_GRAPH_BACKGROUND_ALPHA = "graph-background-alpha"; static const char *KEY_GRAPH_FOREGROUND_COLOR -= "/apps/psensor/graph/foreground_color"; += "graph-foreground-color"; static const char *DEFAULT_GRAPH_FOREGROUND_COLOR = "#000000000000"; @@ -105,13 +105,12 @@ static const char *KEY_INTERFACE_TEMPERATURE_UNIT = "interface-temperature-unit"; /* Sensor logging settings */ -static const char *KEY_SLOG_ENABLED = "/apps/psensor/slog/enabled"; -static const char *KEY_SLOG_INTERVAL = "/apps/psensor/slog/interval"; +static const char *KEY_SLOG_ENABLED = "slog-enabled"; +static const char *KEY_SLOG_INTERVAL = "slog-interval"; /* Path to the script called when a notification is raised */ -static const char *KEY_NOTIFICATION_SCRIPT = "/apps/psensor/notif_script"; +static const char *KEY_NOTIFICATION_SCRIPT = "notif-script"; -static GConfClient *client; static GSettings *settings; static char *user_dir; @@ -120,18 +119,16 @@ static GKeyFile *key_file; static char *sensor_config_path; -static char *get_string(const char *key, const char *default_value) -{ - char *value; - - value = gconf_client_get_string(client, key, NULL); +static void (*slog_enabled_cbk)(void *); - if (!value) { - value = strdup(default_value); - gconf_client_set_string(client, key, default_value, NULL); - } +static char *get_string(const char *key) +{ + return g_settings_get_string(settings, key); +} - return value; +static void set_string(const char *key, const char *str) +{ + g_settings_set_string(settings, key, str); } static void set_bool(const char *k, bool b) @@ -168,7 +165,7 @@ char *config_get_notif_script() { char *str; - str = gconf_client_get_string(client, KEY_NOTIFICATION_SCRIPT, NULL); + str = get_string(KEY_NOTIFICATION_SCRIPT); if (str && !strlen(str)) { free(str); str = NULL; @@ -180,11 +177,9 @@ char *config_get_notif_script() void config_set_notif_script(const char *str) { if (str && strlen(str) > 0) - gconf_client_set_string(client, - KEY_NOTIFICATION_SCRIPT, str, NULL); + set_string(KEY_NOTIFICATION_SCRIPT, str); else - gconf_client_set_string(client, - KEY_NOTIFICATION_SCRIPT, "", NULL); + set_string(KEY_NOTIFICATION_SCRIPT, ""); } static struct color *get_background_color() @@ -192,14 +187,13 @@ static struct color *get_background_color() char *scolor; struct color *c; - scolor = get_string(KEY_GRAPH_BACKGROUND_COLOR, - DEFAULT_GRAPH_BACKGROUND_COLOR); + scolor = get_string(KEY_GRAPH_BACKGROUND_COLOR); c = str_to_color(scolor); free(scolor); if (!c) - return color_new(0xffff, 0xffff, 0xffff); + return color_new(1, 1, 1); return c; } @@ -209,14 +203,13 @@ static struct color *get_foreground_color() char *scolor; struct color *c; - scolor = get_string(KEY_GRAPH_FOREGROUND_COLOR, - DEFAULT_GRAPH_FOREGROUND_COLOR); + scolor = get_string(KEY_GRAPH_FOREGROUND_COLOR); c = str_to_color(scolor); free(scolor); if (!c) - return color_new(0x0000, 0x0000, 0x0000); + return color_new(0, 0, 0); return c; } @@ -259,8 +252,7 @@ static void set_background_color(const struct color *color) if (!scolor) scolor = strdup(DEFAULT_GRAPH_BACKGROUND_COLOR); - gconf_client_set_string(client, - KEY_GRAPH_BACKGROUND_COLOR, scolor, NULL); + set_string(KEY_GRAPH_BACKGROUND_COLOR, scolor); free(scolor); } @@ -273,46 +265,46 @@ static void set_foreground_color(const struct color *color) if (!str) str = strdup(DEFAULT_GRAPH_FOREGROUND_COLOR); - gconf_client_set_string(client, KEY_GRAPH_FOREGROUND_COLOR, str, NULL); + set_string(KEY_GRAPH_FOREGROUND_COLOR, str); free(str); } bool is_slog_enabled() { - return gconf_client_get_bool(client, KEY_SLOG_ENABLED, NULL); + return get_bool(KEY_SLOG_ENABLED); } static void set_slog_enabled(bool enabled) { - gconf_client_set_bool(client, KEY_SLOG_ENABLED, enabled, NULL); + set_bool(KEY_SLOG_ENABLED, enabled); } -void config_slog_enabled_notify_add(GConfClientNotifyFunc cbk, void *data) +static void slog_enabled_changed_cbk(GSettings *settings, + gchar *key, + gpointer 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); + if (slog_enabled_cbk) + slog_enabled_cbk(data); } -int config_get_slog_interval() +void config_set_slog_enabled_changed_cbk(void (*cbk)(void *), void *data) { - int res; + log_fct_enter(); - res = gconf_client_get_int(client, KEY_SLOG_INTERVAL, NULL); + slog_enabled_cbk = cbk; - if (res <= 0) - return 300; - else - return res; + g_signal_connect_after(settings, + "changed::slog-enabled", + G_CALLBACK(slog_enabled_changed_cbk), + data); + + log_fct_exit(); +} + +int config_get_slog_interval() +{ + return get_int(KEY_SLOG_INTERVAL); } static void set_slog_interval(int interval) @@ -320,7 +312,7 @@ static void set_slog_interval(int interval) if (interval <= 0) interval = 300; - gconf_client_set_int(client, KEY_SLOG_INTERVAL, interval, NULL); + set_int(KEY_SLOG_INTERVAL, interval); } static bool is_window_decoration_enabled() @@ -343,27 +335,20 @@ static void set_window_keep_below_enabled(bool enabled) set_bool(KEY_INTERFACE_WINDOW_KEEP_BELOW_ENABLED, enabled); } -/* - * Initializes the GConf client. - */ static void init() { - if (!client) - client = gconf_client_get_default(); + log_fct_enter(); if (!settings) settings = g_settings_new("psensor"); + + log_fct_exit(); } void config_cleanup() { config_sync(); - if (client) { - g_object_unref(client); - client = NULL; - } - if (settings) { g_settings_sync(); g_object_unref(settings); @@ -384,6 +369,8 @@ void config_cleanup() free(sensor_config_path); sensor_config_path = NULL; } + + slog_enabled_cbk = NULL; } struct config *config_load() @@ -405,7 +392,7 @@ struct config *config_load() c->slog_interval = config_get_slog_interval(); c->sensor_update_interval - = gconf_client_get_int(client, KEY_SENSOR_UPDATE_INTERVAL, NULL); + = get_int(KEY_SENSOR_UPDATE_INTERVAL); if (c->sensor_update_interval < 1) c->sensor_update_interval = 1; @@ -467,9 +454,7 @@ void config_save(const struct config *c) set_int(KEY_GRAPH_MONITORING_DURATION, c->graph_monitoring_duration); - gconf_client_set_int(client, - KEY_SENSOR_UPDATE_INTERVAL, - c->sensor_update_interval, NULL); + set_int(KEY_SENSOR_UPDATE_INTERVAL, c->sensor_update_interval); set_bool(KEY_INTERFACE_MENU_BAR_DISABLED, c->menu_bar_disabled); @@ -552,16 +537,10 @@ static GKeyFile *get_sensor_key_file() | G_KEY_FILE_KEEP_TRANSLATIONS, &err); - if (!ret) { - if (err->code == G_KEY_FILE_ERROR_NOT_FOUND) { - log_fct(_("The configuration file " - "does not exist.")); - } else { - log_err(_("Failed to parse configuration " - "file: %s"), - path); - } - } + if (!ret) + log_warn(_("Failed to load configuration file %s: %s"), + path, + err->message); } return key_file; @@ -598,8 +577,7 @@ void config_sync() log_fct_exit(); } -static void -sensor_set_str(const char *sid, const char *att, const char *str) +static void sensor_set_str(const char *sid, const char *att, const char *str) { GKeyFile *kfile; @@ -623,8 +601,7 @@ static bool sensor_get_bool(const char *sid, const char *att) return g_key_file_get_boolean(kfile, sid, att, NULL); } -static void -sensor_set_bool(const char *sid, const char *att, bool enabled) +static void sensor_set_bool(const char *sid, const char *att, bool enabled) { GKeyFile *kfile; @@ -694,12 +671,12 @@ config_get_sensor_color(const char *sid, const struct color *dft) return color; } -bool config_is_sensor_enabled(const char *sid) +bool config_is_sensor_graph_enabled(const char *sid) { return sensor_get_bool(sid, ATT_SENSOR_GRAPH_ENABLED); } -void config_set_sensor_enabled(const char *sid, bool enabled) +void config_set_sensor_graph_enabled(const char *sid, bool enabled) { sensor_set_bool(sid, ATT_SENSOR_GRAPH_ENABLED, enabled); } @@ -756,6 +733,16 @@ void config_set_sensor_alarm_enabled(const char *sid, bool enabled) sensor_set_bool(sid, ATT_SENSOR_ALARM_ENABLED, enabled); } +bool config_is_sensor_enabled(const char *sid) +{ + return !sensor_get_bool(sid, ATT_SENSOR_HIDE); +} + +void config_set_sensor_enabled(const char *sid, bool enabled) +{ + sensor_set_bool(sid, ATT_SENSOR_HIDE, !enabled); +} + bool config_is_appindicator_label_enabled(const char *sid) { return sensor_get_bool(sid, ATT_SENSOR_APPINDICATOR_LABEL_ENABLED);