diff --git a/src/modules/illume-indicator/Makefile.am b/src/modules/illume-indicator/Makefile.am index 688486ac9..67aa728aa 100644 --- a/src/modules/illume-indicator/Makefile.am +++ b/src/modules/illume-indicator/Makefile.am @@ -32,6 +32,8 @@ pkg_LTLIBRARIES = module.la module_la_SOURCES = \ e_mod_ind_win.c \ e_mod_ind_win.h \ + e_mod_config.c \ + e_mod_config.h \ e_mod_main.c \ e_mod_main.h diff --git a/src/modules/illume-indicator/e_mod_config.c b/src/modules/illume-indicator/e_mod_config.c new file mode 100644 index 000000000..ca8a9eb7f --- /dev/null +++ b/src/modules/illume-indicator/e_mod_config.c @@ -0,0 +1,51 @@ +#include "e.h" +#include "e_mod_main.h" +#include "e_mod_config.h" + +/* local variables */ +EAPI Il_Ind_Config *il_ind_cfg = NULL; +static E_Config_DD *conf_edd = NULL; + +int +il_ind_config_init(void) +{ + conf_edd = E_CONFIG_DD_NEW("Illume-Indicator_Cfg", Il_Ind_Config); + #undef T + #undef D + #define T Il_Ind_Config + #define D conf_edd + E_CONFIG_VAL(D, T, version, INT); + E_CONFIG_VAL(D, T, height, INT); + + il_ind_cfg = e_config_domain_load("module.illume-indicator", conf_edd); + if ((il_ind_cfg) && + ((il_ind_cfg->version >> 16) < IL_CONFIG_MAJ)) + { + E_FREE(il_ind_cfg); + } + if (!il_ind_cfg) + { + il_ind_cfg = E_NEW(Il_Ind_Config, 1); + il_ind_cfg->version = 0; + il_ind_cfg->height = 32; + } + if (il_ind_cfg) + il_ind_cfg->version = (IL_CONFIG_MAJ << 16) | IL_CONFIG_MIN; + + return 1; +} + +int +il_ind_config_shutdown(void) +{ + E_FREE(il_ind_cfg); + E_CONFIG_DD_FREE(conf_edd); + + return 1; +} + +int +il_ind_config_save(void) +{ + return e_config_domain_save("module.illume-indicator", conf_edd, il_ind_cfg); +} diff --git a/src/modules/illume-indicator/e_mod_config.h b/src/modules/illume-indicator/e_mod_config.h new file mode 100644 index 000000000..413691d82 --- /dev/null +++ b/src/modules/illume-indicator/e_mod_config.h @@ -0,0 +1,20 @@ +#ifndef E_MOD_CONFIG_H +#define E_MOD_CONFIG_H + +#define IL_CONFIG_MIN 0 +#define IL_CONFIG_MAJ 0 + +typedef struct _Il_Ind_Config Il_Ind_Config; + +struct _Il_Ind_Config +{ + int version, height; +}; + +int il_ind_config_init(void); +int il_ind_config_shutdown(void); +int il_ind_config_save(void); + +extern EAPI Il_Ind_Config *il_ind_cfg; + +#endif diff --git a/src/modules/illume-indicator/e_mod_ind_win.c b/src/modules/illume-indicator/e_mod_ind_win.c index 36d1176bb..d7e7c2763 100644 --- a/src/modules/illume-indicator/e_mod_ind_win.c +++ b/src/modules/illume-indicator/e_mod_ind_win.c @@ -1,5 +1,6 @@ #include "e.h" #include "e_mod_main.h" +#include "e_mod_config.h" #include "e_mod_ind_win.h" /* local function prototypes */ @@ -85,7 +86,7 @@ e_mod_ind_win_new(E_Zone *zone) iwin->o_base, "e.swallow.content"); // iwin->gadcon->instant_edit = 1; edje_extern_object_min_size_set(iwin->gadcon->o_container, zone->w, - (32 * e_scale)); + (il_ind_cfg->height * e_scale)); edje_object_part_swallow(iwin->o_base, "e.swallow.container", iwin->gadcon->o_container); e_gadcon_min_size_request_callback_set(iwin->gadcon, @@ -117,10 +118,11 @@ e_mod_ind_win_new(E_Zone *zone) iwin)); /* set minimum size of this window */ - e_win_size_min_set(iwin->win, zone->w, (32 * e_scale)); + e_win_size_min_set(iwin->win, zone->w, (il_ind_cfg->height * e_scale)); /* position and resize this window */ - e_win_move_resize(iwin->win, zone->x, zone->y, zone->w, (32 * e_scale)); + e_win_move_resize(iwin->win, zone->x, zone->y, zone->w, + (il_ind_cfg->height * e_scale)); /* show the window */ e_win_show(iwin->win); @@ -134,7 +136,8 @@ e_mod_ind_win_new(E_Zone *zone) /* tell conformant apps our position and size */ ecore_x_e_illume_indicator_geometry_set(zone->black_win, zone->x, zone->y, - zone->w, (32 * e_scale)); + zone->w, + (il_ind_cfg->height * e_scale)); return iwin; } diff --git a/src/modules/illume-indicator/e_mod_main.c b/src/modules/illume-indicator/e_mod_main.c index c825207ed..3274da007 100644 --- a/src/modules/illume-indicator/e_mod_main.c +++ b/src/modules/illume-indicator/e_mod_main.c @@ -1,5 +1,6 @@ #include "e.h" #include "e_mod_main.h" +#include "e_mod_config.h" #include "e_mod_ind_win.h" /* local variables */ @@ -22,6 +23,15 @@ e_modapi_init(E_Module *m) /* set module directory variable */ _ind_mod_dir = eina_stringshare_add(m->dir); + /* init config subsystem */ + if (!il_ind_config_init()) + { + /* clear module directory variable */ + if (_ind_mod_dir) eina_stringshare_del(_ind_mod_dir); + _ind_mod_dir = NULL; + return NULL; + } + /* loop through the managers (root windows) */ EINA_LIST_FOREACH(e_manager_list(), ml, man) { @@ -58,6 +68,9 @@ e_modapi_shutdown(E_Module *m) EINA_LIST_FREE(iwins, iwin) e_object_del(E_OBJECT(iwin)); + /* shutdown config */ + il_ind_config_shutdown(); + /* clear module directory variable */ if (_ind_mod_dir) eina_stringshare_del(_ind_mod_dir); _ind_mod_dir = NULL; @@ -68,5 +81,5 @@ e_modapi_shutdown(E_Module *m) EAPI int e_modapi_save(E_Module *m) { - return 1; + return il_ind_config_save(); } diff --git a/src/modules/illume-indicator/images/module_icon.png b/src/modules/illume-indicator/images/module_icon.png index 82c1b76f3..c759dba47 100644 Binary files a/src/modules/illume-indicator/images/module_icon.png and b/src/modules/illume-indicator/images/module_icon.png differ