diff --git a/src/modules/Makefile_time.mk b/src/modules/Makefile_time.mk index 14477c1b5..4d99c02a1 100644 --- a/src/modules/Makefile_time.mk +++ b/src/modules/Makefile_time.mk @@ -15,6 +15,8 @@ src_modules_time_module_la_LDFLAGS = $(MOD_LDFLAGS) src_modules_time_module_la_SOURCES = \ src/modules/time/clock.c \ src/modules/time/clock.h \ +src/modules/time/config_descriptor.c \ +src/modules/time/config_descriptor.h \ src/modules/time/config.c \ src/modules/time/mod.c \ src/modules/time/time.c diff --git a/src/modules/time/clock.h b/src/modules/time/clock.h index 912aa730a..3335bcfde 100644 --- a/src/modules/time/clock.h +++ b/src/modules/time/clock.h @@ -2,6 +2,7 @@ #define CLOCK_H #include "e.h" +#include "config_descriptor.h" E_API extern E_Module_Api e_modapi; @@ -9,47 +10,8 @@ E_API void *e_modapi_init (E_Module *m); E_API int e_modapi_shutdown (E_Module *m); E_API int e_modapi_save (E_Module *m); -typedef struct _Config Config; -typedef struct _Config_Item Config_Item; typedef struct _Instance Instance; -typedef enum -{ - CLOCK_DATE_DISPLAY_NONE, - CLOCK_DATE_DISPLAY_FULL, - CLOCK_DATE_DISPLAY_NUMERIC, - CLOCK_DATE_DISPLAY_DATE_ONLY, - CLOCK_DATE_DISPLAY_ISO8601, - CLOCK_DATE_DISPLAY_CUSTOM, -} Clock_Date_Display; - -struct _Config -{ - Eina_List *items; - - E_Module *module; - Evas_Object *config_dialog; -}; - -struct _Config_Item -{ - int id; - struct { - int start, len; // 0->6 0 == sun, 6 == sat, number of days - } weekend; - struct { - int start; // 0->6 0 == sun, 6 == sat - } week; - Eina_Bool digital_clock; - Eina_Bool digital_24h; - Eina_Bool show_seconds; - Clock_Date_Display show_date; - Eina_Bool advanced; - Eina_Stringshare *timezone; - Eina_Stringshare *time_str[2]; - Eina_Stringshare *colorclass[2]; -}; - struct _Instance { diff --git a/src/modules/time/config_descriptor.c b/src/modules/time/config_descriptor.c new file mode 100644 index 000000000..bd91c2be3 --- /dev/null +++ b/src/modules/time/config_descriptor.c @@ -0,0 +1,52 @@ +#include +#include "config_descriptor.h" + +static E_Config_DD *conf_edd = NULL; +static E_Config_DD *conf_item_edd = NULL; + + +void +config_descriptor_init(void) +{ + conf_item_edd = E_CONFIG_DD_NEW("Config_Item", Config_Item); +#undef T +#undef D +#define T Config_Item +#define D conf_item_edd + E_CONFIG_VAL(D, T, id, INT); + E_CONFIG_VAL(D, T, weekend.start, INT); + E_CONFIG_VAL(D, T, weekend.len, INT); + E_CONFIG_VAL(D, T, week.start, INT); + E_CONFIG_VAL(D, T, digital_clock, UCHAR); + E_CONFIG_VAL(D, T, digital_24h, UCHAR); + E_CONFIG_VAL(D, T, show_seconds, UCHAR); + E_CONFIG_VAL(D, T, show_date, UCHAR); + E_CONFIG_VAL(D, T, advanced, UCHAR); + E_CONFIG_VAL(D, T, timezone, STR); + E_CONFIG_VAL(D, T, time_str[0], STR); + E_CONFIG_VAL(D, T, time_str[1], STR); + E_CONFIG_VAL(D, T, colorclass[0], STR); + E_CONFIG_VAL(D, T, colorclass[1], STR); + + conf_edd = E_CONFIG_DD_NEW("Config", Config); +#undef T +#undef D +#define T Config +#define D conf_edd + E_CONFIG_LIST(D, T, items, conf_item_edd); +} + +void +config_descriptor_shutdown(void) +{ + E_CONFIG_DD_FREE(conf_edd); + E_CONFIG_DD_FREE(conf_item_edd); +} + +E_Config_DD * +config_descriptor_get(void) +{ + return conf_edd; +} + + diff --git a/src/modules/time/config_descriptor.h b/src/modules/time/config_descriptor.h new file mode 100644 index 000000000..67872f218 --- /dev/null +++ b/src/modules/time/config_descriptor.h @@ -0,0 +1,65 @@ +#ifndef TIME_CONFIG_DESCRIPTOR_H +#define TIME_CONFIG_DESCRIPTOR_H + +#undef _Config +#undef Config +#undef _Config_Item +#undef Config_Item +#undef config_descriptor_init +#undef config_descriptor_shutdown +#undef config_descriptor_get + + +#define _Config _Time_Config +#define Config Time_Config +#define _Config_Item _Time_Config_Item +#define Config_Item Time_Config_Item +#define config_descriptor_init time_config_descriptor_init +#define config_descriptor_shutdown time_config_descriptor_shutdown +#define config_descriptor_get time_config_descriptor_get + +typedef struct _Config Config; +typedef struct _Config_Item Config_Item; + +typedef enum +{ + CLOCK_DATE_DISPLAY_NONE, + CLOCK_DATE_DISPLAY_FULL, + CLOCK_DATE_DISPLAY_NUMERIC, + CLOCK_DATE_DISPLAY_DATE_ONLY, + CLOCK_DATE_DISPLAY_ISO8601, + CLOCK_DATE_DISPLAY_CUSTOM, +} Clock_Date_Display; + +struct _Config +{ + Eina_List *items; + + E_Module *module; + Evas_Object *config_dialog; +}; + +struct _Config_Item +{ + int id; + struct { + int start, len; // 0->6 0 == sun, 6 == sat, number of days + } weekend; + struct { + int start; // 0->6 0 == sun, 6 == sat + } week; + Eina_Bool digital_clock; + Eina_Bool digital_24h; + Eina_Bool show_seconds; + Clock_Date_Display show_date; + Eina_Bool advanced; + Eina_Stringshare *timezone; + Eina_Stringshare *time_str[2]; + Eina_Stringshare *colorclass[2]; +}; + +void config_descriptor_init(void); +void config_descriptor_shutdown(void); +E_Config_DD *config_descriptor_get(void); + +#endif /* TIME_CONFIG_DESCRIPTOR_H */ diff --git a/src/modules/time/mod.c b/src/modules/time/mod.c index 534faedd2..89556759e 100644 --- a/src/modules/time/mod.c +++ b/src/modules/time/mod.c @@ -1,6 +1,5 @@ #include "clock.h" -static E_Config_DD *conf_edd = NULL; -static E_Config_DD *conf_item_edd = NULL; + static E_Action *act = NULL; static void @@ -24,34 +23,8 @@ _e_mod_action_cb(E_Object *obj EINA_UNUSED, const char *params, ...) EINTERN void clock_init(void) { - conf_item_edd = E_CONFIG_DD_NEW("Config_Item", Config_Item); -#undef T -#undef D -#define T Config_Item -#define D conf_item_edd - E_CONFIG_VAL(D, T, id, INT); - E_CONFIG_VAL(D, T, weekend.start, INT); - E_CONFIG_VAL(D, T, weekend.len, INT); - E_CONFIG_VAL(D, T, week.start, INT); - E_CONFIG_VAL(D, T, digital_clock, INT); - E_CONFIG_VAL(D, T, digital_24h, INT); - E_CONFIG_VAL(D, T, show_seconds, INT); - E_CONFIG_VAL(D, T, show_date, INT); - E_CONFIG_VAL(D, T, advanced, UCHAR); - E_CONFIG_VAL(D, T, timezone, STR); - E_CONFIG_VAL(D, T, time_str[0], STR); - E_CONFIG_VAL(D, T, time_str[1], STR); - E_CONFIG_VAL(D, T, colorclass[0], STR); - E_CONFIG_VAL(D, T, colorclass[1], STR); - - conf_edd = E_CONFIG_DD_NEW("Config", Config); -#undef T -#undef D -#define T Config -#define D conf_edd - E_CONFIG_LIST(D, T, items, conf_item_edd); - - time_config = e_config_domain_load("module.time", conf_edd); + config_descriptor_init(); + time_config = e_config_domain_load("module.time", config_descriptor_get()); if (!time_config) time_config = E_NEW(Config, 1); @@ -103,8 +76,7 @@ clock_shutdown(void) E_FREE(time_config); } - E_CONFIG_DD_FREE(conf_edd); - E_CONFIG_DD_FREE(conf_item_edd); + config_descriptor_shutdown(); e_gadget_type_del("Digital Clock"); e_gadget_type_del("Analog Clock"); @@ -138,6 +110,6 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED) E_API int e_modapi_save(E_Module *m EINA_UNUSED) { - e_config_domain_save("module.time", conf_edd, time_config); + e_config_domain_save("module.time", config_descriptor_get(), time_config); return 1; }