Battery Config Dialog

SVN revision: 19020
This commit is contained in:
Christopher Michael 2005-12-14 22:46:51 +00:00
parent b6aa138b09
commit 8ddbb33327
5 changed files with 247 additions and 233 deletions

View File

@ -21,7 +21,9 @@ INCLUDES = -I. \
pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la
module_la_SOURCES = e_mod_main.c \
e_mod_main.h
e_mod_main.h \
e_mod_config.c \
e_mod_config.h
module_la_LIBADD = @e_libs@ @cf_libs@ @dlopen_libs@
module_la_LDFLAGS = -module -avoid-version
module_la_DEPENDENCIES = $(top_builddir)/config.h

View File

@ -0,0 +1,202 @@
#include "e.h"
#include "e_mod_main.h"
#include "config.h"
typedef struct _cfdata CFData;
typedef struct _Cfg_File_Data Cfg_File_Data;
struct _cfdata
{
Battery *bat;
double poll_time;
int alarm_time;
int poll_method;
int alarm_method;
};
struct _Cfg_File_Data
{
E_Config_Dialog *cfd;
char *file;
};
/* Protos */
static Evas_Object *_create_widgets(E_Config_Dialog *cfd, Evas *evas, Config *cfdata);
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, CFData *cfdata);
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata);
static int _basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata);
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata);
static int _advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata);
Battery *b = NULL;
void
e_int_config_battery(E_Container *con, Battery *bat)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View v;
b = bat;
v.create_cfdata = _create_data;
v.free_cfdata = _free_data;
v.basic.apply_cfdata = _basic_apply_data;
v.basic.create_widgets = _basic_create_widgets;
v.advanced.apply_cfdata = _advanced_apply_data;
v.advanced.create_widgets = _advanced_create_widgets;
cfd = e_config_dialog_new(con, _("Battery Module"), NULL, 0, &v, bat);
}
static void
_fill_data(CFData *cfdata)
{
double p;
int a;
/* Fill Data */
p = b->conf->poll_time;
cfdata->poll_time = p;
if ((p >= 1) && (p <= 5))
{
cfdata->poll_method = 1; //Fast
}
else if ((p > 5) && (p <= 10))
{
cfdata->poll_method = 10; //Normal
}
else if ((p > 10) && (p <= 30))
{
cfdata->poll_method = 30; //Slow
}
else if (p > 30)
{
cfdata->poll_method = 60; // Very Slow
}
a = b->conf->alarm;
cfdata->alarm_time = a;
if (a == 0)
{
cfdata->alarm_method = 0; //Disable
}
else if (a <=10)
{
cfdata->alarm_method = 10; // 10 mins
}
else if (a <=30)
{
cfdata->alarm_method = 30; // 10 mins
}
else if (a <=60)
{
cfdata->alarm_method = 60; // 10 mins
}
}
static void
*_create_data(E_Config_Dialog *cfd)
{
CFData *cfdata;
cfdata = E_NEW(CFData, 1);
return cfdata;
}
static void
_free_data(E_Config_Dialog *cfd, CFData *cfdata)
{
free(cfdata);
}
static Evas_Object
*_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata)
{
Evas_Object *o, *of, *ob;
E_Radio_Group *rg;
_fill_data(cfdata);
o = e_widget_list_add(evas, 0, 0);
of = e_widget_framelist_add(evas, _("Poll Time"), 0);
rg = e_widget_radio_group_new(&(cfdata->poll_method));
ob = e_widget_radio_add(evas, _("Fast"), 1, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Normal"), 10, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Slow"), 30, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("Very Slow"), 60, rg);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Alarm Time"), 0);
rg = e_widget_radio_group_new(&(cfdata->alarm_method));
ob = e_widget_radio_add(evas, _("Disable"), 0, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("10 Mins"), 10, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("30 Mins"), 30, rg);
e_widget_framelist_object_append(of, ob);
ob = e_widget_radio_add(evas, _("1 Hour"), 60, rg);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
return o;
}
static int
_basic_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
{
e_border_button_bindings_ungrab_all();
b->conf->poll_time = (double)cfdata->poll_method;
b->conf->alarm = cfdata->alarm_method;
e_border_button_bindings_grab_all();
e_config_save_queue();
_battery_face_cb_config_updated(b);
return 1;
}
static Evas_Object
*_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, CFData *cfdata)
{
Evas_Object *o, *of, *ob;
E_Radio_Group *rg;
/* Use Sliders for both cfg options */
_fill_data(cfdata);
o = e_widget_list_add(evas, 0, 0);
of = e_widget_framelist_add(evas, _("Poll Time"), 0);
ob = e_widget_slider_add(evas, 1, 0, _("%1.1f seconds"), 0.5, 1000.0, 0.5, 0, &(cfdata->poll_time), NULL, 200);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Alarm Time"), 0);
ob = e_widget_slider_add(evas, 1, 0, _("%1.0f minutes"), 0, 60, 1, 0, NULL, &(cfdata->alarm_time), 200);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
return o;
}
static int
_advanced_apply_data(E_Config_Dialog *cfd, CFData *cfdata)
{
e_border_button_bindings_ungrab_all();
b->conf->poll_time = cfdata->poll_time;
b->conf->alarm = cfdata->alarm_time;
e_border_button_bindings_grab_all();
e_config_save_queue();
_battery_face_cb_config_updated(b);
return 1;
}

View File

@ -0,0 +1,8 @@
#ifdef E_TYPEDEFS
#else
#ifndef E_MOD_CONFIG_H
#define E_MOD_CONFIG_H
#include "e_mod_main.h"
EAPI void e_int_config_battery(E_Container *con, Battery *b);
#endif
#endif

View File

@ -62,6 +62,8 @@ static void _battery_face_cb_menu_edit(void *data, E_Menu *m, E_Menu_It
static int _battery_int_get(char *buf);
static char *_battery_string_get(char *buf);
static void _battery_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi);
static E_Config_DD *conf_edd;
static E_Config_DD *conf_face_edd;
@ -194,6 +196,7 @@ _battery_new()
ef = _battery_face_new(con);
if (ef)
{
ef->battery = e;
e->faces = evas_list_append(e->faces, ef);
/* Config */
@ -214,13 +217,9 @@ _battery_new()
_battery_face_menu_new(ef);
/* Add main menu to face menu */
mi = e_menu_item_new(ef->menu);
e_menu_item_label_set(mi, _("Set Poll Time"));
e_menu_item_submenu_set(mi, e->config_menu_poll);
mi = e_menu_item_new(ef->menu);
e_menu_item_label_set(mi, _("Set Alarm"));
e_menu_item_submenu_set(mi, e->config_menu_alarm);
mi = e_menu_item_new(e->config_menu);
e_menu_item_label_set(mi, _("Config Dialog"));
e_menu_item_callback_set(mi, _battery_face_cb_menu_configure, ef);
mi = e_menu_item_new(e->config_menu);
e_menu_item_label_set(mi, con->name);
@ -251,8 +250,6 @@ _battery_shutdown(Battery *e)
evas_list_free(e->faces);
e_object_del(E_OBJECT(e->config_menu));
e_object_del(E_OBJECT(e->config_menu_poll));
e_object_del(E_OBJECT(e->config_menu_alarm));
ecore_timer_del(e->battery_check_timer);
@ -261,66 +258,6 @@ _battery_shutdown(Battery *e)
free(e);
}
static void
_battery_menu_alarm_10(void *data, E_Menu *m, E_Menu_Item *mi)
{
Battery *e;
e = data;
e->conf->alarm = 10;
e_config_save_queue();
}
static void
_battery_menu_alarm_20(void *data, E_Menu *m, E_Menu_Item *mi)
{
Battery *e;
e = data;
e->conf->alarm = 20;
e_config_save_queue();
}
static void
_battery_menu_alarm_30(void *data, E_Menu *m, E_Menu_Item *mi)
{
Battery *e;
e = data;
e->conf->alarm = 30;
e_config_save_queue();
}
static void
_battery_menu_alarm_40(void *data, E_Menu *m, E_Menu_Item *mi)
{
Battery *e;
e = data;
e->conf->alarm = 40;
e_config_save_queue();
}
static void
_battery_menu_alarm_50(void *data, E_Menu *m, E_Menu_Item *mi)
{
Battery *e;
e = data;
e->conf->alarm = 50;
e_config_save_queue();
}
static void
_battery_menu_alarm_60(void *data, E_Menu *m, E_Menu_Item *mi)
{
Battery *e;
e = data;
e->conf->alarm = 60;
e_config_save_queue();
}
static void
_battery_menu_alarm_disable(void *data, E_Menu *m, E_Menu_Item *mi)
{
@ -331,176 +268,13 @@ _battery_menu_alarm_disable(void *data, E_Menu *m, E_Menu_Item *mi)
e_config_save_queue();
}
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->battery_check_timer);
e->battery_check_timer = ecore_timer_add(e->conf->poll_time, _battery_cb_check, e);
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->battery_check_timer);
e->battery_check_timer = ecore_timer_add(e->conf->poll_time, _battery_cb_check, e);
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->battery_check_timer);
e->battery_check_timer = ecore_timer_add(e->conf->poll_time, _battery_cb_check, e);
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->battery_check_timer);
e->battery_check_timer = ecore_timer_add(e->conf->poll_time, _battery_cb_check, e);
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->battery_check_timer);
e->battery_check_timer = ecore_timer_add(e->conf->poll_time, _battery_cb_check, e);
e_config_save_queue();
}
static void
_battery_config_menu_new(Battery *e)
{
E_Menu *mn;
E_Menu_Item *mi;
/* Alarm */
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;
/* Check interval */
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);
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_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;
}
@ -583,6 +357,11 @@ _battery_face_menu_new(Battery_Face *face)
if (face->conf->enabled) e_menu_item_toggle_set(mi, 1);
e_menu_item_callback_set(mi, _battery_face_cb_menu_enabled, face);
*/
/* Config */
mi = e_menu_item_new(mn);
e_menu_item_label_set(mi, _("Config Dialog"));
e_menu_item_callback_set(mi, _battery_face_cb_menu_configure, face);
/* Edit */
mi = e_menu_item_new(mn);
@ -1789,3 +1568,23 @@ _battery_string_get(char *buf)
if (q) *q = 0;
return strdup(p);
}
static void
_battery_face_cb_menu_configure(void *data, E_Menu *m, E_Menu_Item *mi)
{
Battery_Face *face;
face = data;
if (!face) return;
e_int_config_battery(face->con, face->battery);
}
void
_battery_face_cb_config_updated(Battery *bat)
{
/* Call all functions needed to update battery */
/* Update Poll Time */
ecore_timer_del(bat->battery_check_timer);
bat->battery_check_timer = ecore_timer_add(bat->conf->poll_time, _battery_cb_check, bat);
}

View File

@ -47,6 +47,7 @@ struct _Battery
struct _Battery_Face
{
Battery *battery;
E_Container *con;
E_Menu *menu;
@ -94,4 +95,6 @@ EAPI int e_modapi_save (E_Module *m);
EAPI int e_modapi_info (E_Module *m);
EAPI int e_modapi_about (E_Module *m);
EAPI void _battery_face_cb_config_updated(Battery *bat);
#endif