1 #include "pager.h"
2
3 #define BUTTON_DRAG 0
4 #define BUTTON_NOPLACE 1
5 #define BUTTON_DESK 2
6
7 typedef struct _Config_Objects Config_Objects;
8 struct _Config_Objects
9 {
10 Evas_Object *general_page;
11 Evas_Object *popup_page;
12 Evas_Object *urgent_page;
13 Evas_Object *style_page;
14 Evas_Object *o_popup;
15 Evas_Object *o_popup_speed;
16 Evas_Object *o_popup_urgent;
17 Evas_Object *o_popup_urgent_stick;
18 Evas_Object *o_popup_urgent_focus;
19 Evas_Object *o_popup_urgent_speed;
20 Evas_Object *o_show_desk_names;
21 Evas_Object *o_popup_act_height;
22 Evas_Object *o_popup_height;
23 Evas_Object *o_btn_drag;
24 Evas_Object *o_btn_noplace;
25 Evas_Object *o_btn_desk;
26 Evas_Object *o_btn_virtual;
27 Evas_Object *o_flip_desk;
28 Evas_Object *o_permanent;
29 Evas_Object *o_plain;
30 E_Grab_Dialog *grab_dia;
31 int grab_btn;
32 int w, h;
33 };
34 Config_Objects *pager_gadget_config_objects = NULL;
35
36 static void
_config_close(void * data EINA_UNUSED,Evas * e EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)37 _config_close(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
38 {
39 cfg_dialog = NULL;
40 E_FREE(pager_gadget_config_objects);
41 }
42
43 static void
_config_show_general(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)44 _config_show_general(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
45 {
46 evas_object_hide(pager_gadget_config_objects->popup_page);
47 evas_object_hide(pager_gadget_config_objects->urgent_page);
48 evas_object_hide(pager_gadget_config_objects->style_page);
49 evas_object_show(pager_gadget_config_objects->general_page);
50 }
51
52 static void
_config_show_popup(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)53 _config_show_popup(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
54 {
55 evas_object_hide(pager_gadget_config_objects->general_page);
56 evas_object_hide(pager_gadget_config_objects->urgent_page);
57 evas_object_hide(pager_gadget_config_objects->style_page);
58 evas_object_show(pager_gadget_config_objects->popup_page);
59 }
60
61 static void
_config_show_urgent(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)62 _config_show_urgent(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
63 {
64 evas_object_hide(pager_gadget_config_objects->general_page);
65 evas_object_hide(pager_gadget_config_objects->popup_page);
66 evas_object_hide(pager_gadget_config_objects->style_page);
67 evas_object_show(pager_gadget_config_objects->urgent_page);
68 }
69
70 static void
_config_show_style(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)71 _config_show_style(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
72 {
73 evas_object_hide(pager_gadget_config_objects->general_page);
74 evas_object_hide(pager_gadget_config_objects->popup_page);
75 evas_object_hide(pager_gadget_config_objects->urgent_page);
76 evas_object_show(pager_gadget_config_objects->style_page);
77 }
78
79 static void
_config_value_changed(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_data EINA_UNUSED)80 _config_value_changed(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_data EINA_UNUSED)
81 {
82 Eina_Bool val, changed = EINA_FALSE;
83 pager_config->popup =
84 elm_check_state_get(pager_gadget_config_objects->o_popup);
85 pager_config->popup_speed =
86 elm_slider_value_get(pager_gadget_config_objects->o_popup_speed);
87 pager_config->flip_desk =
88 elm_check_state_get(pager_gadget_config_objects->o_flip_desk);
89 pager_config->popup_urgent =
90 elm_check_state_get(pager_gadget_config_objects->o_popup_urgent);
91 pager_config->popup_urgent_stick =
92 elm_check_state_get(pager_gadget_config_objects->o_popup_urgent_stick);
93 pager_config->popup_urgent_focus =
94 elm_check_state_get(pager_gadget_config_objects->o_popup_urgent_focus);
95 pager_config->popup_urgent_speed =
96 elm_slider_value_get(pager_gadget_config_objects->o_popup_urgent_speed);
97 pager_config->show_desk_names =
98 elm_check_state_get(pager_gadget_config_objects->o_show_desk_names);
99 pager_config->popup_height =
100 elm_slider_value_get(pager_gadget_config_objects->o_popup_height);
101 pager_config->popup_act_height =
102 elm_slider_value_get(pager_gadget_config_objects->o_popup_act_height);
103 val = elm_check_state_get(pager_gadget_config_objects->o_permanent);
104 if (val != pager_config->permanent_plain)
105 changed = EINA_TRUE;
106 pager_config->permanent_plain = val;
107 val = elm_check_state_get(pager_gadget_config_objects->o_plain);
108 if (val != pager_config->plain)
109 changed = EINA_TRUE;
110 pager_config->plain = val;
111 _pager_cb_config_gadget_updated(changed);
112 _pager_cb_config_updated();
113 e_config_save_queue();
114
115 elm_object_disabled_set(pager_gadget_config_objects->o_popup_speed,
116 !pager_config->popup);
117 elm_object_disabled_set(pager_gadget_config_objects->o_popup_act_height,
118 !pager_config->popup);
119 elm_object_disabled_set(pager_gadget_config_objects->o_popup_height,
120 !pager_config->popup);
121 elm_object_disabled_set(pager_gadget_config_objects->o_popup_urgent_stick,
122 !pager_config->popup_urgent);
123 elm_object_disabled_set(pager_gadget_config_objects->o_popup_urgent_focus,
124 !pager_config->popup_urgent);
125 elm_object_disabled_set(pager_gadget_config_objects->o_popup_urgent_speed,
126 !pager_config->popup_urgent);
127 }
128
129 static void
_config_update_btn(Evas_Object * button,const int mouse_button)130 _config_update_btn(Evas_Object *button, const int mouse_button)
131 {
132 char lbl[256];
133 char *icon = NULL;
134 Evas_Object *ic = NULL;
135
136 switch (mouse_button)
137 {
138 case 0:
139 snprintf(lbl, sizeof(lbl), _("Click to set"));
140 break;
141
142 case 1:
143 if (e_config->mouse_hand == E_MOUSE_HAND_RIGHT)
144 {
145 snprintf(lbl, sizeof(lbl), _("Left button"));
146 icon = "preferences-desktop-mouse-left";
147 }
148 else if (e_config->mouse_hand == E_MOUSE_HAND_LEFT)
149 {
150 snprintf(lbl, sizeof(lbl), _("Right button"));
151 icon = "preferences-desktop-mouse-right";
152 }
153 else
154 {
155 snprintf(lbl, sizeof(lbl), _("Button %i"), mouse_button);
156 icon = "preferences-desktop-mouse-extra";
157 }
158 break;
159
160 case 2:
161 snprintf(lbl, sizeof(lbl), _("Middle button"));
162 icon = "preferences-desktop-mouse-middle";
163 break;
164
165 case 3:
166 if (e_config->mouse_hand == E_MOUSE_HAND_RIGHT)
167 {
168 snprintf(lbl, sizeof(lbl), _("Right button"));
169 icon = "preferences-desktop-mouse-right";
170 }
171 else if (e_config->mouse_hand == E_MOUSE_HAND_LEFT)
172 {
173 snprintf(lbl, sizeof(lbl), _("Left button"));
174 icon = "preferences-desktop-mouse-left";
175 }
176 else
177 {
178 snprintf(lbl, sizeof(lbl), _("Button %i"), mouse_button);
179 icon = "preferences-desktop-mouse-extra";
180 }
181 break;
182
183 default:
184 snprintf(lbl, sizeof(lbl), _("Button %i"), mouse_button);
185 icon = "preferences-desktop-mouse-extra";
186 break;
187 }
188 elm_object_text_set(button, lbl);
189 if (icon)
190 {
191 ic = elm_icon_add(button);
192 elm_icon_standard_set(ic, icon);
193 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_BOTH, 1, 1);
194 }
195 elm_object_part_content_set(button, "icon", ic);
196 }
197
198 static void
_config_update_btns(void)199 _config_update_btns(void)
200 {
201 #if 0
202 _config_update_btn(pager_gadget_config_objects->o_btn_drag, pager_config->btn_drag);
203 #endif
204
205 _config_update_btn(pager_gadget_config_objects->o_btn_noplace, pager_config->btn_noplace);
206 _config_update_btn(pager_gadget_config_objects->o_btn_desk, pager_config->btn_desk);
207 }
208
209 static void
_config_grab_window_del(void * data EINA_UNUSED)210 _config_grab_window_del(void *data EINA_UNUSED)
211 {
212 evas_object_show(cfg_dialog);
213 _config_update_btns();
214 }
215
216 static Eina_Bool
_config_grab_cb_mouse_down(void * data EINA_UNUSED,int type EINA_UNUSED,void * event)217 _config_grab_cb_mouse_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
218 {
219 Ecore_Event_Mouse_Button *ev;
220
221 ev = event;
222
223 if (ev->buttons == 3)
224 {
225 e_util_dialog_show(_("Attention"),
226 _("You cannot use the right mouse button in the<ps/>"
227 "gadget for this as it is already taken by internal<ps/>"
228 "code for context menus.<ps/>"
229 "This button only works in the popup."));
230 }
231 else
232 {
233 if (ev->buttons == pager_config->btn_drag)
234 pager_config->btn_drag = 0;
235 else if (ev->buttons == pager_config->btn_noplace)
236 pager_config->btn_noplace = 0;
237 else if (ev->buttons == pager_config->btn_desk)
238 pager_config->btn_desk = 0;
239
240 if (pager_gadget_config_objects->grab_btn == 1)
241 pager_config->btn_drag = ev->buttons;
242 else if (pager_gadget_config_objects->grab_btn == 2)
243 pager_config->btn_noplace = ev->buttons;
244 else
245 pager_config->btn_desk = ev->buttons;
246 }
247
248 e_object_del(E_OBJECT(pager_gadget_config_objects->grab_dia));
249 return ECORE_CALLBACK_PASS_ON;
250 }
251
252 static Eina_Bool
_config_grab_cb_key_down(void * data EINA_UNUSED,int type EINA_UNUSED,void * event)253 _config_grab_cb_key_down(void *data EINA_UNUSED, int type EINA_UNUSED, void *event)
254 {
255 Ecore_Event_Key *ev;
256
257 ev = event;
258 if (!strcmp(ev->key, "Delete"))
259 {
260 if (pager_gadget_config_objects->grab_btn == 1)
261 pager_config->btn_drag = 0;
262 else if (pager_gadget_config_objects->grab_btn == 2)
263 pager_config->btn_noplace = 0;
264 else
265 pager_config->btn_desk = 0;
266 }
267 e_object_del(E_OBJECT(pager_gadget_config_objects->grab_dia));
268 return ECORE_CALLBACK_PASS_ON;
269 }
270
271 static void
_config_grab_window_show(void * data,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)272 _config_grab_window_show(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
273 {
274 evas_object_hide(cfg_dialog);
275 pager_gadget_config_objects->grab_btn = 0;
276 if ((long)data == BUTTON_DRAG)
277 pager_gadget_config_objects->grab_btn = 1;
278 else if ((long)data == BUTTON_NOPLACE)
279 pager_gadget_config_objects->grab_btn = 2;
280
281 pager_gadget_config_objects->grab_dia = e_grab_dialog_show(NULL, EINA_TRUE,
282 _config_grab_cb_key_down, _config_grab_cb_mouse_down, NULL, NULL);
283 e_object_del_attach_func_set(E_OBJECT(pager_gadget_config_objects->grab_dia), _config_grab_window_del);
284 }
285
286 static void
_config_virtual_desks_show(void * data EINA_UNUSED,Evas_Object * obj EINA_UNUSED,void * event_info EINA_UNUSED)287 _config_virtual_desks_show(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
288 {
289 evas_object_del(cfg_dialog);
290 e_configure_registry_call("screen/virtual_desktops", NULL, NULL);
291 }
292
293 static Evas_Object *
_config_create_pages(Evas_Object * parent)294 _config_create_pages(Evas_Object *parent)
295 {
296 Evas_Object *m, *tb, *ow, *fr;
297 int row = 5;
298
299 m = elm_table_add(parent);
300 E_EXPAND(m);
301 evas_object_show(m);
302
303 /* General Page */
304 fr = elm_frame_add(m);
305 elm_object_text_set(fr, _("General"));
306 E_EXPAND(fr);
307 E_FILL(fr);
308 evas_object_show(fr);
309
310 tb = elm_table_add(m);
311 E_EXPAND(tb);
312 elm_object_content_set(fr, tb);
313 evas_object_show(tb);
314
315 ow = elm_button_add(tb);
316 elm_object_text_set(ow, _("Configure virtual deskstops"));
317 evas_object_smart_callback_add(ow, "clicked",
318 _config_virtual_desks_show, NULL);
319 elm_table_pack(tb, ow, 0, 0, 1, 1);
320 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
321 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
322 evas_object_show(ow);
323 pager_gadget_config_objects->o_btn_virtual = ow;
324 row++;
325
326 ow = elm_check_add(tb);
327 elm_object_text_set(ow, _("Flip desktop on mouse wheel"));
328 evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
329 elm_check_state_set(ow, pager_config->flip_desk);
330 elm_table_pack(tb, ow, 0, 1, 1, 1);
331 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
332 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
333 evas_object_smart_callback_add(ow, "changed",
334 _config_value_changed, NULL);
335 evas_object_show(ow);
336 pager_gadget_config_objects->o_flip_desk = ow;
337
338 ow = elm_check_add(tb);
339 elm_object_text_set(ow, _("Always show desktop names"));
340 evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
341 elm_check_state_set(ow, pager_config->show_desk_names);
342 elm_table_pack(tb, ow, 0, 2, 1, 1);
343 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
344 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
345 evas_object_smart_callback_add(ow, "changed",
346 _config_value_changed, NULL);
347 evas_object_show(ow);
348 pager_gadget_config_objects->o_show_desk_names = ow;
349
350 #if 0
351 ow = elm_label_add(m);
352 elm_object_text_set(ow, _("Select and Slide button"));
353 elm_table_pack(tb, ow, 0, row, 1, 1);
354 E_ALIGN(ow, 0.0, 0.0);
355 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
356 evas_object_show(ow);
357 row++;
358
359 ow = elm_button_add(tb);
360 elm_object_text_set(ow, _("Click to set"));
361 evas_object_smart_callback_add(ow, "clicked",
362 _config_grab_window_show, (void *)BUTTON_DRAG);
363 elm_table_pack(tb, ow, 0, row, 1, 1);
364 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
365 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
366 evas_object_show(ow);
367 pager_gadget_config_objects->o_btn_drag = ow;
368 row++;
369 #endif
370
371 ow = elm_label_add(m);
372 elm_object_text_set(ow, _("Drag and Drop button"));
373 elm_table_pack(tb, ow, 0, row, 1, 1);
374 E_ALIGN(ow, 0.0, 0.0);
375 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
376 evas_object_show(ow);
377 row++;
378
379 ow = elm_button_add(tb);
380 elm_object_text_set(ow, _("Click to set"));
381 evas_object_smart_callback_add(ow, "clicked",
382 _config_grab_window_show, (void *)BUTTON_NOPLACE);
383 elm_table_pack(tb, ow, 0, row, 1, 1);
384 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
385 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
386 evas_object_show(ow);
387 pager_gadget_config_objects->o_btn_noplace = ow;
388 row++;
389
390 ow = elm_label_add(m);
391 elm_object_text_set(ow, _("Drag whole desktop"));
392 elm_table_pack(tb, ow, 0, row, 1, 1);
393 E_ALIGN(ow, 0.0, 0.0);
394 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
395 evas_object_show(ow);
396 row++;
397
398 ow = elm_button_add(tb);
399 elm_object_text_set(ow, _("Click to set"));
400 evas_object_smart_callback_add(ow, "clicked",
401 _config_grab_window_show, (void *)BUTTON_DESK);
402 elm_table_pack(tb, ow, 0, row, 1, 1);
403 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
404 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
405 evas_object_show(ow);
406 pager_gadget_config_objects->o_btn_desk = ow;
407
408 _config_update_btns();
409
410 elm_table_pack(m, fr, 0, 0, 1, 1);
411 pager_gadget_config_objects->general_page = fr;
412
413 /* Popup Page */
414 fr = elm_frame_add(m);
415 elm_object_text_set(fr, _("Popup"));
416 E_EXPAND(fr);
417 E_FILL(fr);
418 evas_object_show(fr);
419
420 tb = elm_table_add(fr);
421 E_EXPAND(tb);
422 elm_object_content_set(fr, tb);
423 evas_object_show(tb);
424
425 ow = elm_check_add(tb);
426 elm_object_text_set(ow, _("Show popup on desktop change"));
427 evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
428 elm_check_state_set(ow, pager_config->popup);
429 elm_table_pack(tb, ow, 0, 0, 1, 1);
430 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
431 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
432 evas_object_smart_callback_add(ow, "changed",
433 _config_value_changed, NULL);
434 evas_object_show(ow);
435 pager_gadget_config_objects->o_popup = ow;
436
437 ow = elm_label_add(m);
438 elm_object_text_set(ow, _("Popup pager height"));
439 elm_object_disabled_set(ow, !pager_config->popup);
440 elm_table_pack(tb, ow, 0, 1, 1, 1);
441 E_ALIGN(ow, 0.0, 0.0);
442 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
443 evas_object_show(ow);
444
445 ow = elm_slider_add(tb);
446 elm_object_disabled_set(ow, !pager_config->popup);
447 elm_slider_min_max_set(ow, 20, 200);
448 elm_slider_step_set(ow, 0.0555);
449 elm_slider_value_set(ow, pager_config->popup_height);
450 elm_slider_unit_format_set(ow, _("%.0f pixels"));
451 elm_slider_indicator_format_set(ow, _("%.0f"));
452 elm_table_pack(tb, ow, 0, 2, 1, 1);
453 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
454 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
455 evas_object_smart_callback_add(ow, "delay,changed",
456 _config_value_changed, NULL);
457 evas_object_show(ow);
458 pager_gadget_config_objects->o_popup_height = ow;
459
460 ow = elm_label_add(m);
461 elm_object_text_set(ow, _("Popup duration"));
462 elm_object_disabled_set(ow, !pager_config->popup);
463 elm_table_pack(tb, ow, 0, 3, 1, 1);
464 E_ALIGN(ow, 0.0, 0.0);
465 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
466 evas_object_show(ow);
467
468 ow = elm_slider_add(tb);
469 elm_object_disabled_set(ow, !pager_config->popup);
470 elm_slider_min_max_set(ow, 0.1, 10);
471 elm_slider_step_set(ow, 0.01);
472 elm_slider_value_set(ow, pager_config->popup_speed);
473 elm_slider_unit_format_set(ow, _("%1.1f seconds"));
474 elm_slider_indicator_format_set(ow, _("%.1f"));
475 elm_table_pack(tb, ow, 0, 4, 1, 1);
476 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
477 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
478 evas_object_smart_callback_add(ow, "delay,changed",
479 _config_value_changed, NULL);
480 evas_object_show(ow);
481 pager_gadget_config_objects->o_popup_speed = ow;
482
483 ow = elm_label_add(m);
484 elm_object_text_set(ow, _("Pager action popup height"));
485 elm_object_disabled_set(ow, !pager_config->popup);
486 elm_table_pack(tb, ow, 0, 5, 1, 1);
487 E_ALIGN(ow, 0.0, 0.0);
488 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
489 evas_object_show(ow);
490
491 ow = elm_slider_add(tb);
492 elm_object_disabled_set(ow, !pager_config->popup);
493 elm_slider_min_max_set(ow, 20, 200);
494 elm_slider_step_set(ow, 0.0555);
495 elm_slider_value_set(ow, pager_config->popup_act_height);
496 elm_slider_unit_format_set(ow, _("%.0f pixels"));
497 elm_slider_indicator_format_set(ow, _("%.0f"));
498 elm_table_pack(tb, ow, 0, 6, 1, 1);
499 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
500 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
501 evas_object_smart_callback_add(ow, "delay,changed",
502 _config_value_changed, NULL);
503 evas_object_show(ow);
504 pager_gadget_config_objects->o_popup_act_height = ow;
505
506 elm_table_pack(m, fr, 0, 0, 1, 1);
507 pager_gadget_config_objects->popup_page = fr;
508
509 /* Urgent Page */
510 fr = elm_frame_add(m);
511 elm_object_text_set(fr, _("Urgent"));
512 E_EXPAND(fr);
513 E_FILL(fr);
514 evas_object_show(fr);
515
516 tb = elm_table_add(fr);
517 E_EXPAND(tb);
518 elm_object_content_set(fr, tb);
519 evas_object_show(tb);
520
521 ow = elm_check_add(tb);
522 elm_object_text_set(ow, _("Show popup for urgent window"));
523 evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
524 elm_check_state_set(ow, pager_config->popup_urgent);
525 elm_table_pack(tb, ow, 0, 0, 1, 1);
526 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
527 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
528 evas_object_smart_callback_add(ow, "changed",
529 _config_value_changed, NULL);
530 evas_object_show(ow);
531 pager_gadget_config_objects->o_popup_urgent = ow;
532
533 ow = elm_check_add(tb);
534 elm_object_disabled_set(ow, !pager_config->popup_urgent);
535 elm_object_text_set(ow, _("Urgent popup sticks on screen"));
536 evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
537 elm_check_state_set(ow, pager_config->popup_urgent_stick);
538 elm_table_pack(tb, ow, 0, 1, 1, 1);
539 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
540 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
541 evas_object_smart_callback_add(ow, "changed",
542 _config_value_changed, NULL);
543 evas_object_show(ow);
544 pager_gadget_config_objects->o_popup_urgent_stick = ow;
545
546 ow = elm_check_add(tb);
547 elm_object_disabled_set(ow, !pager_config->popup_urgent);
548 elm_object_text_set(ow, _("Show popup for focused windows"));
549 evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
550 elm_check_state_set(ow, pager_config->popup_urgent_focus);
551 elm_table_pack(tb, ow, 0, 2, 1, 1);
552 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
553 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
554 evas_object_smart_callback_add(ow, "changed",
555 _config_value_changed, NULL);
556 evas_object_show(ow);
557 pager_gadget_config_objects->o_popup_urgent_focus = ow;
558
559 ow = elm_label_add(m);
560 elm_object_text_set(ow, _("Urgent Popup Duration"));
561 elm_object_disabled_set(ow, !pager_config->popup_urgent);
562 elm_table_pack(tb, ow, 0, 3, 1, 1);
563 E_ALIGN(ow, 0.0, 0.0);
564 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
565 evas_object_show(ow);
566
567 ow = elm_slider_add(tb);
568 elm_object_disabled_set(ow, !pager_config->popup_urgent);
569 elm_slider_min_max_set(ow, 0.1, 10);
570 elm_slider_step_set(ow, 0.01);
571 elm_slider_value_set(ow, pager_config->popup_urgent_speed);
572 elm_slider_unit_format_set(ow, _("%1.1f seconds"));
573 elm_slider_indicator_format_set(ow, _("%.1f"));
574 elm_table_pack(tb, ow, 0, 4, 1, 1);
575 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
576 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
577 evas_object_smart_callback_add(ow, "delay,changed",
578 _config_value_changed, NULL);
579 evas_object_show(ow);
580 pager_gadget_config_objects->o_popup_urgent_speed = ow;
581
582 elm_table_pack(m, fr, 0, 0, 1, 1);
583 pager_gadget_config_objects->urgent_page = fr;
584
585 /* Style Page */
586 fr = elm_frame_add(m);
587 elm_object_text_set(fr, _("Style"));
588 E_EXPAND(fr);
589 E_FILL(fr);
590 evas_object_show(fr);
591
592 tb = elm_table_add(m);
593 E_EXPAND(tb);
594 elm_object_content_set(fr, tb);
595 evas_object_show(tb);
596
597 ow = elm_check_add(tb);
598 elm_object_text_set(ow, _("Always Use Plain Style"));
599 evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
600 elm_check_state_set(ow, pager_config->permanent_plain);
601 elm_table_pack(tb, ow, 0, 0, 1, 1);
602 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
603 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
604 evas_object_smart_callback_add(ow, "changed",
605 _config_value_changed, NULL);
606 evas_object_show(ow);
607 pager_gadget_config_objects->o_permanent = ow;
608
609 ow = elm_check_add(tb);
610 elm_object_text_set(ow, _("Switch to Plain Style When Saving Power"));
611 evas_object_size_hint_align_set(ow, 0.0, EVAS_HINT_FILL);
612 elm_check_state_set(ow, pager_config->plain);
613 elm_table_pack(tb, ow, 0, 1, 1, 1);
614 E_ALIGN(ow, EVAS_HINT_FILL, EVAS_HINT_FILL);
615 E_WEIGHT(ow, EVAS_HINT_EXPAND, 0);
616 evas_object_smart_callback_add(ow, "changed",
617 _config_value_changed, NULL);
618 evas_object_show(ow);
619 pager_gadget_config_objects->o_plain = ow;
620
621 elm_table_pack(m, fr, 0, 0, 1, 1);
622 pager_gadget_config_objects->style_page = fr;
623
624 return m;
625 }
626
627 EINTERN Evas_Object *
config_pager(E_Zone * zone)628 config_pager(E_Zone *zone)
629 {
630 Evas_Object *popup, *tb, *lbl, *list;
631 Elm_Object_Item *it;
632
633 pager_gadget_config_objects = E_NEW(Config_Objects, 1);
634 pager_gadget_config_objects->w = 0;
635 pager_gadget_config_objects->h = 0;
636
637 popup = elm_popup_add(e_comp->elm);
638 E_EXPAND(popup);
639 elm_popup_allow_events_set(popup, 1);
640 elm_popup_scrollable_set(popup, 1);
641
642 tb = elm_table_add(popup);
643 E_EXPAND(tb);
644 evas_object_show(tb);
645 elm_object_content_set(popup, tb);
646
647 lbl = elm_label_add(tb);
648 elm_object_style_set(lbl, "marker");
649 evas_object_show(lbl);
650 elm_object_text_set(lbl, _("Pager Configuration"));
651 elm_table_pack(tb, lbl, 0, 0, 2, 1);
652
653 list = elm_list_add(tb);
654 E_ALIGN(list, 0, EVAS_HINT_FILL);
655 E_WEIGHT(list, 0, EVAS_HINT_EXPAND);
656 elm_table_pack(tb, list, 0, 1, 1, 1);
657 elm_list_select_mode_set(list, ELM_OBJECT_SELECT_MODE_ALWAYS);
658 elm_scroller_content_min_limit(list, 1, 1);
659 it = elm_list_item_append(list, _("General"), NULL, NULL,
660 _config_show_general, NULL);
661 elm_list_item_selected_set(it, 1);
662 it = elm_list_item_append(list, _("Popup"), NULL, NULL,
663 _config_show_popup, NULL);
664 it = elm_list_item_append(list, _("Urgent"), NULL, NULL,
665 _config_show_urgent, NULL);
666 it = elm_list_item_append(list, _("Style"), NULL, NULL,
667 _config_show_style, NULL);
668 elm_list_go(list);
669 evas_object_show(list);
670
671 elm_table_pack(tb,
672 _config_create_pages(tb), 1, 1, 1, 1);
673 _config_show_general(NULL, NULL, NULL);
674
675 popup = e_comp_object_util_add(popup, E_COMP_OBJECT_TYPE_NONE);
676 evas_object_layer_set(popup, E_LAYER_POPUP);
677 evas_object_resize(popup, zone->w / 4, zone->h / 3);
678 e_comp_object_util_center_on_zone(popup, zone);
679 evas_object_show(popup);
680 e_comp_object_util_autoclose(popup, NULL, e_comp_object_util_autoclose_on_escape, NULL);
681 evas_object_event_callback_add(popup, EVAS_CALLBACK_DEL, _config_close, NULL);
682
683 return cfg_dialog = popup;
684 }
685
686