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