From 39897615ff371e114e74dea464737df98c0684c6 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Thu, 9 Oct 2014 08:56:35 +0200 Subject: [PATCH] display min/max values --- src/glade/sensor-edit.glade | 78 +++++++++++++++++++++++++++++++++++++++++++++ src/lib/lmsensor.c | 9 ++++++ src/lib/psensor.c | 3 ++ src/lib/psensor.h | 4 +++ src/ui_sensorpref.c | 25 ++++++++++++++- 5 files changed, 118 insertions(+), 1 deletion(-) diff --git a/src/glade/sensor-edit.glade b/src/glade/sensor-edit.glade index 67fa6fe..69ef482 100644 --- a/src/glade/sensor-edit.glade +++ b/src/glade/sensor-edit.glade @@ -230,6 +230,10 @@ True False + 4 + 4 + 4 + 4 0 4 Name: @@ -279,6 +283,80 @@ 1 + + + True + False + 4 + 4 + 4 + 4 + 0 + 4 + Min: + + + 0 + 4 + 1 + 1 + + + + + True + False + 4 + 4 + 4 + 4 + 0 + 4 + Max: + + + 0 + 5 + 1 + 1 + + + + + True + False + 4 + 4 + 4 + 4 + 0 + label + + + 1 + 4 + 1 + 1 + + + + + True + False + 4 + 4 + 4 + 4 + 0 + label + + + 1 + 5 + 1 + 1 + + diff --git a/src/lib/lmsensor.c b/src/lib/lmsensor.c index d72da3e..32785b6 100644 --- a/src/lib/lmsensor.c +++ b/src/lib/lmsensor.c @@ -211,6 +211,15 @@ lmsensor_psensor_create(const sensors_chip_name *chip, psensor = psensor_create(id, label, cname, type, values_max_length); + + sf = sensors_get_subfeature(chip, feature, SENSORS_SUBFEATURE_TEMP_MAX); + if (sf) + psensor->max = get_value(chip, sf); + + sf = sensors_get_subfeature(chip, feature, SENSORS_SUBFEATURE_TEMP_MIN); + if (sf) + psensor->min = get_value(chip, sf); + lmsensor_data_set(psensor, chip, feature); if (feature->type == SENSORS_FEATURE_TEMP diff --git a/src/lib/psensor.c b/src/lib/psensor.c index 415af89..c5e412b 100644 --- a/src/lib/psensor.c +++ b/src/lib/psensor.c @@ -45,6 +45,9 @@ struct psensor *psensor_create(char *id, psensor->sess_lowest = UNKNOWN_DBL_VALUE; psensor->sess_highest = UNKNOWN_DBL_VALUE; + psensor->min = UNKNOWN_DBL_VALUE; + psensor->max = UNKNOWN_DBL_VALUE; + psensor->type = type; psensor->values_max_length = values_max_length; diff --git a/src/lib/psensor.h b/src/lib/psensor.h index 11805f9..cf5dc24 100644 --- a/src/lib/psensor.h +++ b/src/lib/psensor.h @@ -80,6 +80,10 @@ struct psensor { /* see psensor_type */ unsigned int type; + double max; + + double min; + /* The highest value detected during this session. */ double sess_highest; diff --git a/src/ui_sensorpref.c b/src/ui_sensorpref.c index 25fff3c..5ed1e49 100644 --- a/src/ui_sensorpref.c +++ b/src/ui_sensorpref.c @@ -38,6 +38,8 @@ static GtkDialog *w_dialog; static GtkLabel *w_sensor_id; static GtkLabel *w_sensor_type; static GtkLabel *w_sensor_chipname; +static GtkLabel *w_sensor_min; +static GtkLabel *w_sensor_max; static GtkLabel *w_sensor_low_threshold_unit; static GtkLabel *w_sensor_high_threshold_unit; static GtkEntry *w_sensor_name; @@ -271,6 +273,7 @@ static void update_pref(struct psensor *s) int use_celsius, threshold; GdkRGBA *color; const char *chip; + char *smin, *smax; if (!s) return; @@ -287,6 +290,23 @@ static void update_pref(struct psensor *s) chip = _("Unknown"); gtk_label_set_text(w_sensor_chipname, chip); + use_celsius = config_get_sensor_unit() == CELSIUS ? 1 : 0; + + if (s->min == UNKNOWN_DBL_VALUE) + smin = strdup(_("Unknown")); + else + smin = psensor_value_to_str(s->type, s->min, use_celsius); + + gtk_label_set_text(w_sensor_min, smin); + free(smin); + + if (s->max == UNKNOWN_DBL_VALUE) + smax = strdup(_("Unknown")); + else + smax = psensor_value_to_str(s->type, s->max, use_celsius); + gtk_label_set_text(w_sensor_max, smax); + free(smax); + gtk_toggle_button_set_active(w_sensor_draw, config_is_sensor_graph_enabled(s->id)); @@ -297,7 +317,6 @@ static void update_pref(struct psensor *s) gtk_color_chooser_set_rgba(GTK_COLOR_CHOOSER(w_sensor_color), color); gdk_rgba_free(color); - use_celsius = config_get_sensor_unit() == CELSIUS ? 1 : 0; gtk_label_set_text(w_sensor_high_threshold_unit, psensor_type_to_unit_str(s->type, use_celsius)); gtk_label_set_text(w_sensor_low_threshold_unit, @@ -416,6 +435,10 @@ static GtkBuilder *load_ui(struct ui_psensor *ui) (gtk_builder_get_object(builder, "sensor_name")); w_sensor_chipname = GTK_LABEL (gtk_builder_get_object(builder, "chip_name")); + w_sensor_min = GTK_LABEL + (gtk_builder_get_object(builder, "sensor_min")); + w_sensor_max = GTK_LABEL + (gtk_builder_get_object(builder, "sensor_max")); w_sensor_draw = GTK_TOGGLE_BUTTON (gtk_builder_get_object(builder, "sensor_draw")); w_sensor_display = GTK_TOGGLE_BUTTON -- 2.7.4