Tizen 2.1 release
[platform/core/uifw/e17.git] / src / modules / temperature / e_mod_tempget.c
1 #include "e.h"
2 #include "e_mod_main.h"
3
4 Eina_Bool
5 _temperature_cb_exe_data(void *data, __UNUSED__ int type, void *event)
6 {
7    Ecore_Exe_Event_Data *ev;
8    Config_Face *inst;
9    int temp;
10
11    ev = event;
12    inst = data;
13    if (ev->exe != inst->tempget_exe) return ECORE_CALLBACK_PASS_ON;
14    temp = -999;
15    if ((ev->lines) && (ev->lines[0].line))
16      {
17         int i;
18
19         for (i = 0; ev->lines[i].line; i++)
20           {
21              if (!strcmp(ev->lines[i].line, "ERROR"))
22                temp = -999;
23              else
24                temp = atoi(ev->lines[i].line);
25           }
26      }
27    if (temp != -999)
28      {
29         char buf[256];
30
31         if (inst->units == FAHRENHEIT)
32           temp = (temp * 9.0 / 5.0) + 32;
33
34         if (!inst->have_temp)
35           {
36              /* enable therm object */
37              edje_object_signal_emit(inst->o_temp, "e,state,known", "");
38              inst->have_temp = 1;
39           }
40
41         if (inst->units == FAHRENHEIT) 
42           snprintf(buf, sizeof(buf), "%i°F", temp);
43         else
44           snprintf(buf, sizeof(buf), "%i°C", temp);  
45
46         _temperature_face_level_set(inst,
47                (double)(temp - inst->low) /
48                (double)(inst->high - inst->low));
49         edje_object_part_text_set(inst->o_temp, "e.text.reading", buf);
50      }
51    else
52      {
53         if (inst->have_temp)
54           {
55              /* disable therm object */
56              edje_object_signal_emit(inst->o_temp, "e,state,unknown", "");
57              edje_object_part_text_set(inst->o_temp, "e.text.reading", "N/A");
58              _temperature_face_level_set(inst, 0.5);
59              inst->have_temp = 0;
60           }
61      }
62    return ECORE_CALLBACK_DONE;
63 }
64
65 Eina_Bool
66 _temperature_cb_exe_del(void *data, __UNUSED__ int type, void *event)
67 {
68    Ecore_Exe_Event_Del *ev;
69    Config_Face *inst;
70
71    ev = event;
72    inst = data;
73    if (ev->exe != inst->tempget_exe) return ECORE_CALLBACK_PASS_ON;
74    inst->tempget_exe = NULL;
75    return ECORE_CALLBACK_DONE;
76 }