From a57708401519afe0a8dce1a9704db1af1cc8f10d Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Sun, 8 Apr 2012 15:57:48 +0000 Subject: [PATCH] fahrenheit support for application indicator --- src/lib/psensor.c | 12 ++++++++---- src/lib/psensor.h | 4 +++- src/ui_appindicator.c | 32 +++++++++++++++++++++++--------- 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/lib/psensor.c b/src/lib/psensor.c index 138b19f..79095b9 100644 --- a/src/lib/psensor.c +++ b/src/lib/psensor.c @@ -198,7 +198,7 @@ int is_fan_type(unsigned int type) return type & SENSOR_TYPE_FAN; } -static double celcius_to_fahrenheit(double c) +double celcius_to_fahrenheit(double c) { return c * (9.0/5.0) + 32; } @@ -449,10 +449,14 @@ const char *psensor_type_to_str(unsigned int type) } -const char *psensor_type_to_unit_str(unsigned int type) +const char *psensor_type_to_unit_str(unsigned int type, int use_celcius) { - if (type & SENSOR_TYPE_TEMP) - return _("C"); + if (type & SENSOR_TYPE_TEMP) { + if (use_celcius) + return _("C"); + else + return _("F"); + } if (type & SENSOR_TYPE_FAN) return _("RPM"); diff --git a/src/lib/psensor.h b/src/lib/psensor.h index 27dacac..cd44106 100644 --- a/src/lib/psensor.h +++ b/src/lib/psensor.h @@ -178,7 +178,7 @@ struct measure *psensor_get_current_measure(struct psensor *sensor); */ const char *psensor_type_to_str(unsigned int type); -const char *psensor_type_to_unit_str(unsigned int type); +const char *psensor_type_to_unit_str(unsigned int type, int use_celcius); void psensor_list_update_measures(struct psensor **sensors); @@ -188,4 +188,6 @@ void psensor_cleanup(); double get_max_value(struct psensor **sensors, int type); +double celcius_to_fahrenheit(double c); + #endif diff --git a/src/ui_appindicator.c b/src/ui_appindicator.c index 82553dd..77a2991 100644 --- a/src/ui_appindicator.c +++ b/src/ui_appindicator.c @@ -23,6 +23,7 @@ #include #include +#include "cfg.h" #include "psensor.h" #include "ui.h" #include "ui_appindicator.h" @@ -128,27 +129,38 @@ static GtkActionEntry entries[] = { }; static guint n_entries = G_N_ELEMENTS(entries); -static void update_sensor_menu_item(GtkMenuItem *item, struct psensor *s) +static void update_sensor_menu_item(GtkMenuItem *item, + struct psensor *s, + int use_celcius) { gchar *str; + double v; + + v = psensor_get_current_value(s); + + if (!use_celcius) + v = celcius_to_fahrenheit(v); str = g_strdup_printf("%s: %2.f %s", s->name, - psensor_get_current_value(s), - psensor_type_to_unit_str(s->type)); + v, + psensor_type_to_unit_str(s->type, use_celcius)); gtk_menu_item_set_label(item, str); g_free(str); } -static void update_sensor_menu_items(struct psensor **sensors) +static void update_sensor_menu_items(struct psensor **sensors, + int use_celcius) { int n, i; n = psensor_list_size(sensors); for (i = 0; i < n; i++) - update_sensor_menu_item(sensor_menu_items[i], sensors[i]); + update_sensor_menu_item(sensor_menu_items[i], + sensors[i], + use_celcius); } static GtkWidget *get_menu(struct ui_psensor *ui) @@ -161,7 +173,6 @@ static GtkWidget *get_menu(struct ui_psensor *ui) int n = psensor_list_size(ui->sensors); struct psensor **sensors = ui->sensors; - action_group = gtk_action_group_new("PsensorActions"); gtk_action_group_set_translation_domain(action_group, PACKAGE); menu_manager = gtk_ui_manager_new(); @@ -188,8 +199,10 @@ static GtkWidget *get_menu(struct ui_psensor *ui) GTK_WIDGET(sensor_menu_items[i]), i+2); - update_sensor_menu_item(sensor_menu_items[i], - s); + update_sensor_menu_item + (sensor_menu_items[i], + s, + ui->config->temperature_unit == CELCIUS); } @@ -213,7 +226,8 @@ void ui_appindicator_update(struct ui_psensor *ui, unsigned int attention) app_indicator_set_status (indicator, APP_INDICATOR_STATUS_ATTENTION); - update_sensor_menu_items(ui->sensors); + update_sensor_menu_items(ui->sensors, + ui->config->temperature_unit == CELCIUS); } static GtkStatusIcon *unity_fallback(AppIndicator *indicator) -- 2.7.4