From 8ddbb333273faafd066035ab349a8e8df8c7428c Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Wed, 14 Dec 2005 22:46:51 +0000 Subject: [PATCH] Battery Config Dialog SVN revision: 19020 --- src/modules/battery/Makefile.am | 4 +- src/modules/battery/e_mod_config.c | 202 ++++++++++++++++++++++ src/modules/battery/e_mod_config.h | 8 + src/modules/battery/e_mod_main.c | 263 ++++------------------------- src/modules/battery/e_mod_main.h | 3 + 5 files changed, 247 insertions(+), 233 deletions(-) create mode 100644 src/modules/battery/e_mod_config.c create mode 100644 src/modules/battery/e_mod_config.h diff --git a/src/modules/battery/Makefile.am b/src/modules/battery/Makefile.am index 56e43aab4..c2491f73d 100644 --- a/src/modules/battery/Makefile.am +++ b/src/modules/battery/Makefile.am @@ -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 diff --git a/src/modules/battery/e_mod_config.c b/src/modules/battery/e_mod_config.c new file mode 100644 index 000000000..79c73969b --- /dev/null +++ b/src/modules/battery/e_mod_config.c @@ -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; +} diff --git a/src/modules/battery/e_mod_config.h b/src/modules/battery/e_mod_config.h new file mode 100644 index 000000000..7eb6c77c2 --- /dev/null +++ b/src/modules/battery/e_mod_config.h @@ -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 diff --git a/src/modules/battery/e_mod_main.c b/src/modules/battery/e_mod_main.c index bfc656374..9b6755b02 100644 --- a/src/modules/battery/e_mod_main.c +++ b/src/modules/battery/e_mod_main.c @@ -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); +} diff --git a/src/modules/battery/e_mod_main.h b/src/modules/battery/e_mod_main.h index a6ae9600e..6d0b2e103 100644 --- a/src/modules/battery/e_mod_main.h +++ b/src/modules/battery/e_mod_main.h @@ -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