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

Reply via email to