update for beta release
[framework/uifw/e17.git] / src / modules / illume2 / e_mod_config_windows.c
1 #include "e_illume_private.h"
2 #include "e_mod_config_windows.h"
3 #include "e_mod_select_window.h"
4
5 /* local function prototypes */
6 static void *_e_mod_illume_config_windows_create(E_Config_Dialog *cfd);
7 static void _e_mod_illume_config_windows_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
8 static Evas_Object *_e_mod_illume_config_windows_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
9 static void _e_mod_illume_config_windows_check_changed(void *data, Evas_Object *obj, void *event);
10 static void _e_mod_illume_config_windows_change(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__);
11 static Eina_Bool _e_mod_illume_config_windows_change_timeout(void *data __UNUSED__);
12 static void _e_mod_illume_config_windows_select_home(void *data __UNUSED__, void *data2 __UNUSED__);
13 static void _e_mod_illume_config_windows_select_vkbd(void *data __UNUSED__, void *data2 __UNUSED__);
14 static void _e_mod_illume_config_windows_select_softkey(void *data __UNUSED__, void *data2 __UNUSED__);
15 static void _e_mod_illume_config_windows_select_indicator(void *data __UNUSED__, void *data2 __UNUSED__);
16
17 /* local variables */
18 Ecore_Timer *_windows_change_timer = NULL;
19
20 /* public functions */
21 void 
22 e_mod_illume_config_windows_show(E_Container *con, const char *params __UNUSED__) 
23 {
24    E_Config_Dialog *cfd;
25    E_Config_Dialog_View *v;
26
27    if (e_config_dialog_find("E", "illume/windows")) return;
28
29    v = E_NEW(E_Config_Dialog_View, 1);
30    if (!v) return;
31
32    v->create_cfdata = _e_mod_illume_config_windows_create;
33    v->free_cfdata = _e_mod_illume_config_windows_free;
34    v->basic.create_widgets = _e_mod_illume_config_windows_ui;
35    v->basic_only = 1;
36    v->normal_win = 1;
37    v->scroll = 1;
38    cfd = e_config_dialog_new(con, _("Window Settings"), "E", 
39                              "illume/windows", 
40                              "preferences-system-windows", 0, v, NULL);
41    if (!cfd) return;
42    e_dialog_resizable_set(cfd->dia, 1);
43 }
44
45 /* local function prototypes */
46 static void *
47 _e_mod_illume_config_windows_create(E_Config_Dialog *cfd __UNUSED__) 
48 {
49    return NULL;
50 }
51
52 static void 
53 _e_mod_illume_config_windows_free(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata __UNUSED__) 
54 {
55    if (_windows_change_timer) ecore_timer_del(_windows_change_timer);
56    _windows_change_timer = NULL;
57 }
58
59 static Evas_Object *
60 _e_mod_illume_config_windows_ui(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata __UNUSED__) 
61 {
62    Evas_Object *list, *of, *ow;
63
64    list = e_widget_list_add(evas, 0, 0);
65
66    of = e_widget_framelist_add(evas, _("Home"), 0);
67    ow = e_widget_button_add(evas, _("Select Window"), NULL, 
68                             _e_mod_illume_config_windows_select_home, NULL, NULL);
69    e_widget_framelist_object_append(of, ow);
70    ow = e_widget_check_add(evas, _("Match Window Class"), 
71                            &_e_illume_cfg->policy.home.match.class);
72    e_widget_framelist_object_append(of, ow);
73    evas_object_smart_callback_add(ow, "changed", 
74                                   _e_mod_illume_config_windows_check_changed, NULL);
75    ow = e_widget_check_add(evas, _("Match Window Name"), 
76                            &_e_illume_cfg->policy.home.match.name);
77    e_widget_framelist_object_append(of, ow);
78    evas_object_smart_callback_add(ow, "changed", 
79                                   _e_mod_illume_config_windows_check_changed, NULL);
80    ow = e_widget_check_add(evas, _("Match Window Title"), 
81                            &_e_illume_cfg->policy.home.match.title);
82    e_widget_framelist_object_append(of, ow);
83    evas_object_smart_callback_add(ow, "changed", 
84                                   _e_mod_illume_config_windows_check_changed, NULL);
85    ow = e_widget_check_add(evas, _("Match Window Type"), 
86                            &_e_illume_cfg->policy.home.match.type);
87    e_widget_framelist_object_append(of, ow);
88    evas_object_smart_callback_add(ow, "changed", 
89                                   _e_mod_illume_config_windows_check_changed, NULL);
90    e_widget_list_object_append(list, of, 1, 0, 0.0);
91
92    of = e_widget_framelist_add(evas, _("Indicator"), 0);
93    ow = e_widget_button_add(evas, _("Select Window"), NULL, 
94                             _e_mod_illume_config_windows_select_indicator, NULL, NULL);
95    e_widget_framelist_object_append(of, ow);
96    ow = e_widget_check_add(evas, _("Match Window Class"), 
97                            &_e_illume_cfg->policy.indicator.match.class);
98    e_widget_framelist_object_append(of, ow);
99    evas_object_smart_callback_add(ow, "changed", 
100                                   _e_mod_illume_config_windows_check_changed, NULL);
101    ow = e_widget_check_add(evas, _("Match Window Name"), 
102                            &_e_illume_cfg->policy.indicator.match.name);
103    e_widget_framelist_object_append(of, ow);
104    evas_object_smart_callback_add(ow, "changed", 
105                                   _e_mod_illume_config_windows_check_changed, NULL);
106    ow = e_widget_check_add(evas, _("Match Window Title"), 
107                            &_e_illume_cfg->policy.indicator.match.title);
108    e_widget_framelist_object_append(of, ow);
109    evas_object_smart_callback_add(ow, "changed", 
110                                   _e_mod_illume_config_windows_check_changed, NULL);
111    ow = e_widget_check_add(evas, _("Match Window Type"), 
112                            &_e_illume_cfg->policy.indicator.match.type);
113    e_widget_framelist_object_append(of, ow);
114    evas_object_smart_callback_add(ow, "changed", 
115                                   _e_mod_illume_config_windows_check_changed, NULL);
116    e_widget_list_object_append(list, of, 1, 0, 0.0);
117
118    of = e_widget_framelist_add(evas, _("Keyboard"), 0);
119    ow = e_widget_button_add(evas, _("Select Window"), NULL, 
120                             _e_mod_illume_config_windows_select_vkbd, NULL, NULL);
121    e_widget_framelist_object_append(of, ow);
122    ow = e_widget_check_add(evas, _("Match Window Class"), 
123                            &_e_illume_cfg->policy.vkbd.match.class);
124    e_widget_framelist_object_append(of, ow);
125    evas_object_smart_callback_add(ow, "changed", 
126                                   _e_mod_illume_config_windows_check_changed, NULL);
127    ow = e_widget_check_add(evas, _("Match Window Name"), 
128                            &_e_illume_cfg->policy.vkbd.match.name);
129    e_widget_framelist_object_append(of, ow);
130    evas_object_smart_callback_add(ow, "changed", 
131                                   _e_mod_illume_config_windows_check_changed, NULL);
132    ow = e_widget_check_add(evas, _("Match Window Title"), 
133                            &_e_illume_cfg->policy.vkbd.match.title);
134    e_widget_framelist_object_append(of, ow);
135    evas_object_smart_callback_add(ow, "changed", 
136                                   _e_mod_illume_config_windows_check_changed, NULL);
137    ow = e_widget_check_add(evas, _("Match Window Type"), 
138                            &_e_illume_cfg->policy.vkbd.match.type);
139    e_widget_framelist_object_append(of, ow);
140    evas_object_smart_callback_add(ow, "changed", 
141                                   _e_mod_illume_config_windows_check_changed, NULL);
142    e_widget_list_object_append(list, of, 1, 0, 0.0);
143
144    of = e_widget_framelist_add(evas, _("Softkey"), 0);
145    ow = e_widget_button_add(evas, _("Select Window"), NULL, 
146                             _e_mod_illume_config_windows_select_softkey, NULL, NULL);
147    e_widget_framelist_object_append(of, ow);
148    ow = e_widget_check_add(evas, _("Match Window Class"), 
149                            &_e_illume_cfg->policy.softkey.match.class);
150    e_widget_framelist_object_append(of, ow);
151    evas_object_smart_callback_add(ow, "changed", 
152                                   _e_mod_illume_config_windows_check_changed, NULL);
153    ow = e_widget_check_add(evas, _("Match Window Name"), 
154                            &_e_illume_cfg->policy.softkey.match.name);
155    e_widget_framelist_object_append(of, ow);
156    evas_object_smart_callback_add(ow, "changed", 
157                                   _e_mod_illume_config_windows_check_changed, NULL);
158    ow = e_widget_check_add(evas, _("Match Window Title"), 
159                            &_e_illume_cfg->policy.softkey.match.title);
160    e_widget_framelist_object_append(of, ow);
161    evas_object_smart_callback_add(ow, "changed", 
162                                   _e_mod_illume_config_windows_check_changed, NULL);
163    ow = e_widget_check_add(evas, _("Match Window Type"), 
164                            &_e_illume_cfg->policy.softkey.match.type);
165    e_widget_framelist_object_append(of, ow);
166    evas_object_smart_callback_add(ow, "changed", 
167                                   _e_mod_illume_config_windows_check_changed, NULL);
168    e_widget_list_object_append(list, of, 1, 0, 0.0);
169
170    return list;
171 }
172
173 static void 
174 _e_mod_illume_config_windows_check_changed(void *data, Evas_Object *obj, void *event) 
175 {
176    _e_mod_illume_config_windows_change(data, obj, event);
177 }
178
179 static void 
180 _e_mod_illume_config_windows_change(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__) 
181 {
182    if (_windows_change_timer) ecore_timer_del(_windows_change_timer);
183    _windows_change_timer = 
184      ecore_timer_add(0.5, _e_mod_illume_config_windows_change_timeout, data);
185 }
186
187 static Eina_Bool
188 _e_mod_illume_config_windows_change_timeout(void *data __UNUSED__) 
189 {
190    e_config_save_queue();
191    _windows_change_timer = NULL;
192    return ECORE_CALLBACK_CANCEL;
193 }
194
195 static void 
196 _e_mod_illume_config_windows_select_home(void *data __UNUSED__, void *data2 __UNUSED__) 
197 {
198    if (e_config_dialog_find("E", "_config_illume_select_window")) return;
199    e_mod_illume_config_select_window(E_ILLUME_SELECT_WINDOW_TYPE_HOME);
200 }
201
202 static void 
203 _e_mod_illume_config_windows_select_vkbd(void *data __UNUSED__, void *data2 __UNUSED__) 
204 {
205    if (e_config_dialog_find("E", "_config_illume_select_window")) return;
206    e_mod_illume_config_select_window(E_ILLUME_SELECT_WINDOW_TYPE_VKBD);
207 }
208
209 static void 
210 _e_mod_illume_config_windows_select_softkey(void *data __UNUSED__, void *data2 __UNUSED__) 
211 {
212    if (e_config_dialog_find("E", "_config_illume_select_window")) return;
213    e_mod_illume_config_select_window(E_ILLUME_SELECT_WINDOW_TYPE_SOFTKEY);
214 }
215
216 static void 
217 _e_mod_illume_config_windows_select_indicator(void *data __UNUSED__, void *data2 __UNUSED__) 
218 {
219    if (e_config_dialog_find("E", "_config_illume_select_window")) return;
220    e_mod_illume_config_select_window(E_ILLUME_SELECT_WINDOW_TYPE_INDICATOR);
221 }