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:
a temperature monitor module for acpi... it's simple... and really only
handles 1 temperature guage - but it's useful. fixed stuff in battery
modules, added config menus... ibar size change menu only works after a
restart for now.. need to fix that.
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/battery/e_mod_main.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- e_mod_main.c 27 Dec 2004 13:47:01 -0000 1.5
+++ e_mod_main.c 2 Jan 2005 02:39:44 -0000 1.6
@@ -34,7 +34,7 @@
if (m->api->version < E_MODULE_API_VERSION)
{
e_error_dialog_show("Module API Error",
- "Error initializing Module: IBar\n"
+ "Error initializing Module: Battery\n"
"It requires a minimum module API version of: %i.\n"
"The module API advertized by Enlightenment is:
%i.\n"
"Aborting module.",
@@ -91,7 +91,10 @@
about(E_Module *m)
{
e_error_dialog_show("Enlightenment Battery Module",
- "A simple module to give E17 a battery meter.");
+ "A basic battery meter that uses either ACPI or APM\n"
+ "on Linux to monitor your battery and AC power adaptor\n"
+ "status. This will only work under Linux and is only\n"
+ "as accurate as your BIOS or kernel drivers.");
return 1;
}
@@ -113,7 +116,8 @@
E_CONFIG_VAL(D, T, width, INT);
E_CONFIG_VAL(D, T, x, DOUBLE);
E_CONFIG_VAL(D, T, y, DOUBLE);
-
+ E_CONFIG_VAL(D, T, poll_time, DOUBLE);
+
e->conf = e_config_domain_load("module.battery", e->conf_edd);
if (!e->conf)
{
@@ -121,10 +125,12 @@
e->conf->width = 64;
e->conf->x = 1.0;
e->conf->y = 1.0;
+ e->conf->poll_time = 30.0;
}
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);
managers = e_manager_list();
for (l = managers; l; l = l->next)
@@ -162,18 +168,109 @@
free(e);
}
+static void
+_battery_menu_fast(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+ Battery *e;
+
+ e = data;
+ e->conf->poll_time = 1.0;
+ ecore_timer_del(e->face->battery_check_timer);
+ e->face->battery_check_timer =
ecore_timer_add(e->face->bat->conf->poll_time, _battery_cb_check, e->face);
+ e_config_save_queue();
+}
+
+static void
+_battery_menu_medium(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+ Battery *e;
+
+ e = data;
+ e->conf->poll_time = 5.0;
+ ecore_timer_del(e->face->battery_check_timer);
+ e->face->battery_check_timer =
ecore_timer_add(e->face->bat->conf->poll_time, _battery_cb_check, e->face);
+ e_config_save_queue();
+}
+
+static void
+_battery_menu_normal(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+ Battery *e;
+
+ e = data;
+ e->conf->poll_time = 10.0;
+ ecore_timer_del(e->face->battery_check_timer);
+ e->face->battery_check_timer =
ecore_timer_add(e->face->bat->conf->poll_time, _battery_cb_check, e->face);
+ e_config_save_queue();
+}
+
+static void
+_battery_menu_slow(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+ Battery *e;
+
+ e = data;
+ e->conf->poll_time = 30.0;
+ ecore_timer_del(e->face->battery_check_timer);
+ e->face->battery_check_timer =
ecore_timer_add(e->face->bat->conf->poll_time, _battery_cb_check, e->face);
+ e_config_save_queue();
+}
+
+static void
+_battery_menu_very_slow(void *data, E_Menu *m, E_Menu_Item *mi)
+{
+ Battery *e;
+
+ e = data;
+ e->conf->poll_time = 60.0;
+ ecore_timer_del(e->face->battery_check_timer);
+ e->face->battery_check_timer =
ecore_timer_add(e->face->bat->conf->poll_time, _battery_cb_check, e->face);
+ e_config_save_queue();
+}
+
static E_Menu *
_battery_config_menu_new(Battery *e)
{
E_Menu *mn;
E_Menu_Item *mi;
- /* FIXME: hook callbacks to each menu item */
mn = e_menu_new();
mi = e_menu_item_new(mn);
- e_menu_item_label_set(mi, "(Unused)");
-/* e_menu_item_callback_set(mi, _battery_cb_time_set, e);*/
+ 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);
+ if (e->conf->poll_time == 1.0) e_menu_item_toggle_set(mi, 1);
+ e_menu_item_callback_set(mi, _battery_menu_fast, e);
+
+ mi = e_menu_item_new(mn);
+ e_menu_item_label_set(mi, "Check Medium (5 sec)");
+ e_menu_item_radio_set(mi, 1);
+ e_menu_item_radio_group_set(mi, 1);
+ if (e->conf->poll_time == 5.0) e_menu_item_toggle_set(mi, 1);
+ e_menu_item_callback_set(mi, _battery_menu_medium, e);
+
+ mi = e_menu_item_new(mn);
+ e_menu_item_label_set(mi, "Check Normal (10 sec)");
+ e_menu_item_radio_set(mi, 1);
+ e_menu_item_radio_group_set(mi, 1);
+ if (e->conf->poll_time == 10.0) e_menu_item_toggle_set(mi, 1);
+ e_menu_item_callback_set(mi, _battery_menu_normal, e);
+
+ mi = e_menu_item_new(mn);
+ e_menu_item_label_set(mi, "Check Slow (30 sec)");
+ e_menu_item_radio_set(mi, 1);
+ e_menu_item_radio_group_set(mi, 1);
+ if (e->conf->poll_time == 30.0) e_menu_item_toggle_set(mi, 1);
+ e_menu_item_callback_set(mi, _battery_menu_slow, e);
+
+ mi = e_menu_item_new(mn);
+ e_menu_item_label_set(mi, "Check Very Slow (60 sec)");
+ e_menu_item_radio_set(mi, 1);
+ e_menu_item_radio_group_set(mi, 1);
+ 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 = mn;
return mn;
@@ -230,7 +327,7 @@
ef->battery_prev_drain = 1;
ef->battery_prev_ac = -1;
ef->battery_prev_battery = -1;
- ef->battery_check_timer = ecore_timer_add(1.0, _battery_cb_check, ef);
+ ef->battery_check_timer = ecore_timer_add(ef->bat->conf->poll_time,
_battery_cb_check, ef);
_battery_cb_check(ef);
@@ -434,9 +531,9 @@
char *name;
name = bats->data;
+ bats = evas_list_remove_list(bats, bats);
if ((!strcmp(name, ".")) || (!strcmp(name, "..")))
{
- bats = evas_list_remove_list(bats, bats);
free(name);
continue;
}
@@ -447,12 +544,12 @@
int design_cap = 0;
int last_full = 0;
- fgets(buf2, sizeof(buf2), f); buf[sizeof(buf2) - 1] = 0;
- fgets(buf2, sizeof(buf2), f); buf[sizeof(buf2) - 1] = 0;
+ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
+ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
sscanf(buf2, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown")) design_cap_unknown = 1;
else sscanf(buf2, "%*[^:]: %i %*s", &design_cap);
- fgets(buf2, sizeof(buf2), f); buf[sizeof(buf2) - 1] = 0;
+ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
sscanf(buf2, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown")) last_full_unknown = 1;
else sscanf(buf2, "%*[^:]: %i %*s", &last_full);
@@ -470,17 +567,17 @@
int rate = 1;
int level = 0;
- fgets(buf2, sizeof(buf2), f); buf[sizeof(buf2) - 1] = 0;
+ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
sscanf(buf2, "%*[^:]: %250s", present);
- fgets(buf2, sizeof(buf2), f); buf[sizeof(buf2) - 1] = 0;
+ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
sscanf(buf2, "%*[^:]: %250s", capacity_state);
- fgets(buf2, sizeof(buf2), f); buf[sizeof(buf2) - 1] = 0;
+ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
sscanf(buf2, "%*[^:]: %250s", charging_state);
- fgets(buf2, sizeof(buf2), f); buf[sizeof(buf2) - 1] = 0;
+ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
sscanf(buf2, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown")) rate_unknown = 1;
else sscanf(buf2, "%*[^:]: %i %*s", &rate);
- fgets(buf2, sizeof(buf2), f); buf[sizeof(buf2) - 1] = 0;
+ fgets(buf2, sizeof(buf2), f); buf2[sizeof(buf2) - 1] = 0;
sscanf(buf2, "%*[^:]: %250s %*s", buf);
if (!strcmp(buf, "unknown")) level_unknown = 1;
else sscanf(buf2, "%*[^:]: %i %*s", &level);
@@ -491,7 +588,6 @@
bat_drain += rate;
bat_level += level;
}
- bats = evas_list_remove_list(bats, bats);
free(name);
}
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/battery/e_mod_main.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -3 -r1.2 -r1.3
--- e_mod_main.h 27 Dec 2004 10:49:46 -0000 1.2
+++ e_mod_main.h 2 Jan 2005 02:39:44 -0000 1.3
@@ -13,6 +13,7 @@
{
int width;
double x, y;
+ double poll_time;
};
struct _Battery
-------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs