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