From d5972250a4464cb5acd14c9826171fa82e1b7fa3 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Fri, 27 Nov 2009 18:02:55 +0000 Subject: [PATCH] Add config category & items. Add config dialogs for Animation settings & Window settings. Free the E_Config_DD when exiting. SVN revision: 44024 --- src/modules/illume2/Makefile.am | 6 +- src/modules/illume2/e_mod_animation.c | 98 +++++++++++++++++++++++++++ src/modules/illume2/e_mod_animation.h | 6 ++ src/modules/illume2/e_mod_config.c | 87 +++++++++++++++++++++++- src/modules/illume2/e_mod_config.h | 14 +++- src/modules/illume2/e_mod_windows.c | 71 +++++++++++++++++++ src/modules/illume2/e_mod_windows.h | 6 ++ 7 files changed, 285 insertions(+), 3 deletions(-) create mode 100644 src/modules/illume2/e_mod_animation.c create mode 100644 src/modules/illume2/e_mod_animation.h create mode 100644 src/modules/illume2/e_mod_windows.c create mode 100644 src/modules/illume2/e_mod_windows.h diff --git a/src/modules/illume2/Makefile.am b/src/modules/illume2/Makefile.am index 8aafce71a..64cb7074f 100644 --- a/src/modules/illume2/Makefile.am +++ b/src/modules/illume2/Makefile.am @@ -28,7 +28,11 @@ module_la_SOURCES = e_mod_main.h \ e_kbd.h \ e_kbd.c \ e_mod_config.h \ - e_mod_config.c + e_mod_config.c \ + e_mod_animation.h \ + e_mod_animation.c \ + e_mod_windows.h \ + e_mod_windows.c module_la_LIBADD = @e_libs@ @dlopen_libs@ module_la_LDFLAGS = -module -avoid-version diff --git a/src/modules/illume2/e_mod_animation.c b/src/modules/illume2/e_mod_animation.c new file mode 100644 index 000000000..a927a98bb --- /dev/null +++ b/src/modules/illume2/e_mod_animation.c @@ -0,0 +1,98 @@ +#include "e.h" +#include "e_mod_animation.h" +#include "e_mod_config.h" + +/* local function prototypes */ +static void *_il_config_animation_create(E_Config_Dialog *cfd); +static void _il_config_animation_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static Evas_Object *_il_config_animation_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); +static void _il_config_animation_change(void *data, Evas_Object *obj, void *event); +static int _il_config_animation_change_timeout(void *data); + +/* local variables */ +Ecore_Timer *_anim_change_timer = NULL; + +/* public functions */ +EAPI void +il_config_animation_show(E_Container *con, const char *params) +{ + E_Config_Dialog *cfd; + E_Config_Dialog_View *v; + + if (e_config_dialog_find("E", "_config_illume_animation_settings")) return; + v = E_NEW(E_Config_Dialog_View, 1); + v->create_cfdata = _il_config_animation_create; + v->free_cfdata = _il_config_animation_free; + v->basic.create_widgets = _il_config_animation_ui; + v->basic_only = 1; + v->normal_win = 1; + v->scroll = 1; + cfd = e_config_dialog_new(con, _("Animation Settings"), "E", + "_config_illume_animation_settings", + "enlightenment/animation_settings", 0, v, NULL); + e_dialog_resizable_set(cfd->dia, 1); +} + +/* local function prototypes */ +static void * +_il_config_animation_create(E_Config_Dialog *cfd) +{ + return NULL; +} + +static void +_il_config_animation_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + +} + +static Evas_Object * +_il_config_animation_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +{ + Evas_Object *list, *of, *ow; + E_Radio_Group *rg; + + list = e_widget_list_add(evas, 0, 0); + + of = e_widget_framelist_add(evas, _("Keyboard"), 0); + rg = e_widget_radio_group_new(&(il_cfg->sliding.kbd.duration)); + ow = e_widget_radio_add(evas, _("Slow"), 2000, rg); + e_widget_framelist_object_append(of, ow); + evas_object_smart_callback_add(ow, "changed", + _il_config_animation_change, NULL); + ow = e_widget_radio_add(evas, _("Medium"), 1000, rg); + e_widget_framelist_object_append(of, ow); + evas_object_smart_callback_add(ow, "changed", + _il_config_animation_change, NULL); + ow = e_widget_radio_add(evas, _("Fast"), 500, rg); + e_widget_framelist_object_append(of, ow); + evas_object_smart_callback_add(ow, "changed", + _il_config_animation_change, NULL); + ow = e_widget_radio_add(evas, _("Very Fast"), 250, rg); + e_widget_framelist_object_append(of, ow); + evas_object_smart_callback_add(ow, "changed", + _il_config_animation_change, NULL); + ow = e_widget_radio_add(evas, _("Off"), 0, rg); + e_widget_framelist_object_append(of, ow); + evas_object_smart_callback_add(ow, "changed", + _il_config_animation_change, NULL); + e_widget_list_object_append(list, of, 1, 0, 0.0); + + return list; +} + +static void +_il_config_animation_change(void *data, Evas_Object *obj, void *event) +{ + if (_anim_change_timer) ecore_timer_del(_anim_change_timer); + _anim_change_timer = + ecore_timer_add(0.5, _il_config_animation_change_timeout, data); +} + +static int +_il_config_animation_change_timeout(void *data) +{ + e_config_save_queue(); + _anim_change_timer = NULL; + return 0; +} diff --git a/src/modules/illume2/e_mod_animation.h b/src/modules/illume2/e_mod_animation.h new file mode 100644 index 000000000..71abf2177 --- /dev/null +++ b/src/modules/illume2/e_mod_animation.h @@ -0,0 +1,6 @@ +#ifndef E_MOD_ANIM_H +#define E_MOD_ANIM_H + +EAPI void il_config_animation_show(E_Container *con, const char *params); + +#endif diff --git a/src/modules/illume2/e_mod_config.c b/src/modules/illume2/e_mod_config.c index c81cff647..1843e52d6 100644 --- a/src/modules/illume2/e_mod_config.c +++ b/src/modules/illume2/e_mod_config.c @@ -1,6 +1,8 @@ #include "e.h" #include "e_mod_main.h" #include "e_mod_config.h" +#include "e_mod_animation.h" +#include "e_mod_windows.h" /* local variables */ EAPI Il_Config *il_cfg = NULL; @@ -18,6 +20,19 @@ il_config_init(E_Module *m) E_CONFIG_VAL(D, T, version, INT); E_CONFIG_VAL(D, T, sliding.kbd.duration, INT); E_CONFIG_VAL(D, T, sliding.softkey.duration, INT); + E_CONFIG_VAL(D, T, policy.name, STR); + E_CONFIG_VAL(D, T, policy.vkbd.class, STR); + E_CONFIG_VAL(D, T, policy.vkbd.name, STR); + E_CONFIG_VAL(D, T, policy.vkbd.title, STR); + E_CONFIG_VAL(D, T, policy.vkbd.win_type, STR); + E_CONFIG_VAL(D, T, policy.softkey.class, STR); + E_CONFIG_VAL(D, T, policy.softkey.name, STR); + E_CONFIG_VAL(D, T, policy.softkey.title, STR); + E_CONFIG_VAL(D, T, policy.softkey.win_type, STR); + E_CONFIG_VAL(D, T, policy.home.class, STR); + E_CONFIG_VAL(D, T, policy.home.name, STR); + E_CONFIG_VAL(D, T, policy.home.title, STR); + E_CONFIG_VAL(D, T, policy.home.win_type, STR); il_cfg = e_config_domain_load("module.illume2", conf_edd); if ((il_cfg) && @@ -36,18 +51,88 @@ il_config_init(E_Module *m) if (il_cfg) { /* Add new config variables here */ - /* if ((il_cfg->version & 0xffff) < 1) */ + if ((il_cfg->version & 0xffff) < 1) + { + il_cfg->policy.name = NULL; + il_cfg->policy.vkbd.class = + eina_stringshare_add("Virtual-Keyboard"); + il_cfg->policy.vkbd.name = + eina_stringshare_add("E"); + il_cfg->policy.vkbd.title = + eina_stringshare_add("Virtual Keyboard"); + il_cfg->policy.vkbd.win_type = NULL; + il_cfg->policy.softkey.class = + eina_stringshare_add("Illume-Softkey"); + il_cfg->policy.softkey.name = + eina_stringshare_add("Illume-Softkey"); + il_cfg->policy.softkey.title = + eina_stringshare_add("Illume Softkey"); + il_cfg->policy.softkey.win_type = NULL; + il_cfg->policy.home.class = + eina_stringshare_add("Illume-Home"); + il_cfg->policy.home.name = + eina_stringshare_add("Illume-Home"); + il_cfg->policy.home.title = + eina_stringshare_add("Illume Home"); + il_cfg->policy.home.win_type = NULL; + } il_cfg->version = (IL_CONFIG_MAJ << 16) | IL_CONFIG_MIN; } il_cfg->mod_dir = eina_stringshare_add(m->dir); + + e_configure_registry_category_add("illume", 0, _("Illume"), NULL, + "enlightenment/display"); + e_configure_registry_generic_item_add("illume/animation", 0, _("Animation"), + NULL, "enlightenment/animation", + il_config_animation_show); + e_configure_registry_generic_item_add("illume/windows", 0, _("Windows"), + NULL, "enlightenment/windows", + il_config_windows_show); return 1; } EAPI int il_config_shutdown(void) { + e_configure_registry_item_del("illume/windows"); + e_configure_registry_item_del("illume/animation"); + e_configure_registry_category_del("illume"); + + if (il_cfg->policy.name) eina_stringshare_del(il_cfg->policy.name); + + if (il_cfg->policy.vkbd.class) + eina_stringshare_del(il_cfg->policy.vkbd.class); + if (il_cfg->policy.vkbd.name) + eina_stringshare_del(il_cfg->policy.vkbd.name); + if (il_cfg->policy.vkbd.title) + eina_stringshare_del(il_cfg->policy.vkbd.title); + if (il_cfg->policy.vkbd.win_type) + eina_stringshare_del(il_cfg->policy.vkbd.win_type); + + if (il_cfg->policy.softkey.class) + eina_stringshare_del(il_cfg->policy.softkey.class); + if (il_cfg->policy.softkey.name) + eina_stringshare_del(il_cfg->policy.softkey.name); + if (il_cfg->policy.softkey.title) + eina_stringshare_del(il_cfg->policy.softkey.title); + if (il_cfg->policy.softkey.win_type) + eina_stringshare_del(il_cfg->policy.softkey.win_type); + + if (il_cfg->policy.home.class) + eina_stringshare_del(il_cfg->policy.home.class); + if (il_cfg->policy.home.name) + eina_stringshare_del(il_cfg->policy.home.name); + if (il_cfg->policy.home.title) + eina_stringshare_del(il_cfg->policy.home.title); + if (il_cfg->policy.home.win_type) + eina_stringshare_del(il_cfg->policy.home.win_type); + if (il_cfg->mod_dir) eina_stringshare_del(il_cfg->mod_dir); + E_FREE(il_cfg); + il_cfg = NULL; + + E_CONFIG_DD_FREE(conf_edd); return 1; } diff --git a/src/modules/illume2/e_mod_config.h b/src/modules/illume2/e_mod_config.h index 8bfabce52..d7e791959 100644 --- a/src/modules/illume2/e_mod_config.h +++ b/src/modules/illume2/e_mod_config.h @@ -1,7 +1,7 @@ #ifndef E_MOD_CONFIG_H # define E_MOD_CONFIG_H -# define IL_CONFIG_MIN 0 +# define IL_CONFIG_MIN 1 # define IL_CONFIG_MAJ 0 typedef struct _Il_Config Il_Config; @@ -18,6 +18,18 @@ struct _Il_Config } kbd, softkey; } sliding; + struct + { + const char *name; + struct + { + const char *class; + const char *name; + const char *title; + const char *win_type; + } vkbd, softkey, home; + } policy; + // Not User Configurable. Placeholders const char *mod_dir; E_Config_Dialog *cfd; diff --git a/src/modules/illume2/e_mod_windows.c b/src/modules/illume2/e_mod_windows.c new file mode 100644 index 000000000..1d2c94235 --- /dev/null +++ b/src/modules/illume2/e_mod_windows.c @@ -0,0 +1,71 @@ +#include "e.h" +#include "e_mod_windows.h" + +/* local function prototypes */ +static void *_il_config_windows_create(E_Config_Dialog *cfd); +static void _il_config_windows_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata); +static Evas_Object *_il_config_windows_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata); +static void _il_config_windows_change(void *data, Evas_Object *obj, void *event); +static int _il_config_windows_change_timeout(void *data); + +/* local variables */ +Ecore_Timer *_windows_change_timer = NULL; + +/* public functions */ +EAPI void +il_config_windows_show(E_Container *con, const char *params) +{ + E_Config_Dialog *cfd; + E_Config_Dialog_View *v; + + if (e_config_dialog_find("E", "_config_illume_windows_settings")) return; + v = E_NEW(E_Config_Dialog_View, 1); + v->create_cfdata = _il_config_windows_create; + v->free_cfdata = _il_config_windows_free; + v->basic.create_widgets = _il_config_windows_ui; + v->basic_only = 1; + v->normal_win = 1; + v->scroll = 1; + cfd = e_config_dialog_new(con, _("Window Settings"), "E", + "_config_illume_windows_settings", + "enlightenment/windows", 0, v, NULL); + e_dialog_resizable_set(cfd->dia, 1); +} + +/* local function prototypes */ +static void * +_il_config_windows_create(E_Config_Dialog *cfd) +{ + return NULL; +} + +static void +_il_config_windows_free(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata) +{ + +} + +static Evas_Object * +_il_config_windows_ui(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata) +{ + Evas_Object *list; + + list = e_widget_list_add(evas, 0, 0); + return list; +} + +static void +_il_config_windows_change(void *data, Evas_Object *obj, void *event) +{ + if (_windows_change_timer) ecore_timer_del(_windows_change_timer); + _windows_change_timer = + ecore_timer_add(0.5, _il_config_windows_change_timeout, data); +} + +static int +_il_config_windows_change_timeout(void *data) +{ + e_config_save_queue(); + _windows_change_timer = NULL; + return 0; +} diff --git a/src/modules/illume2/e_mod_windows.h b/src/modules/illume2/e_mod_windows.h new file mode 100644 index 000000000..34e8a2173 --- /dev/null +++ b/src/modules/illume2/e_mod_windows.h @@ -0,0 +1,6 @@ +#ifndef E_MOD_WINDOWS_H +#define E_MOD_WINDOWS_H + +EAPI void il_config_windows_show(E_Container *con, const char *params); + +#endif