e: make e_powersave values configurable

SVN revision: 70698
This commit is contained in:
Michael BOUCHAUD 2012-05-03 20:16:34 +00:00
parent bce6efef04
commit 7743a24db2
13 changed files with 497 additions and 44 deletions

View File

@ -524,4 +524,11 @@ group "E_Config" struct {
value "update.later" uchar: 0;
value "xkb.only_label" int: 0;
value "xkb.default_model" string: "default";
value "powersave.none" double: 0.25;
value "powersave.low" double: 5.0;
value "powersave.medium" double: 60.0;
value "powersave.high" double: 300.0;
value "powersave.extreme" double: 1200.0;
value "powersave.min" int: 0;
value "powersave.max" int: 5;
}

View File

@ -211,6 +211,13 @@ group "E_Config" struct {
value "xsettings.xft_hinting" int: 0;
value "update.check" uchar: 1;
value "update.later" uchar: 0;
value "powersave.none" double: 0.25;
value "powersave.low" double: 5.0;
value "powersave.medium" double: 60.0;
value "powersave.high" double: 300.0;
value "powersave.extreme" double: 1200.0;
value "powersave.min" int: 0;
value "powersave.max" int: 5;
group "syscon.actions" list {
group "E_Config_Syscon_Action" struct {
value "action" string: "halt";

View File

@ -204,6 +204,13 @@ group "E_Config" struct {
value "xsettings.xft_hinting" int: 0;
value "update.check" uchar: 1;
value "update.later" uchar: 0;
value "powersave.none" double: 0.25;
value "powersave.low" double: 5.0;
value "powersave.medium" double: 60.0;
value "powersave.high" double: 300.0;
value "powersave.extreme" double: 1200.0;
value "powersave.min" int: 0;
value "powersave.max" int: 5;
group "syscon.actions" list {
group "E_Config_Syscon_Action" struct {
value "action" string: "halt";

View File

@ -898,6 +898,14 @@ e_config_init(void)
E_CONFIG_VAL(D, T, deskenv.load_gnome, UCHAR);
E_CONFIG_VAL(D, T, deskenv.load_kde, UCHAR);
E_CONFIG_VAL(D, T, powersave.none, DOUBLE);
E_CONFIG_VAL(D, T, powersave.low, DOUBLE);
E_CONFIG_VAL(D, T, powersave.medium, DOUBLE);
E_CONFIG_VAL(D, T, powersave.high, DOUBLE);
E_CONFIG_VAL(D, T, powersave.extreme, DOUBLE);
E_CONFIG_VAL(D, T, powersave.min, INT);
E_CONFIG_VAL(D, T, powersave.max, INT);
E_CONFIG_VAL(D, T, xsettings.enabled, UCHAR);
E_CONFIG_VAL(D, T, xsettings.match_e17_theme, UCHAR);
E_CONFIG_VAL(D, T, xsettings.match_e17_icon_theme, UCHAR);
@ -1191,6 +1199,16 @@ e_config_load(void)
COPYVAL(update.later);
IFCFGEND;
IFCFG(0x0149);
COPYVAL(powersave.none);
COPYVAL(powersave.low);
COPYVAL(powersave.medium);
COPYVAL(powersave.high);
COPYVAL(powersave.extreme);
COPYVAL(powersave.min);
COPYVAL(powersave.max);
IFCFGEND;
e_config->config_version = E_CONFIG_FILE_VERSION;
_e_config_free(tcfg);
}
@ -1336,7 +1354,15 @@ e_config_load(void)
E_CONFIG_LIMIT(e_config->exec.show_exit_dialog, 0, 1);
E_CONFIG_LIMIT(e_config->null_container_win, 0, 1);
E_CONFIG_LIMIT(e_config->powersave.none, 0.01, 5400.00);
E_CONFIG_LIMIT(e_config->powersave.low, 0.01, 5400.00);
E_CONFIG_LIMIT(e_config->powersave.medium, 0.01, 5400.00);
E_CONFIG_LIMIT(e_config->powersave.high, 0.01, 5400.00);
E_CONFIG_LIMIT(e_config->powersave.extreme, 0.01, 5400.00);
E_CONFIG_LIMIT(e_config->powersave.min, E_POWERSAVE_MODE_NONE, E_POWERSAVE_MODE_EXTREME);
E_CONFIG_LIMIT(e_config->powersave.max, E_POWERSAVE_MODE_NONE, E_POWERSAVE_MODE_EXTREME);
/* FIXME: disabled auto apply because it causes problems */
e_config->cfgdlg_auto_apply = 0;
/* FIXME: desklock personalized password id disabled for security reasons */

View File

@ -318,7 +318,17 @@ struct _E_Config
unsigned char idle_dim; // GUI
double timer; // GUI
} backlight;
struct {
double none;
double low;
double medium;
double high;
double extreme;
E_Powersave_Mode min;
E_Powersave_Mode max;
} powersave;
struct {
unsigned char load_xrdb; // GUI
unsigned char load_xmodmap; // GUI

View File

@ -9,14 +9,17 @@ struct _E_Powersave_Deferred_Action
/* local subsystem functions */
static Eina_Bool _e_powersave_cb_deferred_timer(void *data);
static Eina_Bool _e_powersave_cb_config(void *data);
static void _e_powersave_mode_eval(void);
static void _e_powersave_event_update_free(void *data __UNUSED__, void *event);
/* local subsystem globals */
EAPI int E_EVENT_POWERSAVE_UPDATE = 0;
EAPI int E_EVENT_POWERSAVE_CONFIG_UPDATE = 0;
static int walking_deferred_actions = 0;
static Eina_List *deferred_actions = NULL;
static Ecore_Timer *deferred_timer = NULL;
static Ecore_Timer *config_timer = NULL;
static E_Powersave_Mode powersave_mode_min = E_POWERSAVE_MODE_NONE;
static E_Powersave_Mode powersave_mode_max = E_POWERSAVE_MODE_EXTREME;
static E_Powersave_Mode powersave_mode = E_POWERSAVE_MODE_LOW;
@ -28,6 +31,7 @@ e_powersave_init(void)
{
_e_powersave_mode_eval();
E_EVENT_POWERSAVE_UPDATE = ecore_event_type_new();
E_EVENT_POWERSAVE_CONFIG_UPDATE = ecore_event_type_new();
return 1;
}
@ -41,7 +45,7 @@ EAPI E_Powersave_Deferred_Action *
e_powersave_deferred_action_add(void (*func) (void *data), const void *data)
{
E_Powersave_Deferred_Action *pa;
pa = calloc(1, sizeof(E_Powersave_Deferred_Action));
if (!pa) return NULL;
if (deferred_timer) ecore_timer_del(deferred_timer);
@ -77,27 +81,13 @@ e_powersave_deferred_action_del(E_Powersave_Deferred_Action *pa)
}
}
EAPI void
e_powersave_mode_min_set(E_Powersave_Mode mode)
{
powersave_mode_min = mode;
e_powersave_mode_set(powersave_mode);
}
EAPI void
e_powersave_mode_max_set(E_Powersave_Mode mode)
{
powersave_mode_max = mode;
e_powersave_mode_set(powersave_mode);
}
EAPI void
e_powersave_mode_set(E_Powersave_Mode mode)
{
E_Event_Powersave_Update *ev;
if (mode < powersave_mode_min) mode = powersave_mode_min;
else if (mode > powersave_mode_max) mode = powersave_mode_max;
if (mode < e_config->powersave.min) mode = e_config->powersave.min;
else if (mode > e_config->powersave.max) mode = e_config->powersave.max;
if (powersave_mode == mode) return;
printf("CHANGE PW SAVE MODE TO %i / %i\n", (int)mode, E_POWERSAVE_MODE_EXTREME);
powersave_mode = mode;
@ -108,17 +98,6 @@ e_powersave_mode_set(E_Powersave_Mode mode)
_e_powersave_mode_eval();
}
EAPI E_Powersave_Mode
e_powersave_mode_min_get(void)
{
return powersave_mode_min;
}
EAPI E_Powersave_Mode
e_powersave_mode_max_get(void)
{
return powersave_mode_max;
}
EAPI E_Powersave_Mode
e_powersave_mode_get(void)
@ -126,6 +105,18 @@ e_powersave_mode_get(void)
return powersave_mode;
}
EAPI E_Powersave_Mode
e_powersave_mode_min_get(void)
{
return e_config->powersave.min;
}
EAPI E_Powersave_Mode
e_powersave_mode_max_get(void)
{
return e_config->powersave.max;
}
/* local subsystem functions */
static Eina_Bool
@ -148,24 +139,23 @@ static void
_e_powersave_mode_eval(void)
{
double t = 0.0;
switch (powersave_mode)
{
/* FIXME: these values are hardcoded - should be configurable */
case E_POWERSAVE_MODE_NONE:
t = 0.25; /* time to defer "power expensive" activities */
t = e_config->powersave.none; /* time to defer "power expensive" activities */
break;
case E_POWERSAVE_MODE_LOW:
t = 5.0;
t = e_config->powersave.low;
break;
case E_POWERSAVE_MODE_MEDIUM:
t = 60.0;
t = e_config->powersave.medium;
break;
case E_POWERSAVE_MODE_HIGH:
t = 300.0;
t = e_config->powersave.high;
break;
case E_POWERSAVE_MODE_EXTREME:
t = 1200.0;
t = e_config->powersave.extreme;
break;
default:
return;
@ -186,3 +176,4 @@ _e_powersave_event_update_free(void *data __UNUSED__, void *event)
{
free(event);
}

View File

@ -17,6 +17,7 @@ typedef struct _E_Event_Powersave_Update E_Event_Powersave_Update;
#define E_POWERSAVE_H
extern EAPI int E_EVENT_POWERSAVE_UPDATE;
extern EAPI int E_EVENT_POWERSAVE_CONFIG_UPDATE;
struct _E_Event_Powersave_Update
{
@ -28,11 +29,7 @@ EINTERN int e_powersave_shutdown(void);
EAPI E_Powersave_Deferred_Action *e_powersave_deferred_action_add(void (*func) (void *data), const void *data);
EAPI void e_powersave_deferred_action_del(E_Powersave_Deferred_Action *pa);
EAPI void e_powersave_mode_min_set(E_Powersave_Mode mode);
EAPI void e_powersave_mode_max_set(E_Powersave_Mode mode);
EAPI void e_powersave_mode_set(E_Powersave_Mode mode);
EAPI E_Powersave_Mode e_powersave_mode_min_get(void);
EAPI E_Powersave_Mode e_powersave_mode_max_get(void);
EAPI E_Powersave_Mode e_powersave_mode_get(void);
/* FIXME: in the powersave system add things like pre-loading entire files

View File

@ -52,7 +52,10 @@ static void _battery_cb_warning_popup_hide(void *data, Evas *e, Evas_Object *obj
static void _battery_warning_popup_destroy(Instance *inst);
static void _battery_warning_popup(Instance *inst, int time, double percent);
static Eina_Bool _powersave_cb_config_update(void *data, int type, void *event);
static E_Config_DD *conf_edd = NULL;
static Ecore_Event_Handler *_handler = NULL;
Config *battery_config = NULL;
@ -335,8 +338,6 @@ _battery_device_update(void)
if (time_full < 1) time_full = -1;
_battery_update(full, time_left, time_full, have_battery, have_power);
if ((acnum >= 0) && (batnum == 0))
e_powersave_mode_set(E_POWERSAVE_MODE_LOW);
}
@ -511,6 +512,25 @@ _battery_warning_popup(Instance *inst, int time, double percent)
}
}
static Eina_Bool
_powersave_cb_config_update(void *data, int type, void *event)
{
if (!battery_config->have_battery)
e_powersave_mode_set(E_POWERSAVE_MODE_LOW);
else
{
if (battery_config->have_power)
e_powersave_mode_set(E_POWERSAVE_MODE_LOW);
else if (battery_config->full > 95)
e_powersave_mode_set(E_POWERSAVE_MODE_MEDIUM);
else if (battery_config->full > 30)
e_powersave_mode_set(E_POWERSAVE_MODE_HIGH);
else
e_powersave_mode_set(E_POWERSAVE_MODE_EXTREME);
}
return ECORE_CALLBACK_RENEW;
}
static void
_battery_update(int full, int time_left, int time_full, Eina_Bool have_battery, Eina_Bool have_power)
{
@ -778,6 +798,8 @@ e_modapi_init(E_Module *m)
battery_config->batget_del_handler =
ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
_battery_cb_exe_del, NULL);
_handler = ecore_event_handler_add(E_EVENT_POWERSAVE_CONFIG_UPDATE,
_powersave_cb_config_update, NULL);
e_gadcon_provider_register(&_gadcon_class);

View File

@ -23,7 +23,9 @@ module_la_SOURCES = e_mod_main.c \
e_int_config_performance.c \
e_int_config_performance.h \
e_int_config_engine.c \
e_int_config_engine.h
e_int_config_engine.h \
e_int_config_powermanagement.c \
e_int_config_powermanagement.h
module_la_LIBADD = @e_libs@ @dlopen_libs@
module_la_LDFLAGS = -module -avoid-version

View File

@ -0,0 +1,372 @@
#include "e.h"
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_apply(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static int _basic_check_changed(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static void _cb_min_changed(void *data, Evas_Object *obj);
static void _cb_max_changed(void *data, Evas_Object *obj);
struct _E_Config_Dialog_Data
{
struct {
Eina_List *rmin;
Eina_List *rmax;
} gui;
double powersave_none;
double powersave_low;
double powersave_medium;
double powersave_high;
double powersave_extreme;
int powersave_min;
int powersave_max;
};
E_Config_Dialog *
e_int_config_powermanagement(E_Container *con, const char *params __UNUSED__)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
if (e_config_dialog_find("E", "advanced/powermanagement")) return NULL;
v = E_NEW(E_Config_Dialog_View, 1);
v->create_cfdata = _create_data;
v->free_cfdata = _free_data;
v->basic.apply_cfdata = _basic_apply;
v->basic.create_widgets = _basic_create;
v->basic.check_changed = _basic_check_changed;
cfd = e_config_dialog_new(con, _("Power management Settings"),
"E", "advanced/powermanagement",
"preferences-system-powermanagement", 0, v, NULL);
return cfd;
}
static void *
_create_data(E_Config_Dialog *cfd __UNUSED__)
{
E_Config_Dialog_Data *cfdata;
cfdata = E_NEW(E_Config_Dialog_Data, 1);
if (!cfdata) return NULL;
cfdata->powersave_none = e_config->powersave.none;
cfdata->powersave_low = e_config->powersave.low;
cfdata->powersave_medium = e_config->powersave.medium;
cfdata->powersave_high = e_config->powersave.high;
cfdata->powersave_extreme = e_config->powersave.extreme;
return cfdata;
}
static void
_free_data(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
eina_list_free(cfdata->gui.rmin);
eina_list_free(cfdata->gui.rmax);
E_FREE(cfdata);
}
static int
_basic_apply(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
e_config->powersave.none = cfdata->powersave_none;
e_config->powersave.low = cfdata->powersave_low;
e_config->powersave.medium = cfdata->powersave_medium;
e_config->powersave.high = cfdata->powersave_high;
e_config->powersave.extreme = cfdata->powersave_extreme;
if (e_config->powersave.min != cfdata->powersave_min
|| e_config->powersave.max != cfdata->powersave_max)
{
e_config->powersave.min = cfdata->powersave_min;
e_config->powersave.max = cfdata->powersave_max;
ecore_event_add(E_EVENT_POWERSAVE_CONFIG_UPDATE,
NULL, NULL, NULL);
}
e_powersave_mode_set(e_powersave_mode_get());
e_config_save_queue();
return 1;
}
static int
_basic_check_changed(E_Config_Dialog *cfd __UNUSED__, E_Config_Dialog_Data *cfdata)
{
return ((e_config->powersave.min != cfdata->powersave_min) ||
(e_config->powersave.max != cfdata->powersave_max) ||
(e_config->powersave.none != cfdata->powersave_none) ||
(e_config->powersave.low != cfdata->powersave_low) ||
(e_config->powersave.medium != cfdata->powersave_medium) ||
(e_config->powersave.high != cfdata->powersave_high) ||
(e_config->powersave.extreme != cfdata->powersave_extreme));
}
static Evas_Object *
_basic_create(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *otb, *ob, *ol;
E_Radio_Group *rmin, *rmax;
otb = e_widget_toolbook_add(evas, (24 * e_scale), (24 * e_scale));
cfdata->powersave_min = e_config->powersave.min;
cfdata->powersave_max = e_config->powersave.max;
rmin = e_widget_radio_group_new(&(cfdata->powersave_min));
rmax = e_widget_radio_group_new(&(cfdata->powersave_max));
ol = e_widget_table_add(evas, 0);
ob = e_widget_label_add(evas, _("Min"));
e_widget_table_object_align_append(ol, ob,
0, 0, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_label_add(evas, _("Max"));
e_widget_table_object_align_append(ol, ob,
1, 0, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
/*
ob = e_widget_label_add(evas,
_("Time to defer 'power expensive' activities"));
e_widget_table_object_align_append(ol, ob,
2, 0, //place
2, 1, //span
1, 1, //fill
1, 1, //expand
0.0, 0.5 //align
);*/
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_NONE, rmin);
e_widget_table_object_align_append(ol, ob,
0, 1, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmin = eina_list_append(cfdata->gui.rmin, ob);
e_widget_on_change_hook_set(ob, _cb_min_changed, cfdata);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_NONE, rmax);
e_widget_table_object_align_append(ol, ob,
1, 1, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmax = eina_list_append(cfdata->gui.rmax, ob);
e_widget_on_change_hook_set(ob, _cb_max_changed, cfdata);
ob = e_widget_label_add(evas, _("none"));
e_widget_table_object_align_append(ol, ob,
2, 1, //place
1, 1, //span
0, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f minute"), 0.01, 1.0, 0, 0,
&(cfdata->powersave_none), NULL, 100);
e_widget_table_object_align_append(ol, ob,
3, 1, //place
1, 1, //span
1, 1, //fill
1, 1, //expand
0.5, 0.5 //align
);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_LOW, rmin);
e_widget_table_object_align_append(ol, ob,
0, 2, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmin = eina_list_append(cfdata->gui.rmin, ob);
e_widget_on_change_hook_set(ob, _cb_min_changed, cfdata);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_LOW, rmax);
e_widget_table_object_align_append(ol, ob,
1, 2, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmax = eina_list_append(cfdata->gui.rmax, ob);
e_widget_on_change_hook_set(ob, _cb_max_changed, cfdata);
ob = e_widget_label_add(evas, _("low"));
e_widget_table_object_align_append(ol, ob,
2, 2, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f minutes"), 1.0, 10.0, 1, 0,
&(cfdata->powersave_low), NULL, 100);
e_widget_table_object_align_append(ol, ob,
3, 2, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_MEDIUM, rmin);
e_widget_table_object_align_append(ol, ob,
0, 3, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmin = eina_list_append(cfdata->gui.rmin, ob);
e_widget_on_change_hook_set(ob, _cb_min_changed, cfdata);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_MEDIUM, rmax);
e_widget_table_object_align_append(ol, ob,
1, 3, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmax = eina_list_append(cfdata->gui.rmax, ob);
e_widget_on_change_hook_set(ob, _cb_max_changed, cfdata);
ob = e_widget_label_add(evas, _("medium"));
e_widget_table_object_align_append(ol, ob,
2, 3, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_slider_add(evas, 1, 0, _("%.0f minutes"), 10.0, 120.0, 1, 0,
&(cfdata->powersave_medium), NULL, 100);
e_widget_table_object_align_append(ol, ob,
3, 3, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_HIGH, rmin);
e_widget_table_object_align_append(ol, ob,
0, 4, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmin = eina_list_append(cfdata->gui.rmin, ob);
e_widget_on_change_hook_set(ob, _cb_min_changed, cfdata);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_HIGH, rmax);
e_widget_table_object_align_append(ol, ob,
1, 4, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmax = eina_list_append(cfdata->gui.rmax, ob);
e_widget_on_change_hook_set(ob, _cb_max_changed, cfdata);
ob = e_widget_label_add(evas, _("high"));
e_widget_table_object_align_append(ol, ob,
2, 4, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_slider_add(evas, 1, 0, _("%.0f minutes"), 120.0, 1200.0, 1, 0,
&(cfdata->powersave_high), NULL, 100);
e_widget_table_object_align_append(ol, ob,
3, 4, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_EXTREME, rmin);
e_widget_table_object_align_append(ol, ob,
0, 5, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmin = eina_list_append(cfdata->gui.rmin, ob);
e_widget_on_change_hook_set(ob, _cb_min_changed, cfdata);
ob = e_widget_radio_add(evas, NULL, E_POWERSAVE_MODE_EXTREME, rmax);
e_widget_table_object_align_append(ol, ob,
1, 5, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
cfdata->gui.rmax = eina_list_append(cfdata->gui.rmax, ob);
e_widget_on_change_hook_set(ob, _cb_max_changed, cfdata);
ob = e_widget_label_add(evas, _("extreme"));
e_widget_table_object_align_append(ol, ob,
2, 5, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
ob = e_widget_slider_add(evas, 1, 0, _("%.0f minutes"), 120.0, 2400.0, 1, 0,
&(cfdata->powersave_extreme), NULL, 100);
e_widget_table_object_align_append(ol, ob,
3, 5, //place
1, 1, //span
1, 1, //fill
0, 1, //expand
0.0, 0.5 //align
);
e_widget_toolbook_page_append(otb, NULL, _("Power managment"), ol,
0, 0, 1, 1, 0.5, 0.5);
e_widget_toolbook_page_show(otb, 0);
e_dialog_resizable_set(cfd->dia, 1);
return otb;
}
static void
_cb_min_changed(void *data, Evas_Object *obj __UNUSED__)
{
E_Config_Dialog_Data *cfdata;
Evas_Object *o;
cfdata = data;
if (!cfdata) return;
if (cfdata->powersave_max < cfdata->powersave_min)
{
o = eina_list_nth(cfdata->gui.rmax, cfdata->powersave_min);
e_widget_radio_toggle_set(o, EINA_TRUE);
e_widget_change(o);
}
}
static void
_cb_max_changed(void *data, Evas_Object *obj __UNUSED__)
{
E_Config_Dialog_Data *cfdata;
Evas_Object *o;
int toggle;
cfdata = data;
if (!cfdata) return;
if (cfdata->powersave_min > cfdata->powersave_max)
{
o = eina_list_nth(cfdata->gui.rmin, cfdata->powersave_max);
e_widget_radio_toggle_set(o, EINA_TRUE);
e_widget_change(o);
}
}

View File

@ -0,0 +1,9 @@
#ifdef E_TYPEDEFS
#else
#ifndef E_INT_CONFIG_POWERMANAGEMENT_H
#define E_INT_CONFIG_POWERMANAGEMENT_H
E_Config_Dialog *e_int_config_powermanagement(E_Container *con, const char *params __UNUSED__);
#endif
#endif

View File

@ -17,6 +17,7 @@ e_modapi_init(E_Module *m)
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "preferences-advanced");
e_configure_registry_item_add("advanced/performance", 20, _("Performance"), NULL, "preferences-system-performance", e_int_config_performance);
e_configure_registry_item_add("advanced/engine", 50, _("Engine"), NULL, "preferences-engine", e_int_config_engine);
e_configure_registry_item_add("advanced/powermanagement", 50, _("Power management"), NULL, "preferences-powermanagement", e_int_config_powermanagement);
conf_module = m;
e_module_delayed_set(m, 1);
return m;
@ -30,6 +31,7 @@ e_modapi_shutdown(E_Module *m __UNUSED__)
while ((cfd = e_config_dialog_get("E", "advanced/performance"))) e_object_del(E_OBJECT(cfd));
e_configure_registry_item_del("advanced/engine");
e_configure_registry_item_del("advanced/performance");
e_configure_registry_item_del("advanced/powermanagement");
e_configure_registry_category_del("advanced");
conf_module = NULL;
return 1;

View File

@ -8,6 +8,7 @@
#undef E_TYPEDEFS
#include "e_int_config_performance.h"
#include "e_int_config_engine.h"
#include "e_int_config_powermanagement.h"
EAPI extern E_Module_Api e_modapi;