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