made count visible setting change dynamic
[psensor.git] / src / main.c
index 1eea594..defc60d 100644 (file)
@@ -185,6 +185,7 @@ static gboolean ui_refresh_thread(gpointer data)
        struct config *cfg;
        gboolean ret;
        struct ui_psensor *ui = (struct ui_psensor *)data;
+       int use_celsius;
 
        ret = TRUE;
        cfg = ui->config;
@@ -198,9 +199,11 @@ static gboolean ui_refresh_thread(gpointer data)
        if (is_appindicator_supported() || is_status_supported())
                indicators_update(ui);
 
-       ui_unity_launcher_entry_update(ui->sensors,
-                                      !cfg->unity_launcher_count_disabled,
-                                      cfg->temperature_unit == CELSIUS);
+       if (config_get_temperature_unit() == CELSIUS)
+               use_celsius = 1;
+       else
+               use_celsius = 0;
+       ui_unity_launcher_entry_update(ui->sensors);
 
        if (ui->graph_update_interval != cfg->graph_update_interval) {
                ui->graph_update_interval = cfg->graph_update_interval;
@@ -227,20 +230,37 @@ static void cb_alarm_raised(struct psensor *sensor, void *data)
 static void
 associate_cb_alarm_raised(struct psensor **sensors, struct ui_psensor *ui)
 {
-       struct psensor **sensor_cur = sensors;
+       bool ret;
+       struct psensor *s;
+       double d, high_temp;
 
-       while (*sensor_cur) {
-               struct psensor *s = *sensor_cur;
+       high_temp = config_get_default_high_threshold_temperature();
+
+       while (*sensors) {
+               s = *sensors;
 
                s->cb_alarm_raised = cb_alarm_raised;
                s->cb_alarm_raised_data = ui;
 
-               s->alarm_high_threshold
-                       = config_get_sensor_alarm_high_threshold(s->id);
-               s->alarm_low_threshold
-                       = config_get_sensor_alarm_low_threshold(s->id);
+               ret = config_get_sensor_alarm_high_threshold
+                       (s->id, &s->alarm_high_threshold);
 
-               sensor_cur++;
+               if (!ret) {
+                       if (s->max == UNKNOWN_DBL_VALUE) {
+                               if (s->type & SENSOR_TYPE_TEMP)
+                                       s->alarm_high_threshold = high_temp;
+                       } else {
+                               s->alarm_high_threshold = s->max;
+                       }
+               }
+
+               ret = config_get_sensor_alarm_low_threshold
+                       (s->id, &s->alarm_low_threshold);
+
+               if (!ret && s->min != UNKNOWN_DBL_VALUE)
+                       s->alarm_low_threshold = s->min;
+
+               sensors++;
        }
 }
 
@@ -516,6 +536,7 @@ int main(int argc, char **argv)
        g_timeout_add(1000 * ui.graph_update_interval, ui_refresh_thread, &ui);
 
        ui_appindicator_init(&ui);
+       ui_unity_init();
 
        gdk_notify_startup_complete();