3 static void *_create_data(E_Config_Dialog *cfd);
4 static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
5 static int _advanced_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
6 static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
7 static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas,
8 E_Config_Dialog_Data *cfdata);
9 static void _cb_standby_slider_change(void *data, Evas_Object *obj);
10 static void _cb_suspend_slider_change(void *data, Evas_Object *obj);
11 static void _cb_off_slider_change(void *data, Evas_Object *obj);
13 static int _e_int_config_dpms_available(void);
14 static int _e_int_config_dpms_capable(void);
16 static void _cb_disable_changed(void *data, Evas_Object *obj);
18 struct _E_Config_Dialog_Data
22 Evas_Object *standby_slider;
23 Evas_Object *suspend_slider;
24 Evas_Object *off_slider;
32 * The following timeouts are represented as minutes
33 * while the underlying e_config variables are in seconds
35 double standby_timeout;
36 double suspend_timeout;
40 double backlight_normal;
42 double backlight_transition;
45 /* static E_Dialog *dpms_dialog = NULL; */
47 /* always allow as dmps now has backlight too
49 _cb_dpms_dialog_ok(void *data __UNUSED__, E_Dialog *dia __UNUSED__)
51 e_object_del(E_OBJECT(dpms_dialog));
57 _e_int_config_dpms_capable(void)
60 /* always allow as dmps now has backlight too
61 * this all needs to merge with screensaver too into a simple screen blank+
62 * dim+brightness etc. config
63 if (ecore_x_dpms_capable_get()) return 1;
65 if (dpms_dialog) e_object_del(E_OBJECT(dpms_dialog));
66 dpms_dialog = e_dialog_new(e_container_current_get(e_manager_current_get()),
67 "E", "_dpms_capable_dialog");
68 if (!dpms_dialog) return 0;
70 e_dialog_title_set(dpms_dialog, _("Display Power Management Signaling"));
71 e_dialog_text_set(dpms_dialog, _("The current display server is not <br>"
73 e_dialog_icon_set(dpms_dialog, "preferences-system-power-management", 64);
74 e_dialog_button_add(dpms_dialog, _("OK"), NULL, _cb_dpms_dialog_ok, NULL);
75 e_dialog_button_focus_num(dpms_dialog, 1);
76 e_win_centered_set(dpms_dialog->win, 1);
77 e_dialog_show(dpms_dialog);
83 _e_int_config_dpms_available(void)
86 /* always allow as dmps now has backlight too
87 if (ecore_x_dpms_query()) return 1;
89 if (dpms_dialog) e_object_del(E_OBJECT(dpms_dialog));
90 dpms_dialog = e_dialog_new(e_container_current_get(e_manager_current_get()),
91 "E", "_dpms_available_dialog");
92 if (!dpms_dialog) return 0;
94 e_dialog_title_set(dpms_dialog, _("Display Power Management Signaling"));
95 e_dialog_text_set(dpms_dialog, _("The current display server does not <br>"
96 "have the DPMS extension."));
97 e_dialog_icon_set(dpms_dialog, "preferences-system-power-management", 64);
98 e_dialog_button_add(dpms_dialog, _("OK"), NULL, _cb_dpms_dialog_ok, NULL);
99 e_dialog_button_focus_num(dpms_dialog, 1);
100 e_win_centered_set(dpms_dialog->win, 1);
101 e_dialog_show(dpms_dialog);
107 e_int_config_dpms(E_Container *con, const char *params __UNUSED__)
109 E_Config_Dialog *cfd;
110 E_Config_Dialog_View *v;
112 if ((e_config_dialog_find("E", "screen/power_management")) ||
113 (!_e_int_config_dpms_available()) ||
114 (!_e_int_config_dpms_capable()))
117 v = E_NEW(E_Config_Dialog_View, 1);
119 v->create_cfdata = _create_data;
120 v->free_cfdata = _free_data;
121 v->basic.apply_cfdata = _advanced_apply_data;
122 v->basic.create_widgets = _advanced_create_widgets;
123 v->basic.check_changed = _advanced_check_changed;
124 v->override_auto_apply = 1;
126 cfd = e_config_dialog_new(con, _("Display Power Management Settings"), "E",
127 "screen/power_management", "preferences-system-power-management",
133 _fill_data(E_Config_Dialog_Data *cfdata)
135 cfdata->enable_dpms = e_config->dpms_enable;
136 cfdata->enable_standby = e_config->dpms_standby_enable;
137 cfdata->standby_timeout = e_config->dpms_standby_timeout / 60;
138 cfdata->enable_suspend = e_config->dpms_suspend_enable;
139 cfdata->suspend_timeout = e_config->dpms_suspend_timeout / 60;
140 cfdata->enable_off = e_config->dpms_off_enable;
141 cfdata->off_timeout = e_config->dpms_off_timeout / 60;
142 cfdata->backlight_normal = e_config->backlight.normal * 100.0;
143 cfdata->backlight_dim = e_config->backlight.dim * 100.0;
144 cfdata->backlight_transition = e_config->backlight.transition;
148 _list_disabled_state_apply(Eina_List *list, Eina_Bool disabled)
153 EINA_LIST_FOREACH(list, l, o)
154 e_widget_disabled_set(o, disabled);
158 _create_data(E_Config_Dialog *cfd)
160 E_Config_Dialog_Data *cfdata;
162 cfdata = E_NEW(E_Config_Dialog_Data, 1);
165 cfdata->standby_slider = NULL;
166 cfdata->suspend_slider = NULL;
167 cfdata->off_slider = NULL;
174 _free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
176 eina_list_free(cfdata->dpms_list);
181 _apply_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
183 e_config->dpms_enable = cfdata->enable_dpms;
184 e_config->dpms_standby_enable = cfdata->enable_standby;
185 e_config->dpms_suspend_enable = cfdata->enable_suspend;
186 e_config->dpms_off_enable = cfdata->enable_off;
188 e_config->dpms_standby_timeout = cfdata->standby_timeout * 60;
189 e_config->dpms_suspend_timeout = cfdata->suspend_timeout * 60;
190 e_config->dpms_off_timeout = cfdata->off_timeout * 60;
192 e_config->backlight.normal = cfdata->backlight_normal / 100.0;
193 e_config->backlight.dim = cfdata->backlight_dim / 100.0;
194 e_config->backlight.transition = cfdata->backlight_transition;
196 e_backlight_mode_set(NULL, E_BACKLIGHT_MODE_NORMAL);
197 e_backlight_level_set(NULL, e_config->backlight.normal, -1.0);
199 e_config_save_queue();
204 /* advanced window */
206 _advanced_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
208 return (e_config->dpms_enable != cfdata->enable_dpms) ||
209 (e_config->dpms_standby_enable != cfdata->enable_standby) ||
210 (e_config->dpms_suspend_enable != cfdata->enable_suspend) ||
211 (e_config->dpms_off_enable != cfdata->enable_off) ||
212 (e_config->dpms_standby_timeout / 60 != cfdata->standby_timeout) ||
213 (e_config->dpms_suspend_timeout / 60 != cfdata->suspend_timeout) ||
214 (e_config->dpms_off_timeout / 60 != cfdata->off_timeout) ||
215 (e_config->backlight.normal * 100.0 != cfdata->backlight_normal) ||
216 (e_config->backlight.dim * 100.0 != cfdata->backlight_dim) ||
217 (e_config->backlight.transition != cfdata->backlight_transition);
221 _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
223 _apply_data(cfd, cfdata);
228 _advanced_create_widgets(E_Config_Dialog *cfd __UNUSED__, Evas *evas, E_Config_Dialog_Data *cfdata)
230 Evas_Object *o, *of, *ob, *otb;
231 Evas_Object *dpms_check;
233 otb = e_widget_toolbook_add(evas, (24 * e_scale), (24 * e_scale));
236 o = e_widget_list_add(evas, 0, 0);
238 dpms_check = e_widget_check_add(evas, _("Enable Display Power Management"),
239 &(cfdata->enable_dpms));
240 e_widget_list_object_append(o, dpms_check, 1, 1, 0);
242 of = e_widget_framelist_add(evas, _("Timers"), 0);
244 ob = e_widget_check_add(evas, _("Standby time"), &(cfdata->enable_standby));
245 e_widget_framelist_object_append(of, ob);
246 cfdata->dpms_list = eina_list_append(cfdata->dpms_list, ob);
247 e_widget_disabled_set(ob, !cfdata->enable_standby); // set state from saved config
248 ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1.0, 90.0, 1.0, 0,
249 &(cfdata->standby_timeout), NULL, 100);
250 e_widget_on_change_hook_set(ob, _cb_standby_slider_change, cfdata);
251 cfdata->standby_slider = ob;
252 cfdata->dpms_list = eina_list_append(cfdata->dpms_list, ob);
253 e_widget_disabled_set(ob, !cfdata->enable_standby); // set state from saved config
254 e_widget_framelist_object_append(of, ob);
256 ob = e_widget_check_add(evas, _("Suspend time"), &(cfdata->enable_suspend));
257 e_widget_framelist_object_append(of, ob);
258 cfdata->dpms_list = eina_list_append(cfdata->dpms_list, ob);
259 e_widget_disabled_set(ob, !cfdata->enable_standby); // set state from saved config
260 ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1.0, 90.0, 1.0, 0,
261 &(cfdata->suspend_timeout), NULL, 100);
262 e_widget_on_change_hook_set(ob, _cb_suspend_slider_change, cfdata);
263 cfdata->suspend_slider = ob;
264 cfdata->dpms_list = eina_list_append(cfdata->dpms_list, ob);
265 e_widget_disabled_set(ob, !cfdata->enable_standby); // set state from saved config
266 e_widget_framelist_object_append(of, ob);
268 ob = e_widget_check_add(evas, _("Off time"), &(cfdata->enable_off));
269 e_widget_framelist_object_append(of, ob);
270 cfdata->dpms_list = eina_list_append(cfdata->dpms_list, ob);
271 e_widget_disabled_set(ob, !cfdata->enable_standby); // set state from saved config
272 ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 1.0, 90.0, 1.0, 0,
273 &(cfdata->off_timeout), NULL, 100);
274 e_widget_on_change_hook_set(ob, _cb_off_slider_change, cfdata);
275 cfdata->off_slider = ob;
276 cfdata->dpms_list = eina_list_append(cfdata->dpms_list, ob);
277 e_widget_disabled_set(ob, !cfdata->enable_standby); // set state from saved config
278 e_widget_framelist_object_append(of, ob);
280 // handler for enable/disable widget array
281 e_widget_on_change_hook_set(dpms_check, _cb_disable_changed, cfdata->dpms_list);
282 // setting initial state
283 _list_disabled_state_apply(cfdata->dpms_list, !cfdata->enable_dpms);
285 e_widget_list_object_append(o, of, 1, 1, 0.5);
287 e_widget_toolbook_page_append(otb, NULL, _("DPMS"), o,
288 1, 0, 1, 0, 0.5, 0.0);
290 o = e_widget_list_add(evas, 0, 0);
292 ob = e_widget_label_add(evas, _("Normal Backlight"));
293 e_widget_list_object_append(o, ob, 1, 1, 0.5);
294 ob = e_widget_slider_add(evas, 1, 0, _("%3.0f"), 0.0, 100.0, 1.0, 0,
295 &(cfdata->backlight_normal), NULL, 100);
296 e_widget_list_object_append(o, ob, 1, 1, 0.5);
298 ob = e_widget_label_add(evas, _("Dim Backlight"));
299 e_widget_list_object_append(o, ob, 1, 1, 0.5);
300 ob = e_widget_slider_add(evas, 1, 0, _("%3.0f"), 0.0, 100.0, 1.0, 0,
301 &(cfdata->backlight_dim), NULL, 100);
302 e_widget_list_object_append(o, ob, 1, 1, 0.5);
304 ob = e_widget_label_add(evas, _("Fade Time"));
305 e_widget_list_object_append(o, ob, 1, 1, 0.5);
306 ob = e_widget_slider_add(evas, 1, 0, _("%1.1f sec"), 0.0, 5.0, 0.1, 0,
307 &(cfdata->backlight_transition), NULL, 100);
308 e_widget_list_object_append(o, ob, 1, 1, 0.5);
310 e_widget_toolbook_page_append(otb, NULL, _("Backlight"), o,
311 1, 0, 1, 0, 0.5, 0.0);
313 e_widget_toolbook_page_show(otb, 0);
318 /* general functionality/callbacks */
320 _cb_standby_slider_change(void *data, Evas_Object *obj __UNUSED__)
322 E_Config_Dialog_Data *cfdata = data;
325 if (cfdata->standby_timeout > cfdata->suspend_timeout)
327 cfdata->suspend_timeout = cfdata->standby_timeout;
328 if (cfdata->suspend_slider)
329 e_widget_slider_value_double_set(cfdata->suspend_slider,
330 cfdata->suspend_timeout);
332 if (cfdata->suspend_timeout > cfdata->off_timeout)
334 cfdata->off_timeout = cfdata->suspend_timeout;
335 if (cfdata->off_slider)
336 e_widget_slider_value_double_set(cfdata->off_slider,
337 cfdata->off_timeout);
343 _cb_suspend_slider_change(void *data, Evas_Object *obj __UNUSED__)
345 E_Config_Dialog_Data *cfdata = data;
348 if (cfdata->suspend_timeout > cfdata->off_timeout)
350 cfdata->off_timeout = cfdata->suspend_timeout;
351 if (cfdata->off_slider)
352 e_widget_slider_value_double_set(cfdata->off_slider,
353 cfdata->off_timeout);
355 if (cfdata->suspend_timeout < cfdata->standby_timeout)
357 cfdata->standby_timeout = cfdata->suspend_timeout;
358 if (cfdata->standby_slider)
359 e_widget_slider_value_double_set(cfdata->standby_slider,
360 cfdata->standby_timeout);
365 _cb_off_slider_change(void *data, Evas_Object *obj __UNUSED__)
367 E_Config_Dialog_Data *cfdata = data;
370 if (cfdata->off_timeout < cfdata->suspend_timeout)
372 cfdata->suspend_timeout = cfdata->off_timeout;
373 if (cfdata->suspend_slider)
374 e_widget_slider_value_double_set(cfdata->suspend_slider,
375 cfdata->suspend_timeout);
377 if (cfdata->suspend_timeout < cfdata->standby_timeout)
379 cfdata->standby_timeout = cfdata->suspend_timeout;
380 if (cfdata->standby_slider)
381 e_widget_slider_value_double_set(cfdata->standby_slider,
382 cfdata->standby_timeout);
388 * @param data A Eina_List of Evas_Object to chain widgets together with the checkbox
389 * @param obj A Evas_Object checkbox created with e_widget_check_add()
392 _cb_disable_changed(void *data, Evas_Object *obj)
394 _list_disabled_state_apply(data, !e_widget_check_checked_get(obj));