Add EAPI functions eweather_data_format_prefix_count_get and
eweather_data_format_prefix_count_set that can be used for getting and
setting decimal count that is used for formatting the temperature values
to screen. Change also the temperature values handle functions to use
double instead of int.
>From 73d858286a6f2b44bcbed8ad7d46cd4218dbf9a7 Mon Sep 17 00:00:00 2001
From: Mika Laitio <[email protected]>
Date: Sat, 12 Mar 2011 23:05:01 +0200
Subject: [PATCH 2/3] add support for decimals when displaying temperatures
Add EAPI functions eweather_data_format_prefix_count_get and
eweather_data_format_prefix_count_set that can be used for getting and
setting decimal count that is used for formatting the temperature values
to screen. Change also the temperature values handle functions to use
double instead of int.
Signed-off-by: Mika Laitio <[email protected]>
---
src/bin/eweather_test.c | 1 +
src/lib/EWeather.h | 10 ++++++----
src/lib/EWeather_Plugins.h | 7 ++++---
src/lib/eweather.c | 19 ++++++++++++++-----
src/lib/eweather_smart.c | 20 ++++++++++++++------
5 files changed, 39 insertions(+), 18 deletions(-)
diff --git a/src/bin/eweather_test.c b/src/bin/eweather_test.c
index 169f6d3..ac9be6f 100644
--- a/src/bin/eweather_test.c
+++ b/src/bin/eweather_test.c
@@ -96,6 +96,7 @@ int main(int argc, char **argv)
break;
}
}
+ eweather_data_format_prefix_count_set(eweather, 0);
evas_object_focus_set(ow, EINA_TRUE);
evas_object_event_callback_add(ow, EVAS_CALLBACK_KEY_UP,
diff --git a/src/lib/EWeather.h b/src/lib/EWeather.h
index d4d4681..5a5adc9 100644
--- a/src/lib/EWeather.h
+++ b/src/lib/EWeather.h
@@ -63,22 +63,24 @@ EAPI void eweather_code_set(EWeather
*eweather, const char *code);
EAPI EWeather_Temp eweather_temp_type_get(EWeather *eweather);
EAPI void eweather_temp_type_set(EWeather *eweather,
EWeather_Temp type);
EAPI void eweather_code_set(EWeather *eweather, const char *code);
+EAPI int eweather_data_format_prefix_count_get(EWeather
*eweather);
+EAPI void eweather_data_format_prefix_count_set(EWeather
*eweather, int prefix_count);
EAPI EWeather_Data * eweather_data_current_get(EWeather *eweather);
EAPI EWeather_Data * eweather_data_get(EWeather *eweather, int num);
EAPI unsigned int eweather_data_count(EWeather *eweather);
EAPI EWeather_Type eweather_data_type_get(EWeather_Data *eweather_data);
-EAPI int eweather_data_temp_get(EWeather_Data *eweather_data);
-EAPI int eweather_data_temp_min_get(EWeather_Data
*eweather_data);
-EAPI int eweather_data_temp_max_get(EWeather_Data
*eweather_data);
+EAPI double eweather_data_temp_get(EWeather_Data *eweather_data);
+EAPI double eweather_data_temp_min_get(EWeather_Data *eweather_data);
+EAPI double eweather_data_temp_max_get(EWeather_Data *eweather_data);
EAPI const char * eweather_data_city_get(EWeather_Data *eweather_data);
EAPI const char * eweather_data_region_get(EWeather_Data *eweather_data);
EAPI const char * eweather_data_country_get(EWeather_Data *eweather_data);
EAPI const char * eweather_data_date_get(EWeather_Data *eweather_data);
EAPI void eweather_callbacks_set(EWeather *eweather, Update_Cb
update_cb, void *data);
-EAPI int eweather_utils_celcius_get(int farenheit);
+EAPI double eweather_utils_celcius_get(double farenheit);
#ifdef __cplusplus
}
diff --git a/src/lib/EWeather_Plugins.h b/src/lib/EWeather_Plugins.h
index 14f016a..64367d3 100644
--- a/src/lib/EWeather_Plugins.h
+++ b/src/lib/EWeather_Plugins.h
@@ -20,9 +20,9 @@ typedef void (*Plugin_Code_Updated) (EWeather *eweather);
struct EWeather_Data
{
EWeather_Type type;
- int temp;
- int temp_min;
- int temp_max;
+ double temp;
+ double temp_min;
+ double temp_max;
char city[256];
char region[256];
char country[256];
@@ -54,6 +54,7 @@ struct EWeather
int poll_time;
EWeather_Temp temp_type;
const char *code;
+ int data_format_prefix_count;
Eina_List *data;
};
diff --git a/src/lib/eweather.c b/src/lib/eweather.c
index e4eb0ec..d694456 100644
--- a/src/lib/eweather.c
+++ b/src/lib/eweather.c
@@ -71,6 +71,16 @@ void eweather_code_set(EWeather *eweather, const char *code)
eweather->plugin.plugin->code_updated(eweather);
}
+int eweather_data_format_prefix_count_get(EWeather *eweather)
+{
+ return eweather->data_format_prefix_count;
+}
+
+void eweather_data_format_prefix_count_set(EWeather *eweather, int
prefix_count)
+{
+ eweather->data_format_prefix_count = prefix_count;
+}
+
void eweather_temp_type_set(EWeather *eweather, EWeather_Temp type)
{
eweather->temp_type = type;
@@ -86,18 +96,17 @@ EWeather_Type eweather_data_type_get(EWeather_Data
*eweather_data)
return eweather_data->type;
}
-int eweather_data_temp_get(EWeather_Data *eweather_data)
+double eweather_data_temp_get(EWeather_Data *eweather_data)
{
return eweather_data->temp;
}
-int eweather_data_temp_min_get(EWeather_Data *eweather_data)
+double eweather_data_temp_min_get(EWeather_Data *eweather_data)
{
return eweather_data->temp_min;
}
-
-int eweather_data_temp_max_get(EWeather_Data *eweather_data)
+double eweather_data_temp_max_get(EWeather_Data *eweather_data)
{
return eweather_data->temp_max;
}
@@ -151,7 +160,7 @@ void eweather_callbacks_set(EWeather *eweather, Update_Cb
update_cb, void *data)
eweather->func.update_cb = update_cb;
}
-int eweather_utils_celcius_get(int farenheit)
+double eweather_utils_celcius_get(double farenheit)
{
return (farenheit - 32.) * 5./9.;
}
diff --git a/src/lib/eweather_smart.c b/src/lib/eweather_smart.c
index 3c072ce..6f4a1bc 100644
--- a/src/lib/eweather_smart.c
+++ b/src/lib/eweather_smart.c
@@ -289,6 +289,8 @@ static void _eweather_update_cb(void *data, EWeather
*eweather)
char buf[1024];
Evas_Object *o_day;
int i = 0;
+ int pref_cnt;
+ const char temp_format[15];
sd = evas_object_smart_data_get(obj);
if (!sd) return;
@@ -326,25 +328,31 @@ static void _eweather_update_cb(void *data, EWeather
*eweather)
signal =
eweather_object_signal_type_get(eweather_data_type_get(e_data));
edje_object_signal_emit(o_day, signal, "");
+
+ pref_cnt = eweather_data_format_prefix_count_get(eweather);
+ if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
+ snprintf(temp_format, sizeof(temp_format), "%%.%df°F",
pref_cnt);
+ else
+ snprintf(temp_format, sizeof(temp_format), "%%.%df°C",
pref_cnt);
if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
- snprintf(buf, sizeof(buf), "%d°F", eweather_data_temp_get(e_data));
+ snprintf(buf, sizeof(buf), temp_format,
eweather_data_temp_get(e_data));
else
- snprintf(buf, sizeof(buf), "%d°C",
eweather_utils_celcius_get(eweather_data_temp_get(e_data)));
+ snprintf(buf, sizeof(buf), temp_format,
eweather_utils_celcius_get(eweather_data_temp_get(e_data)));
edje_object_part_text_set(o_day, "text.temp", buf);
if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
- snprintf(buf, sizeof(buf), "%d°F",
eweather_data_temp_min_get(e_data));
+ snprintf(buf, sizeof(buf), temp_format,
eweather_data_temp_min_get(e_data));
else
- snprintf(buf, sizeof(buf), "%d°C",
eweather_utils_celcius_get(eweather_data_temp_min_get(e_data)));
+ snprintf(buf, sizeof(buf), temp_format,
eweather_utils_celcius_get(eweather_data_temp_min_get(e_data)));
edje_object_part_text_set(o_day, "text.temp_min", buf);
if(eweather_temp_type_get(eweather) == EWEATHER_TEMP_FARENHEIT)
- snprintf(buf, sizeof(buf), "%d°F",
eweather_data_temp_max_get(e_data));
+ snprintf(buf, sizeof(buf), temp_format,
eweather_data_temp_max_get(e_data));
else
- snprintf(buf, sizeof(buf), "%d°C",
eweather_utils_celcius_get(eweather_data_temp_max_get(e_data)));
+ snprintf(buf, sizeof(buf), temp_format,
eweather_utils_celcius_get(eweather_data_temp_max_get(e_data)));
edje_object_part_text_set(o_day, "text.temp_max", buf);
--
1.7.1
------------------------------------------------------------------------------
Colocation vs. Managed Hosting
A question and answer guide to determining the best fit
for your organization - today and in the future.
http://p.sf.net/sfu/internap-sfd2d
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel