e: make e_powersave values configurable
SVN revision: 70698
This commit is contained in:
parent
bce6efef04
commit
7743a24db2
|
@ -524,4 +524,11 @@ group "E_Config" struct {
|
||||||
value "update.later" uchar: 0;
|
value "update.later" uchar: 0;
|
||||||
value "xkb.only_label" int: 0;
|
value "xkb.only_label" int: 0;
|
||||||
value "xkb.default_model" string: "default";
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,6 +211,13 @@ group "E_Config" struct {
|
||||||
value "xsettings.xft_hinting" int: 0;
|
value "xsettings.xft_hinting" int: 0;
|
||||||
value "update.check" uchar: 1;
|
value "update.check" uchar: 1;
|
||||||
value "update.later" uchar: 0;
|
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 "syscon.actions" list {
|
||||||
group "E_Config_Syscon_Action" struct {
|
group "E_Config_Syscon_Action" struct {
|
||||||
value "action" string: "halt";
|
value "action" string: "halt";
|
||||||
|
|
|
@ -204,6 +204,13 @@ group "E_Config" struct {
|
||||||
value "xsettings.xft_hinting" int: 0;
|
value "xsettings.xft_hinting" int: 0;
|
||||||
value "update.check" uchar: 1;
|
value "update.check" uchar: 1;
|
||||||
value "update.later" uchar: 0;
|
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 "syscon.actions" list {
|
||||||
group "E_Config_Syscon_Action" struct {
|
group "E_Config_Syscon_Action" struct {
|
||||||
value "action" string: "halt";
|
value "action" string: "halt";
|
||||||
|
|
|
@ -898,6 +898,14 @@ e_config_init(void)
|
||||||
E_CONFIG_VAL(D, T, deskenv.load_gnome, UCHAR);
|
E_CONFIG_VAL(D, T, deskenv.load_gnome, UCHAR);
|
||||||
E_CONFIG_VAL(D, T, deskenv.load_kde, 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.enabled, UCHAR);
|
||||||
E_CONFIG_VAL(D, T, xsettings.match_e17_theme, UCHAR);
|
E_CONFIG_VAL(D, T, xsettings.match_e17_theme, UCHAR);
|
||||||
E_CONFIG_VAL(D, T, xsettings.match_e17_icon_theme, UCHAR);
|
E_CONFIG_VAL(D, T, xsettings.match_e17_icon_theme, UCHAR);
|
||||||
|
@ -1191,6 +1199,16 @@ e_config_load(void)
|
||||||
COPYVAL(update.later);
|
COPYVAL(update.later);
|
||||||
IFCFGEND;
|
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->config_version = E_CONFIG_FILE_VERSION;
|
||||||
_e_config_free(tcfg);
|
_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->exec.show_exit_dialog, 0, 1);
|
||||||
|
|
||||||
E_CONFIG_LIMIT(e_config->null_container_win, 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 */
|
/* FIXME: disabled auto apply because it causes problems */
|
||||||
e_config->cfgdlg_auto_apply = 0;
|
e_config->cfgdlg_auto_apply = 0;
|
||||||
/* FIXME: desklock personalized password id disabled for security reasons */
|
/* FIXME: desklock personalized password id disabled for security reasons */
|
||||||
|
|
|
@ -318,7 +318,17 @@ struct _E_Config
|
||||||
unsigned char idle_dim; // GUI
|
unsigned char idle_dim; // GUI
|
||||||
double timer; // GUI
|
double timer; // GUI
|
||||||
} backlight;
|
} backlight;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
double none;
|
||||||
|
double low;
|
||||||
|
double medium;
|
||||||
|
double high;
|
||||||
|
double extreme;
|
||||||
|
E_Powersave_Mode min;
|
||||||
|
E_Powersave_Mode max;
|
||||||
|
} powersave;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
unsigned char load_xrdb; // GUI
|
unsigned char load_xrdb; // GUI
|
||||||
unsigned char load_xmodmap; // GUI
|
unsigned char load_xmodmap; // GUI
|
||||||
|
|
|
@ -9,14 +9,17 @@ struct _E_Powersave_Deferred_Action
|
||||||
|
|
||||||
/* local subsystem functions */
|
/* local subsystem functions */
|
||||||
static Eina_Bool _e_powersave_cb_deferred_timer(void *data);
|
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_mode_eval(void);
|
||||||
static void _e_powersave_event_update_free(void *data __UNUSED__, void *event);
|
static void _e_powersave_event_update_free(void *data __UNUSED__, void *event);
|
||||||
|
|
||||||
/* local subsystem globals */
|
/* local subsystem globals */
|
||||||
EAPI int E_EVENT_POWERSAVE_UPDATE = 0;
|
EAPI int E_EVENT_POWERSAVE_UPDATE = 0;
|
||||||
|
EAPI int E_EVENT_POWERSAVE_CONFIG_UPDATE = 0;
|
||||||
static int walking_deferred_actions = 0;
|
static int walking_deferred_actions = 0;
|
||||||
static Eina_List *deferred_actions = NULL;
|
static Eina_List *deferred_actions = NULL;
|
||||||
static Ecore_Timer *deferred_timer = 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_min = E_POWERSAVE_MODE_NONE;
|
||||||
static E_Powersave_Mode powersave_mode_max = E_POWERSAVE_MODE_EXTREME;
|
static E_Powersave_Mode powersave_mode_max = E_POWERSAVE_MODE_EXTREME;
|
||||||
static E_Powersave_Mode powersave_mode = E_POWERSAVE_MODE_LOW;
|
static E_Powersave_Mode powersave_mode = E_POWERSAVE_MODE_LOW;
|
||||||
|
@ -28,6 +31,7 @@ e_powersave_init(void)
|
||||||
{
|
{
|
||||||
_e_powersave_mode_eval();
|
_e_powersave_mode_eval();
|
||||||
E_EVENT_POWERSAVE_UPDATE = ecore_event_type_new();
|
E_EVENT_POWERSAVE_UPDATE = ecore_event_type_new();
|
||||||
|
E_EVENT_POWERSAVE_CONFIG_UPDATE = ecore_event_type_new();
|
||||||
return 1;
|
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_add(void (*func) (void *data), const void *data)
|
||||||
{
|
{
|
||||||
E_Powersave_Deferred_Action *pa;
|
E_Powersave_Deferred_Action *pa;
|
||||||
|
|
||||||
pa = calloc(1, sizeof(E_Powersave_Deferred_Action));
|
pa = calloc(1, sizeof(E_Powersave_Deferred_Action));
|
||||||
if (!pa) return NULL;
|
if (!pa) return NULL;
|
||||||
if (deferred_timer) ecore_timer_del(deferred_timer);
|
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
|
EAPI void
|
||||||
e_powersave_mode_set(E_Powersave_Mode mode)
|
e_powersave_mode_set(E_Powersave_Mode mode)
|
||||||
{
|
{
|
||||||
E_Event_Powersave_Update *ev;
|
E_Event_Powersave_Update *ev;
|
||||||
|
|
||||||
if (mode < powersave_mode_min) mode = powersave_mode_min;
|
if (mode < e_config->powersave.min) mode = e_config->powersave.min;
|
||||||
else if (mode > powersave_mode_max) mode = powersave_mode_max;
|
else if (mode > e_config->powersave.max) mode = e_config->powersave.max;
|
||||||
if (powersave_mode == mode) return;
|
if (powersave_mode == mode) return;
|
||||||
printf("CHANGE PW SAVE MODE TO %i / %i\n", (int)mode, E_POWERSAVE_MODE_EXTREME);
|
printf("CHANGE PW SAVE MODE TO %i / %i\n", (int)mode, E_POWERSAVE_MODE_EXTREME);
|
||||||
powersave_mode = mode;
|
powersave_mode = mode;
|
||||||
|
@ -108,17 +98,6 @@ e_powersave_mode_set(E_Powersave_Mode mode)
|
||||||
_e_powersave_mode_eval();
|
_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
|
EAPI E_Powersave_Mode
|
||||||
e_powersave_mode_get(void)
|
e_powersave_mode_get(void)
|
||||||
|
@ -126,6 +105,18 @@ e_powersave_mode_get(void)
|
||||||
return powersave_mode;
|
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 */
|
/* local subsystem functions */
|
||||||
|
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
|
@ -148,24 +139,23 @@ static void
|
||||||
_e_powersave_mode_eval(void)
|
_e_powersave_mode_eval(void)
|
||||||
{
|
{
|
||||||
double t = 0.0;
|
double t = 0.0;
|
||||||
|
|
||||||
switch (powersave_mode)
|
switch (powersave_mode)
|
||||||
{
|
{
|
||||||
/* FIXME: these values are hardcoded - should be configurable */
|
|
||||||
case E_POWERSAVE_MODE_NONE:
|
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;
|
break;
|
||||||
case E_POWERSAVE_MODE_LOW:
|
case E_POWERSAVE_MODE_LOW:
|
||||||
t = 5.0;
|
t = e_config->powersave.low;
|
||||||
break;
|
break;
|
||||||
case E_POWERSAVE_MODE_MEDIUM:
|
case E_POWERSAVE_MODE_MEDIUM:
|
||||||
t = 60.0;
|
t = e_config->powersave.medium;
|
||||||
break;
|
break;
|
||||||
case E_POWERSAVE_MODE_HIGH:
|
case E_POWERSAVE_MODE_HIGH:
|
||||||
t = 300.0;
|
t = e_config->powersave.high;
|
||||||
break;
|
break;
|
||||||
case E_POWERSAVE_MODE_EXTREME:
|
case E_POWERSAVE_MODE_EXTREME:
|
||||||
t = 1200.0;
|
t = e_config->powersave.extreme;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
|
@ -186,3 +176,4 @@ _e_powersave_event_update_free(void *data __UNUSED__, void *event)
|
||||||
{
|
{
|
||||||
free(event);
|
free(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@ typedef struct _E_Event_Powersave_Update E_Event_Powersave_Update;
|
||||||
#define E_POWERSAVE_H
|
#define E_POWERSAVE_H
|
||||||
|
|
||||||
extern EAPI int E_EVENT_POWERSAVE_UPDATE;
|
extern EAPI int E_EVENT_POWERSAVE_UPDATE;
|
||||||
|
extern EAPI int E_EVENT_POWERSAVE_CONFIG_UPDATE;
|
||||||
|
|
||||||
struct _E_Event_Powersave_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 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_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 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);
|
EAPI E_Powersave_Mode e_powersave_mode_get(void);
|
||||||
|
|
||||||
/* FIXME: in the powersave system add things like pre-loading entire files
|
/* FIXME: in the powersave system add things like pre-loading entire files
|
||||||
|
|
|
@ -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_destroy(Instance *inst);
|
||||||
static void _battery_warning_popup(Instance *inst, int time, double percent);
|
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 E_Config_DD *conf_edd = NULL;
|
||||||
|
static Ecore_Event_Handler *_handler = NULL;
|
||||||
|
|
||||||
Config *battery_config = NULL;
|
Config *battery_config = NULL;
|
||||||
|
|
||||||
|
@ -335,8 +338,6 @@ _battery_device_update(void)
|
||||||
if (time_full < 1) time_full = -1;
|
if (time_full < 1) time_full = -1;
|
||||||
|
|
||||||
_battery_update(full, time_left, time_full, have_battery, have_power);
|
_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
|
static void
|
||||||
_battery_update(int full, int time_left, int time_full, Eina_Bool have_battery, Eina_Bool have_power)
|
_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 =
|
battery_config->batget_del_handler =
|
||||||
ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
|
ecore_event_handler_add(ECORE_EXE_EVENT_DEL,
|
||||||
_battery_cb_exe_del, NULL);
|
_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);
|
e_gadcon_provider_register(&_gadcon_class);
|
||||||
|
|
||||||
|
|
|
@ -23,7 +23,9 @@ module_la_SOURCES = e_mod_main.c \
|
||||||
e_int_config_performance.c \
|
e_int_config_performance.c \
|
||||||
e_int_config_performance.h \
|
e_int_config_performance.h \
|
||||||
e_int_config_engine.c \
|
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_LIBADD = @e_libs@ @dlopen_libs@
|
||||||
module_la_LDFLAGS = -module -avoid-version
|
module_la_LDFLAGS = -module -avoid-version
|
||||||
|
|
|
@ -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);
|
||||||
|
}
|
||||||
|
}
|
|
@ -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
|
|
@ -17,6 +17,7 @@ e_modapi_init(E_Module *m)
|
||||||
e_configure_registry_category_add("advanced", 80, _("Advanced"), NULL, "preferences-advanced");
|
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/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/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;
|
conf_module = m;
|
||||||
e_module_delayed_set(m, 1);
|
e_module_delayed_set(m, 1);
|
||||||
return m;
|
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));
|
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/engine");
|
||||||
e_configure_registry_item_del("advanced/performance");
|
e_configure_registry_item_del("advanced/performance");
|
||||||
|
e_configure_registry_item_del("advanced/powermanagement");
|
||||||
e_configure_registry_category_del("advanced");
|
e_configure_registry_category_del("advanced");
|
||||||
conf_module = NULL;
|
conf_module = NULL;
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#undef E_TYPEDEFS
|
#undef E_TYPEDEFS
|
||||||
#include "e_int_config_performance.h"
|
#include "e_int_config_performance.h"
|
||||||
#include "e_int_config_engine.h"
|
#include "e_int_config_engine.h"
|
||||||
|
#include "e_int_config_powermanagement.h"
|
||||||
|
|
||||||
EAPI extern E_Module_Api e_modapi;
|
EAPI extern E_Module_Api e_modapi;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue