Enlightenment CVS committal Author : sebastid Project : e17 Module : apps/e
Dir : e17/apps/e/src/modules/clock Modified Files: e_mod_main.c e_mod_main.h Log Message: Save config for clock and faces. =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/clock/e_mod_main.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- e_mod_main.c 9 Feb 2005 14:52:06 -0000 1.17 +++ e_mod_main.c 10 Feb 2005 11:54:18 -0000 1.18 @@ -6,28 +6,27 @@ /* TODO List: * - * save the visible flag for each face - * */ /* module private routines */ -static Clock *_clock_init(E_Module *module); +static Clock *_clock_new(); static void _clock_shutdown(Clock *clock); - static void _clock_config_menu_new(Clock *clock); -static void _clock_face_init(Clock_Face *face); +static Clock_Face *_clock_face_new(E_Container *con); static void _clock_face_free(Clock_Face *face); static void _clock_face_enable(Clock_Face *face); static void _clock_face_disable(Clock_Face *face); static void _clock_face_menu_new(Clock_Face *face); -static void _clock_face_menu_del(E_Menu *menu); static void _clock_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change); static void _clock_face_cb_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info); static void _clock_face_cb_menu_enabled(void *data, E_Menu *m, E_Menu_Item *mi); static int _clock_count; +static E_Config_DD *conf_edd; +static E_Config_DD *conf_face_edd; + /* public module routines. all modules must have these */ void * init(E_Module *module) @@ -46,8 +45,10 @@ module->api->version); return NULL; } + /* actually init clock */ - clock = _clock_init(module); + clock = _clock_new(); + module->config_menu = clock->config_menu; return clock; } @@ -72,7 +73,7 @@ Clock *clock; clock = module->data; -/* e_config_domain_save("module.clock", e->conf_edd, e->conf);*/ + e_config_domain_save("module.clock", conf_edd, clock->conf); return 1; } @@ -97,30 +98,40 @@ /* module private routines */ static Clock * -_clock_init(E_Module *module) +_clock_new() { Clock *clock; - Evas_List *managers, *l, *l2; + Evas_List *managers, *l, *l2, *cl; E_Menu_Item *mi; _clock_count = 0; clock = E_NEW(Clock, 1); if (!clock) return NULL; - /* - e->conf_edd = E_CONFIG_DD_NEW("Clock_Config", Config); - * - e->conf = e_config_domain_load("module.clock", e->conf_edd); - if (!e->conf) - { - e->conf = E_NEW(Config, 1); - } - */ + conf_face_edd = E_CONFIG_DD_NEW("Clock_Config_Face", Config_Face); +#undef T +#undef D +#define T Config_Face +#define D conf_face_edd + E_CONFIG_VAL(D, T, enabled, INT); + + conf_edd = E_CONFIG_DD_NEW("Clock_Config", Config); +#undef T +#undef D +#define T Config +#define D conf_edd + E_CONFIG_LIST(D, T, faces, conf_face_edd); + + clock->conf = e_config_domain_load("module.clock", conf_edd); + if (!clock->conf) + { + clock->conf = E_NEW(Config, 1); + } _clock_config_menu_new(clock); - module->config_menu = clock->config_menu; managers = e_manager_list(); + cl = clock->conf->faces; for (l = managers; l; l = l->next) { E_Manager *man; @@ -132,22 +143,35 @@ Clock_Face *face; con = l2->data; - face = E_NEW(Clock_Face, 1); + face = _clock_face_new(con); if (face) { - /* FIXME : config */ - face->enabled = 1; - face->clock = clock; - face->con = con; - e_object_ref(E_OBJECT(con)); - face->evas = con->bg_evas; - _clock_face_init(face); clock->faces = evas_list_append(clock->faces, face); + /* Config */ + if (!cl) + { + face->conf = E_NEW(Config_Face, 1); + face->conf->enabled = 1; + clock->conf->faces = evas_list_append(clock->conf->faces, face->conf); + } + else + { + face->conf = cl->data; + cl = cl->next; + } + + /* Menu */ + /* This menu must be initialized after conf */ + _clock_face_menu_new(face); - mi = e_menu_item_new(module->config_menu); + mi = e_menu_item_new(clock->config_menu); e_menu_item_label_set(mi, con->name); e_menu_item_submenu_set(mi, face->menu); + + /* Setup */ + if (!face->conf->enabled) + _clock_face_disable(face); } } } @@ -159,15 +183,16 @@ { Evas_List *list; - free(clock->conf); -/* E_CONFIG_DD_FREE(e->conf_edd);*/ + E_CONFIG_DD_FREE(conf_edd); + E_CONFIG_DD_FREE(conf_face_edd); for (list = clock->faces; list; list = list->next) _clock_face_free(list->data); - evas_list_free(clock->faces); + e_object_del(E_OBJECT(clock->config_menu)); + free(clock->conf); free(clock); } @@ -177,13 +202,20 @@ clock->config_menu = e_menu_new(); } -static void -_clock_face_init(Clock_Face *face) +static Clock_Face * +_clock_face_new(E_Container *con) { + Clock_Face *face; Evas_Object *o; + + face = E_NEW(Clock_Face, 1); + if (!face) return NULL; + + face->con = con; + e_object_ref(E_OBJECT(con)); - evas_event_freeze(face->evas); - o = edje_object_add(face->evas); + evas_event_freeze(con->bg_evas); + o = edje_object_add(con->bg_evas); face->clock_object = o; edje_object_file_set(o, @@ -192,7 +224,7 @@ "modules/clock/main"); evas_object_show(o); - o = evas_object_rectangle_add(face->evas); + o = evas_object_rectangle_add(con->bg_evas); face->event_object = o; evas_object_layer_set(o, 2); evas_object_repeat_events_set(o, 1); @@ -200,7 +232,7 @@ evas_object_event_callback_add(o, EVAS_CALLBACK_MOUSE_DOWN, _clock_face_cb_mouse_down, face); evas_object_show(o); - face->gmc = e_gadman_client_new(face->con->gadman); + face->gmc = e_gadman_client_new(con->gadman); e_gadman_client_domain_set(face->gmc, "module.clock", _clock_count++); e_gadman_client_policy_set(face->gmc, E_GADMAN_POLICY_ANYWHERE | @@ -217,19 +249,21 @@ e_gadman_client_change_func_set(face->gmc, _clock_face_cb_gmc_change, face); e_gadman_client_load(face->gmc); - _clock_face_menu_new(face); - - evas_event_thaw(face->evas); + evas_event_thaw(con->bg_evas); + + return face; } static void _clock_face_free(Clock_Face *face) { + e_object_unref(E_OBJECT(face->con)); e_object_del(E_OBJECT(face->gmc)); evas_object_del(face->clock_object); evas_object_del(face->event_object); - _clock_face_menu_del(face->menu); - e_object_unref(E_OBJECT(face->con)); + e_object_del(E_OBJECT(face->menu)); + + free(face->conf); free(face); _clock_count--; } @@ -237,17 +271,19 @@ static void _clock_face_enable(Clock_Face *face) { - face->enabled = 1; + face->conf->enabled = 1; evas_object_show(face->clock_object); evas_object_show(face->event_object); + e_config_save_queue(); } static void _clock_face_disable(Clock_Face *face) { - face->enabled = 0; + face->conf->enabled = 0; evas_object_hide(face->clock_object); evas_object_hide(face->event_object); + e_config_save_queue(); } static void @@ -256,25 +292,18 @@ 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, "Enabled"); e_menu_item_check_set(mi, 1); - if (face->enabled) e_menu_item_toggle_set(mi, 1); + if (face->conf->enabled) e_menu_item_toggle_set(mi, 1); e_menu_item_callback_set(mi, _clock_face_cb_menu_enabled, face); face->menu = mn; } static void -_clock_face_menu_del(E_Menu *menu) -{ - e_object_del(E_OBJECT(menu)); -} - -static void _clock_face_cb_gmc_change(void *data, E_Gadman_Client *gmc, E_Gadman_Change change) { Clock_Face *face; @@ -321,13 +350,13 @@ face = data; enabled = e_menu_item_toggle_get(mi); - if ((face->enabled) && (!enabled)) + if ((face->conf->enabled) && (!enabled)) { _clock_face_disable(face); } - else if ((!face->enabled) && (enabled)) + else if ((!face->conf->enabled) && (enabled)) { _clock_face_enable(face); } - e_menu_item_toggle_set(mi, face->enabled); + e_menu_item_toggle_set(mi, face->conf->enabled); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/modules/clock/e_mod_main.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- e_mod_main.h 9 Feb 2005 11:48:55 -0000 1.6 +++ e_mod_main.h 10 Feb 2005 11:54:18 -0000 1.7 @@ -4,13 +4,19 @@ #ifndef E_MOD_MAIN_H #define E_MOD_MAIN_H -typedef struct _Config Config; -typedef struct _Clock Clock; -typedef struct _Clock_Face Clock_Face; +typedef struct _Config Config; +typedef struct _Config_Face Config_Face; +typedef struct _Clock Clock; +typedef struct _Clock_Face Clock_Face; struct _Config { - int dummy; /* just here to hold space */ + Evas_List *faces; +}; + +struct _Config_Face +{ + unsigned char enabled; }; struct _Clock @@ -18,22 +24,19 @@ Evas_List *faces; E_Menu *config_menu; -/* E_Config_DD *conf_edd;*/ Config *conf; }; struct _Clock_Face { - Clock *clock; E_Container *con; - Evas *evas; E_Menu *menu; + Config_Face *conf; Evas_Object *clock_object; Evas_Object *event_object; E_Gadman_Client *gmc; - unsigned char enabled : 1; }; EAPI void *init (E_Module *module); ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs