Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/battery Modified Files: e_mod_main.c e_mod_main.h Log Message: battery alarm from nick =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/battery/e_mod_main.c,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- e_mod_main.c 4 Jan 2005 14:09:56 -0000 1.8 +++ e_mod_main.c 11 Jan 2005 07:08:37 -0000 1.9 @@ -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,20 +119,23 @@ 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) { - e->conf = E_NEW(Config, 1); - e->conf->width = 64; - e->conf->x = 1.0; - e->conf->y = 1.0; - e->conf->poll_time = 30.0; + e->conf = E_NEW(Config, 1); + e->conf->width = 64; + e->conf->x = 1.0; + e->conf->y = 1.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; @@ -443,7 +576,7 @@ if (ef->fy + ef->fw > sh) ef->fw = sh - ef->fy; evas_object_resize(ef->bat_object, ef->fw, ef->fw); evas_object_resize(ef->event_object, ef->fw, ef->fw); - } + } ef->xx = ev->cur.canvas.x; ef->yy = ev->cur.canvas.y; } @@ -614,38 +747,54 @@ if ((charging) || (discharging)) { - ef->battery_prev_battery = 1; - if ((charging ) && (ef->battery_prev_ac != 1)) - { - edje_object_signal_emit(ef->bat_object, "charge", ""); - ef->battery_prev_ac = 1; - } - else if ((discharging) && (ef->battery_prev_ac != 0)) - { - edje_object_signal_emit(ef->bat_object, "discharge", ""); - ef->battery_prev_ac = 0; - } + ef->battery_prev_battery = 1; + if ((charging ) && (ef->battery_prev_ac != 1)) + { + 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) + { + 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) - { - edje_object_part_text_set(ef->bat_object, "reading", "BAD DIRVER"); - edje_object_part_text_set(ef->bat_object, "time", "--:--"); - _battery_level_set(ef, 0.0); - } + { + edje_object_part_text_set(ef->bat_object, "reading", "BAD DIRVER"); + edje_object_part_text_set(ef->bat_object, "time", "--:--"); + _battery_level_set(ef, 0.0); + } else if (rate_unknown) - { - snprintf(buf, sizeof(buf), "%i%%", bat_val); - edje_object_part_text_set(ef->bat_object, "reading", buf); - edje_object_part_text_set(ef->bat_object, "time", "--:--"); - _battery_level_set(ef, (double)bat_val / 100.0); - } + { + snprintf(buf, sizeof(buf), "%i%%", bat_val); + edje_object_part_text_set(ef->bat_object, "reading", buf); + edje_object_part_text_set(ef->bat_object, "time", "--:--"); + _battery_level_set(ef, (double)bat_val / 100.0); + } else - { - snprintf(buf, sizeof(buf), "%i%%", bat_val); - edje_object_part_text_set(ef->bat_object, "reading", buf); - 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); - } + { + snprintf(buf, sizeof(buf), "%i%%", bat_val); + edje_object_part_text_set(ef->bat_object, "reading", buf); + 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) { @@ -723,7 +872,7 @@ } else { - switch( bat_stat ) + switch (bat_stat) { case 0: edje_object_part_text_set(ef->bat_object, "reading", "High"); @@ -747,25 +896,42 @@ if (ac_stat == 1) { - if ((ac_stat == 1) && (ef->battery_prev_ac == 0)) - { - edje_object_signal_emit(ef->bat_object, "charge", ""); - ef->battery_prev_ac = 1; - } - else if ((ac_stat == 0) && (ef->battery_prev_ac == 1)) - { - edje_object_signal_emit(ef->bat_object, "discharge", ""); - ef->battery_prev_ac = 0; - } - edje_object_part_text_set(ef->bat_object, "time", "--:--"); + if ((ac_stat == 1) && (ef->battery_prev_ac == 0)) + { + edje_object_signal_emit(ef->bat_object, "charge", ""); + ef->battery_prev_ac = 1; + } + else if ((ac_stat == 0) && (ef->battery_prev_ac == 1)) + { + edje_object_signal_emit(ef->bat_object, "discharge", ""); + ef->battery_prev_ac = 0; + } + edje_object_part_text_set(ef->bat_object, "time", "--:--"); } else { - hours = time_val / 3600; - minutes = (time_val / 60) % 60; - snprintf(buf, sizeof(buf), "%i:%02i", hours, minutes); - edje_object_part_text_set(ef->bat_object, "time", buf); - } + hours = time_val / 3600; + 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; } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/battery/e_mod_main.h,v retrieving revision 1.3 retrieving revision 1.4 diff -u -3 -r1.3 -r1.4 --- e_mod_main.h 2 Jan 2005 02:39:44 -0000 1.3 +++ e_mod_main.h 11 Jan 2005 07:08:38 -0000 1.4 @@ -14,15 +14,19 @@ int width; double x, y; double poll_time; + int alarm; }; struct _Battery { - E_Menu *config_menu; + 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 ------------------------------------------------------- The SF.Net email is sponsored by: Beat the post-holiday blues Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek. It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs