avoid to computer the max temperature if the launcher counter is not enabled.
[psensor.git] / src / ui_unity.c
index 9e74002..2b949c8 100644 (file)
@@ -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
  */
 #include <unity.h>
 
-#include "psensor.h"
+#include <cfg.h>
+#include <temperature.h>
+#include <ui_unity.h>
 
 static int initialized;
 static UnityLauncherEntry *psensor_entry;
 static unsigned int last_visible = -1;
 
+static double get_max_current_value(struct psensor **sensors, unsigned int type)
+{
+       double m, v;
+       struct psensor *s;
+
+       m = UNKNOWN_DBL_VALUE;
+       while (*sensors) {
+               s = *sensors;
+
+               if ((s->type & type) && config_is_sensor_graph_enabled(s->id)) {
+                       v = psensor_get_current_value(s);
+
+                       if (m == UNKNOWN_DBL_VALUE || v > m)
+                               m = v;
+               }
+
+               sensors++;
+       }
+
+       return m;
+}
+
 void ui_unity_launcher_entry_update(struct psensor **sensors,
-                                   unsigned int show)
+                                   unsigned int show,
+                                   int use_celsius)
 {
+       double v;
+
        if (!initialized) {
                psensor_entry = unity_launcher_entry_get_for_desktop_file
-                       ("psensor.desktop");
+                       (PSENSOR_DESKTOP_FILE);
 
                unity_launcher_entry_set_count(psensor_entry, 0);
                initialized = 1;
@@ -45,11 +72,14 @@ void ui_unity_launcher_entry_update(struct psensor **sensors,
                last_visible = show;
        }
 
-       if (sensors && *sensors) {
-               double v;
+       if (show && sensors && *sensors) {
+               v = get_max_current_value(sensors, SENSOR_TYPE_TEMP);
 
-               v = psensor_get_max_current_value(sensors, SENSOR_TYPE_TEMP);
+               if (v != UNKNOWN_DBL_VALUE) {
+                       if (!use_celsius)
+                               v = celsius_to_fahrenheit(v);
 
-               unity_launcher_entry_set_count(psensor_entry, v);
+                       unity_launcher_entry_set_count(psensor_entry, v);
+               }
        }
 }