1 #include "cpumonitor.h"
2 
3 static void
_config_close(void * data,Evas * e EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)4 _config_close(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
5 {
6    Instance *inst = data;
7 
8    E_FREE_FUNC(inst->cfg->cpumonitor.configure, evas_object_del);
9    e_config_save_queue();
10 }
11 
12 static void
_config_changed(void * data,Evas_Object * obj,void * event_info EINA_UNUSED)13 _config_changed(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
14 {
15    Instance *inst = data;
16    int value = elm_radio_value_get(obj);
17 
18    switch (value)
19      {
20       case 0:
21         inst->cfg->cpumonitor.poll_interval = 4;
22         break;
23 
24       case 1:
25         inst->cfg->cpumonitor.poll_interval = 8;
26         break;
27 
28       case 2:
29         inst->cfg->cpumonitor.poll_interval = 32;
30         break;
31 
32       case 3:
33         inst->cfg->cpumonitor.poll_interval = 64;
34         break;
35 
36       case 4:
37         inst->cfg->cpumonitor.poll_interval = 256;
38         break;
39 
40       default:
41         inst->cfg->cpumonitor.poll_interval = 32;
42      }
43    e_config_save_queue();
44    _cpumonitor_config_updated(inst);
45 }
46 
47 Evas_Object *
cpumonitor_configure(Instance * inst)48 cpumonitor_configure(Instance *inst)
49 {
50    Evas_Object *popup, *frame, *box, *o, *group, *lbl;
51    E_Zone *zone = e_zone_current_get();
52 
53    popup = elm_popup_add(e_comp->elm);
54    E_EXPAND(popup);
55    elm_popup_allow_events_set(popup, 1);
56    elm_popup_scrollable_set(popup, 1);
57 
58    box = elm_box_add(popup);
59    elm_box_horizontal_set(box, EINA_FALSE);
60    E_EXPAND(box);
61    E_FILL(box);
62    evas_object_show(box);
63    elm_object_content_set(popup, box);
64 
65    lbl = elm_label_add(box);
66    evas_object_size_hint_weight_set(lbl, EVAS_HINT_EXPAND, 0.0);
67    evas_object_size_hint_align_set(lbl, EVAS_HINT_FILL, EVAS_HINT_FILL);
68    elm_object_style_set(lbl, "marker");
69    elm_object_text_set(lbl, _("CpuMonitor Configuration"));
70    elm_box_pack_end(box, lbl);
71    evas_object_show(lbl);
72 
73    frame = elm_frame_add(box);
74    elm_object_text_set(frame, _("Update Poll Interval"));
75    E_EXPAND(frame);
76    E_FILL(frame);
77    elm_box_pack_end(box, frame);
78    evas_object_show(frame);
79 
80    box = elm_box_add(popup);
81    elm_box_horizontal_set(box, EINA_FALSE);
82    E_EXPAND(box);
83    evas_object_show(box);
84 
85    o = elm_radio_add(box);
86    elm_radio_state_value_set(o, 0);
87    E_EXPAND(o);
88    E_ALIGN(o, 0, 0);
89    elm_object_text_set(o, _("Fast (4 ticks)"));
90    elm_box_pack_end(box, o);
91    evas_object_smart_callback_add(o, "changed", _config_changed, inst);
92    evas_object_show(o);
93    group = o;
94 
95    o = elm_radio_add(box);
96    elm_radio_state_value_set(o, 1);
97    elm_radio_group_add(o, group);
98    E_EXPAND(o);
99    E_ALIGN(o, 0, 0);
100    elm_object_text_set(o, _("Medium (8 ticks)"));
101    elm_box_pack_end(box, o);
102    evas_object_smart_callback_add(o, "changed", _config_changed, inst);
103    evas_object_show(o);
104 
105    o = elm_radio_add(box);
106    elm_radio_state_value_set(o, 2);
107    elm_radio_group_add(o, group);
108    E_EXPAND(o);
109    E_ALIGN(o, 0, 0);
110    elm_object_text_set(o, _("Normal (32 ticks)"));
111    elm_box_pack_end(box, o);
112    evas_object_smart_callback_add(o, "changed", _config_changed, inst);
113    evas_object_show(o);
114 
115    o = elm_radio_add(box);
116    elm_radio_state_value_set(o, 3);
117    elm_radio_group_add(o, group);
118    E_ALIGN(o, 0, 0);
119    elm_object_text_set(o, _("Slow (64 ticks)"));
120    elm_box_pack_end(box, o);
121    evas_object_smart_callback_add(o, "changed", _config_changed, inst);
122    evas_object_show(o);
123 
124    o = elm_radio_add(box);
125    elm_radio_state_value_set(o, 4);
126    elm_radio_group_add(o, group);
127    E_EXPAND(o);
128    E_ALIGN(o, 0, 0);
129    elm_object_text_set(o, _("Very Slow (256 ticks)"));
130    elm_box_pack_end(box, o);
131    evas_object_smart_callback_add(o, "changed", _config_changed, inst);
132    evas_object_show(o);
133 
134    switch (inst->cfg->cpumonitor.poll_interval)
135      {
136       case 4:
137         elm_radio_value_set(group, 0);
138         break;
139 
140       case 8:
141         elm_radio_value_set(group, 1);
142         break;
143 
144       case 32:
145         elm_radio_value_set(group, 2);
146         break;
147 
148       case 64:
149         elm_radio_value_set(group, 3);
150         break;
151 
152       case 256:
153         elm_radio_value_set(group, 4);
154         break;
155 
156       default:
157         elm_radio_value_set(group, 2);
158      }
159 
160    elm_object_content_set(frame, box);
161    popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
162    evas_object_layer_set(popup, E_LAYER_POPUP);
163    evas_object_resize(popup, zone->w / 4, zone->h / 3);
164    e_comp_object_util_center_on_zone(popup, zone);
165    evas_object_show(popup);
166    e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
167    evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, inst);
168 
169    return inst->cfg->cpumonitor.configure = popup;
170 }
171 
172