On Mon, 26 Mar 2012 00:22:41 +0200 Thomas Gstädtner <tho...@gstaedtner.net>
said:

that seems good enough for me. in svn! :)

> Allow the user to select what to do when the battery runs low:
> Suspend, Hibernate or Shutdown.
> 
> Signed-off-by: Thomas Gstädtner <tho...@gstaedtner.net>
> ---
>  src/modules/battery/e_mod_config.c |   16 ++++++++++++++--
>  src/modules/battery/e_mod_main.c   |    9 ++++++++-
>  src/modules/battery/e_mod_main.h   |    7 ++++++-
>  3 files changed, 28 insertions(+), 4 deletions(-)
> 
> diff --git a/src/modules/battery/e_mod_config.c
> b/src/modules/battery/e_mod_config.c index 048b6c6..75f8861 100644
> --- a/src/modules/battery/e_mod_config.c
> +++ b/src/modules/battery/e_mod_config.c
> @@ -13,6 +13,7 @@ struct _E_Config_Dialog_Data
>     int dismiss_alert;
>     int alert_timeout;
>     int suspend_below;
> +   int suspend_method;
>     int force_mode; // 0 == auto, 1 == batget, 2 == subsystem
>  #ifdef HAVE_ENOTIFY
>     int desktop_notifications;
> @@ -76,6 +77,7 @@ _fill_data(E_Config_Dialog_Data *cfdata)
>     cfdata->poll_interval = battery_config->poll_interval;
>     cfdata->alert_timeout = battery_config->alert_timeout;
>     cfdata->suspend_below = battery_config->suspend_below;
> +   cfdata->suspend_method = battery_config->suspend_method;
>     cfdata->force_mode = battery_config->force_mode;
>  #ifdef HAVE_EEZE
>     cfdata->fuzzy = battery_config->fuzzy;
> @@ -236,11 +238,19 @@ _advanced_create_widgets(E_Config_Dialog *cfd
> __UNUSED__, Evas *evas, E_Config_D NULL, &(cfdata->poll_interval), 100);
>     e_widget_table_object_append(o, ob, 0, 1, 1, 1, 1, 0, 1, 0);
>     
> -   ob = e_widget_label_add(evas, _("Hibernate when below:"));
> +   rg = e_widget_radio_group_new(&(cfdata->suspend_method));
> +   ob = e_widget_radio_add(evas, _("Suspend when below:"), 0, rg);
> +   e_widget_on_change_hook_set(ob, _cb_radio_changed, cfdata);
>     e_widget_table_object_append(o, ob, 0, 2, 1, 1, 1, 0, 1, 0);
> +   ob = e_widget_radio_add(evas, _("Hibernate when below:"), 1, rg);
> +   e_widget_on_change_hook_set(ob, _cb_radio_changed, cfdata);
> +   e_widget_table_object_append(o, ob, 0, 3, 1, 1, 1, 0, 1, 0);
> +   ob = e_widget_radio_add(evas, _("Shutdown when below:"), 2, rg);
> +   e_widget_on_change_hook_set(ob, _cb_radio_changed, cfdata);
> +   e_widget_table_object_append(o, ob, 0, 4, 1, 1, 1, 0, 1, 0);
>     ob = e_widget_slider_add(evas, 1, 0, _("%1.0f %%"), 0, 50, 1, 0, 
>                              NULL, &(cfdata->suspend_below), 100);
> -   e_widget_table_object_append(o, ob, 0, 3, 1, 1, 1, 0, 1, 0);
> +   e_widget_table_object_append(o, ob, 0, 5, 1, 1, 1, 0, 1, 0);
>     
>     e_widget_toolbook_page_append(otb, NULL, _("Polling"), o, 1, 0, 1, 0, 
>                                   0.5, 0.0);
> @@ -334,6 +344,7 @@ _advanced_apply_data(E_Config_Dialog *cfd __UNUSED__,
> E_Config_Dialog_Data *cfda 
>     battery_config->force_mode = cfdata->force_mode;
>     battery_config->suspend_below = cfdata->suspend_below;
> +   battery_config->suspend_method = cfdata->suspend_method;
>  
>     _battery_config_updated();
>     e_config_save_queue();
> @@ -352,6 +363,7 @@ _advanced_check_changed(E_Config_Dialog *cfd __UNUSED__,
> E_Config_Dialog_Data *c (cfdata->poll_interval !=
> battery_config->poll_interval) || (cfdata->alert_timeout !=
> battery_config->alert_timeout) || (cfdata->suspend_below !=
> battery_config->suspend_below) ||
> +        (cfdata->suspend_method != battery_config->suspend_method) ||
>  #ifdef HAVE_EEZE
>             (cfdata->fuzzy != battery_config->fuzzy) ||
>  #endif           
> diff --git a/src/modules/battery/e_mod_main.c
> b/src/modules/battery/e_mod_main.c index 3cf9671..b29a1aa 100644
> --- a/src/modules/battery/e_mod_main.c
> +++ b/src/modules/battery/e_mod_main.c
> @@ -610,7 +610,14 @@ _battery_update(int full, int time_left, int time_full,
> Eina_Bool have_battery, if ((have_battery) && (!have_power) && (full >= 0) &&
>              (battery_config->suspend_below > 0) &&
>              (full < battery_config->suspend_below))
> -           e_sys_action_do(E_SYS_HIBERNATE, NULL);
> +       {
> +          if (battery_config->suspend_method == SUSPEND) 
> +               e_sys_action_do(E_SYS_SUSPEND, NULL);
> +          else if (battery_config->suspend_method == HIBERNATE)
> +            e_sys_action_do(E_SYS_HIBERNATE, NULL);
> +          else if (battery_config->suspend_method == SHUTDOWN)
> +            e_sys_action_do(E_SYS_HALT, NULL);
> +       }
>       }
>     if (!have_battery)
>       e_powersave_mode_set(E_POWERSAVE_MODE_LOW);
> diff --git a/src/modules/battery/e_mod_main.h
> b/src/modules/battery/e_mod_main.h index 6f347c8..d1bf8ec 100644
> --- a/src/modules/battery/e_mod_main.h
> +++ b/src/modules/battery/e_mod_main.h
> @@ -19,6 +19,10 @@ typedef struct _Config       Config;
>  #define NOSUBSYSTEM 1
>  #define SUBSYSTEM 2
>  
> +#define SUSPEND 0
> +#define HIBERNATE 1
> +#define SHUTDOWN 2
> +
>  #define POPUP_DEBOUNCE_CYCLES  2
>  
>  struct _Config
> @@ -28,7 +32,8 @@ struct _Config
>     int              alert;   /* Alert on minutes remaining */
>     int                   alert_p;    /* Alert on percentage remaining */
>     int              alert_timeout;  /* Popup dismissal timeout */
> -   int              suspend_below;  /* Suspend if batter drops below this
> level */
> +   int              suspend_below;  /* Suspend if battery drops below this
> level */
> +   int              suspend_method; /* Method used to suspend the machine */
>     int              force_mode; /* force use of batget or hal */
>     /* just config state */
>     E_Module        *module;
> -- 
> 1.7.8.5
> 
> 
> ------------------------------------------------------------------------------
> This SF email is sponsosred by:
> Try Windows Azure free for 90 days Click Here 
> http://p.sf.net/sfu/sfd2d-msazure
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to