This diff was made with the -u parameter. Enjoy.
Index: data/themes/default_battery.edc =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/data/themes/default_battery.edc,v retrieving revision 1.2 diff -u -r1.2 default_battery.edc --- data/themes/default_battery.edc 10 Jan 2005 22:33:53 -0000 1.2 +++ data/themes/default_battery.edc 11 Jan 2005 03:51:52 -0000 @@ -28,6 +28,7 @@ part { name: "battery"; clip_to: "fade_clip"; + clip_to: "pulse_clip"; description { state: "default" 0.0; aspect: 0.669291339 0.669291339; @@ -206,6 +207,23 @@ color: 255 255 255 128; } } + part { + name: "pulse_clip"; + type: RECT; + mouse_events: 0; + description { + state: "default" 0.0; + color: 255 255 255 255; + } + description { + state: "faded" 1.0; + color: 255 255 255 255; + } + description { + state: "faded" 0.0; + color: 255 255 255 0; + } + } } programs { program { @@ -243,6 +261,30 @@ action: STATE_SET "faded" 0.0; target: "fade_clip"; } + program { + name: "pulse"; + signal: "pulse"; + source: ""; + action: STATE_SET "faded" 0.0; + transition: ACCELERATE 0.3; + after: "pulse2"; + target: "pulse_clip"; + } + program { + name: "pulse2"; + signal: "pulse2"; + source: ""; + action: STATE_SET "faded" 1.0; + transition: ACCELERATE 0.1; + target: "pulse_clip"; + } + program { + name: "pulsestop"; + signal: "pulsestop"; + source: ""; + action: STATE_SET "default" 0.0; + target: "pulse_clip"; + } } } Index: src/modules/battery/e_mod_main.c =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/battery/e_mod_main.c,v retrieving revision 1.8 diff -u -r1.8 e_mod_main.c --- src/modules/battery/e_mod_main.c 4 Jan 2005 14:09:56 -0000 1.8 +++ src/modules/battery/e_mod_main.c 11 Jan 2005 03:51:54 -0000 @@ -58,6 +58,8 @@ { if (m->config_menu) { + _battery_config_menu_del(e, e->config_menu_alarm); + _battery_config_menu_del(e, e->config_menu_poll); _battery_config_menu_del(e, m->config_menu); m->config_menu = NULL; } @@ -117,6 +119,7 @@ E_CONFIG_VAL(D, T, x, DOUBLE); E_CONFIG_VAL(D, T, y, DOUBLE); E_CONFIG_VAL(D, T, poll_time, DOUBLE); + E_CONFIG_VAL(D, T, alarm, INT); e->conf = e_config_domain_load("module.battery", e->conf_edd); if (!e->conf) @@ -125,12 +128,14 @@ e->conf->width = 64; e->conf->x = 1.0; e->conf->y = 1.0; - e->conf->poll_time = 30.0; + e->conf->poll_time = 30.0; + e->conf->alarm = 30; } E_CONFIG_LIMIT(e->conf->width, 2, 256); E_CONFIG_LIMIT(e->conf->x, 0.0, 1.0); E_CONFIG_LIMIT(e->conf->y, 0.0, 1.0); E_CONFIG_LIMIT(e->conf->poll_time, 0.5, 1000.0); + E_CONFIG_LIMIT(e->conf->alarm, 0, 60); managers = e_manager_list(); for (l = managers; l; l = l->next) @@ -169,6 +174,69 @@ } static void +_battery_menu_alarm_10(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Battery *e; + + e = data; + e->conf->alarm = 10; +} + +static void +_battery_menu_alarm_20(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Battery *e; + + e = data; + e->conf->alarm = 20; +} + +static void +_battery_menu_alarm_30(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Battery *e; + + e = data; + e->conf->alarm = 30; +} + +static void +_battery_menu_alarm_40(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Battery *e; + + e = data; + e->conf->alarm = 40; +} + +static void +_battery_menu_alarm_50(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Battery *e; + + e = data; + e->conf->alarm = 50; +} + +static void +_battery_menu_alarm_60(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Battery *e; + + e = data; + e->conf->alarm = 60; +} + +static void +_battery_menu_alarm_disable(void *data, E_Menu *m, E_Menu_Item *mi) +{ + Battery *e; + + e = data; + e->conf->alarm = 0; +} + +static void _battery_menu_fast(void *data, E_Menu *m, E_Menu_Item *mi) { Battery *e; @@ -237,6 +305,59 @@ mn = e_menu_new(); mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "Disable"); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (e->conf->alarm == 0) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _battery_menu_alarm_disable, e); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "10 mins"); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (e->conf->alarm == 10) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _battery_menu_alarm_10, e); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "20 mins"); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (e->conf->alarm == 20) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _battery_menu_alarm_20, e); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "30 mins"); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (e->conf->alarm == 30) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _battery_menu_alarm_30, e); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "40 mins"); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (e->conf->alarm == 40) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _battery_menu_alarm_40, e); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "50 mins"); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (e->conf->alarm == 50) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _battery_menu_alarm_50, e); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "1 hour"); + e_menu_item_radio_set(mi, 1); + e_menu_item_radio_group_set(mi, 1); + if (e->conf->alarm == 60) e_menu_item_toggle_set(mi, 1); + e_menu_item_callback_set(mi, _battery_menu_alarm_60, e); + + e->config_menu_alarm = mn; + + mn = e_menu_new(); + + mi = e_menu_item_new(mn); e_menu_item_label_set(mi, "Check Fast (1 sec)"); e_menu_item_radio_set(mi, 1); e_menu_item_radio_group_set(mi, 1); @@ -271,6 +392,18 @@ if (e->conf->poll_time == 60.0) e_menu_item_toggle_set(mi, 1); e_menu_item_callback_set(mi, _battery_menu_very_slow, e); + e->config_menu_poll = mn; + + mn = e_menu_new(); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "Set Poll Time"); + e_menu_item_submenu_set(mi, e->config_menu_poll); + + mi = e_menu_item_new(mn); + e_menu_item_label_set(mi, "Set Alarm"); + e_menu_item_submenu_set(mi, e->config_menu_alarm); + e->config_menu = mn; return mn; @@ -619,11 +752,28 @@ { edje_object_signal_emit(ef->bat_object, "charge", ""); ef->battery_prev_ac = 1; + + edje_object_signal_emit(ef->bat_object, "pulsestop", ""); + ef->bat->alarm_triggered = 0; } - else if ((discharging) && (ef->battery_prev_ac != 0)) + else if (discharging) { - edje_object_signal_emit(ef->bat_object, "discharge", ""); - ef->battery_prev_ac = 0; + if (ef->battery_prev_ac != 0) + { + edje_object_signal_emit(ef->bat_object, "discharge", ""); + ef->battery_prev_ac = 0; + } + if((hours*60+minutes) <= ef->bat->conf->alarm) + { + if( !(ef->bat->alarm_triggered)) + { + e_error_dialog_show("Battery Running Low", + "Your battery is running low.\n" + "You may wish to switch to an AC source."); + } + edje_object_signal_emit(ef->bat_object, "pulse", ""); + ef->bat->alarm_triggered = 1; + } } if (level_unknown) { @@ -645,7 +795,7 @@ snprintf(buf, sizeof(buf), "%i:%02i", hours, minutes); edje_object_part_text_set(ef->bat_object, "time", buf); _battery_level_set(ef, (double)bat_val / 100.0); - } + } } else if (!battery) { @@ -765,7 +915,24 @@ minutes = (time_val / 60) % 60; snprintf(buf, sizeof(buf), "%i:%02i", hours, minutes); edje_object_part_text_set(ef->bat_object, "time", buf); - } + + if( (hours*60+minutes) <= ef->bat->conf->alarm) + { + if( !(ef->bat->alarm_triggered)) + { + e_error_dialog_show("Battery Running Low", + "Your battery is running low.\n" + "You may wish to switch to an AC source."); + } + edje_object_signal_emit(ef->bat_object, "pulse", ""); + ef->bat->alarm_triggered = 1; + } + else + { + edje_object_signal_emit(ef->bat_object, "pulsestop", ""); + ef->bat->alarm_triggered = 0; + } + } return 1; } Index: src/modules/battery/e_mod_main.h =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/battery/e_mod_main.h,v retrieving revision 1.3 diff -u -r1.3 e_mod_main.h --- src/modules/battery/e_mod_main.h 2 Jan 2005 02:39:44 -0000 1.3 +++ src/modules/battery/e_mod_main.h 11 Jan 2005 03:51:54 -0000 @@ -14,15 +14,19 @@ int width; double x, y; double poll_time; + int alarm; }; struct _Battery { E_Menu *config_menu; + E_Menu *config_menu_alarm; + E_Menu *config_menu_poll; Battery_Face *face; E_Config_DD *conf_edd; Config *conf; + int alarm_triggered; }; struct _Battery_Face