1 #include "e_illume_private.h"
2 #include "e_mod_config_windows.h"
3 #include "e_mod_select_window.h"
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__);
18 Ecore_Timer *_windows_change_timer = NULL;
20 /* public functions */
22 e_mod_illume_config_windows_show(E_Container *con, const char *params __UNUSED__)
25 E_Config_Dialog_View *v;
27 if (e_config_dialog_find("E", "illume/windows")) return;
29 v = E_NEW(E_Config_Dialog_View, 1);
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;
38 cfd = e_config_dialog_new(con, _("Window Settings"), "E",
40 "preferences-system-windows", 0, v, NULL);
42 e_dialog_resizable_set(cfd->dia, 1);
45 /* local function prototypes */
47 _e_mod_illume_config_windows_create(E_Config_Dialog *cfd __UNUSED__)
53 _e_mod_illume_config_windows_free(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata __UNUSED__)
55 if (_windows_change_timer) ecore_timer_del(_windows_change_timer);
56 _windows_change_timer = NULL;
60 _e_mod_illume_config_windows_ui(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata __UNUSED__)
62 Evas_Object *list, *of, *ow;
64 list = e_widget_list_add(evas, 0, 0);
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);
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);
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);
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);
174 _e_mod_illume_config_windows_check_changed(void *data, Evas_Object *obj, void *event)
176 _e_mod_illume_config_windows_change(data, obj, event);
180 _e_mod_illume_config_windows_change(void *data, Evas_Object *obj __UNUSED__, void *event __UNUSED__)
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);
188 _e_mod_illume_config_windows_change_timeout(void *data __UNUSED__)
190 e_config_save_queue();
191 _windows_change_timer = NULL;
192 return ECORE_CALLBACK_CANCEL;
196 _e_mod_illume_config_windows_select_home(void *data __UNUSED__, void *data2 __UNUSED__)
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);
203 _e_mod_illume_config_windows_select_vkbd(void *data __UNUSED__, void *data2 __UNUSED__)
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);
210 _e_mod_illume_config_windows_select_softkey(void *data __UNUSED__, void *data2 __UNUSED__)
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);
217 _e_mod_illume_config_windows_select_indicator(void *data __UNUSED__, void *data2 __UNUSED__)
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);