summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichaël Bouchaud (yoz) <yoz@efl.so>2016-12-09 22:33:03 +0100
committerMichaël Bouchaud (yoz) <yoz@efl.so>2017-01-08 12:12:08 +0100
commit2abbab50430fe5b5c080a5bf160f003a600213f1 (patch)
tree4a550cbc7fb253975e395e541825bef3e57421e4
parent8c8cb30cef329542a232b2dad2eae86e742d9b2d (diff)
downloadenlightenment-2abbab50430fe5b5c080a5bf160f003a600213f1.tar.gz
e_clock: make clock external config
-rw-r--r--src/modules/Makefile_clock.mk2
-rw-r--r--src/modules/clock/config_descriptor.c46
-rw-r--r--src/modules/clock/config_descriptor.h51
-rw-r--r--src/modules/clock/e_mod_main.c34
-rw-r--r--src/modules/clock/e_mod_main.h28
5 files changed, 106 insertions, 55 deletions
diff --git a/src/modules/Makefile_clock.mk b/src/modules/Makefile_clock.mk
index 2d30da128b..2babeaf8ef 100644
--- a/src/modules/Makefile_clock.mk
+++ b/src/modules/Makefile_clock.mk
@@ -14,6 +14,8 @@ src_modules_clock_module_la_CPPFLAGS = $(MOD_CPPFLAGS)
src_modules_clock_module_la_LDFLAGS = $(MOD_LDFLAGS)
src_modules_clock_module_la_SOURCES = src/modules/clock/e_mod_main.h \
src/modules/clock/e_mod_main.c \
+ src/modules/clock/config_descriptor.c \
+ src/modules/clock/config_descriptor.h \
src/modules/clock/e_mod_config.c
PHONIES += clock install-clock
diff --git a/src/modules/clock/config_descriptor.c b/src/modules/clock/config_descriptor.c
new file mode 100644
index 0000000000..593e394e39
--- /dev/null
+++ b/src/modules/clock/config_descriptor.c
@@ -0,0 +1,46 @@
+#include <e.h>
+#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, STR);
+ 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);
+
+ 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/clock/config_descriptor.h b/src/modules/clock/config_descriptor.h
new file mode 100644
index 0000000000..f5d7ab4682
--- /dev/null
+++ b/src/modules/clock/config_descriptor.h
@@ -0,0 +1,51 @@
+#ifndef CLOCK_CONFIG_DESCRIPTOR_H
+#define CLOCK_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 _Clock_Config
+#define Config Clock_Config
+#define _Config_Item _Clock_Config_Item
+#define Config_Item Clock_Config_Item
+#define config_descriptor_init clock_config_descriptor_init
+#define config_descriptor_shutdown clock_config_descriptor_shutdown
+#define config_descriptor_get clock_config_descriptor_get
+
+typedef struct _Config Config;
+typedef struct _Config_Item Config_Item;
+
+struct _Config
+{
+ Eina_List *items;
+
+ E_Module *module;
+ E_Config_Dialog *config_dialog;
+};
+
+struct _Config_Item
+{
+ const char *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;
+ int digital_clock;
+ int digital_24h;
+ int show_seconds;
+ int show_date;
+ Eina_Bool changed;
+};
+
+void config_descriptor_init(void);
+void config_descriptor_shutdown(void);
+E_Config_DD *config_descriptor_get(void);
+
+#endif /* CLOCK_CONFIG_DESCRIPTOR_H */
diff --git a/src/modules/clock/e_mod_main.c b/src/modules/clock/e_mod_main.c
index b2356a6718..2c2436b20f 100644
--- a/src/modules/clock/e_mod_main.c
+++ b/src/modules/clock/e_mod_main.c
@@ -41,8 +41,6 @@ static Eio_Monitor *clock_tzetc_monitor = NULL;
static Eina_List *clock_eio_handlers = NULL;
Config *clock_config = NULL;
-static E_Config_DD *conf_edd = NULL;
-static E_Config_DD *conf_item_edd = NULL;
static Eina_List *clock_instances = NULL;
static E_Action *act = NULL;
static Ecore_Timer *update_today = NULL;
@@ -849,28 +847,9 @@ E_API E_Module_Api e_modapi =
E_API void *
e_modapi_init(E_Module *m)
{
- 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, STR);
- 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);
-
- 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);
-
- clock_config = e_config_domain_load("module.clock", conf_edd);
+ config_descriptor_init();
+
+ clock_config = e_config_domain_load("module.clock", config_descriptor_get());
if (!clock_config)
clock_config = E_NEW(Config, 1);
@@ -932,10 +911,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
free(clock_config);
clock_config = NULL;
}
- E_CONFIG_DD_FREE(conf_edd);
- E_CONFIG_DD_FREE(conf_item_edd);
- conf_item_edd = NULL;
- conf_edd = NULL;
+ config_descriptor_shutdown();
e_gadcon_provider_unregister(&_gadcon_class);
@@ -957,7 +933,7 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
E_API int
e_modapi_save(E_Module *m EINA_UNUSED)
{
- e_config_domain_save("module.clock", conf_edd, clock_config);
+ e_config_domain_save("module.clock", config_descriptor_get(), clock_config);
return 1;
}
diff --git a/src/modules/clock/e_mod_main.h b/src/modules/clock/e_mod_main.h
index bde714fb42..c246c97fad 100644
--- a/src/modules/clock/e_mod_main.h
+++ b/src/modules/clock/e_mod_main.h
@@ -1,38 +1,14 @@
#ifndef E_MOD_MAIN_H
#define E_MOD_MAIN_H
+#include "config_descriptor.h"
+
E_API extern E_Module_Api e_modapi;
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;
-
-struct _Config
-{
- Eina_List *items;
-
- E_Module *module;
- E_Config_Dialog *config_dialog;
-};
-
-struct _Config_Item
-{
- const char *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;
- int digital_clock;
- int digital_24h;
- int show_seconds;
- int show_date;
- Eina_Bool changed;
-};
void e_int_config_clock_module(Evas_Object *parent, Config_Item *ci);
void e_int_clock_instances_redo(Eina_Bool all);