e_time: make time external config
This commit is contained in:
parent
59b4b3f5a3
commit
fe821b5eea
|
@ -15,6 +15,8 @@ src_modules_time_module_la_LDFLAGS = $(MOD_LDFLAGS)
|
||||||
src_modules_time_module_la_SOURCES = \
|
src_modules_time_module_la_SOURCES = \
|
||||||
src/modules/time/clock.c \
|
src/modules/time/clock.c \
|
||||||
src/modules/time/clock.h \
|
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/config.c \
|
||||||
src/modules/time/mod.c \
|
src/modules/time/mod.c \
|
||||||
src/modules/time/time.c
|
src/modules/time/time.c
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#define CLOCK_H
|
#define CLOCK_H
|
||||||
|
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
|
#include "config_descriptor.h"
|
||||||
|
|
||||||
E_API extern E_Module_Api e_modapi;
|
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_shutdown (E_Module *m);
|
||||||
E_API int e_modapi_save (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 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
|
struct _Instance
|
||||||
{
|
{
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
#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, 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;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 */
|
|
@ -1,6 +1,5 @@
|
||||||
#include "clock.h"
|
#include "clock.h"
|
||||||
static E_Config_DD *conf_edd = NULL;
|
|
||||||
static E_Config_DD *conf_item_edd = NULL;
|
|
||||||
static E_Action *act = NULL;
|
static E_Action *act = NULL;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -24,34 +23,8 @@ _e_mod_action_cb(E_Object *obj EINA_UNUSED, const char *params, ...)
|
||||||
EINTERN void
|
EINTERN void
|
||||||
clock_init(void)
|
clock_init(void)
|
||||||
{
|
{
|
||||||
conf_item_edd = E_CONFIG_DD_NEW("Config_Item", Config_Item);
|
config_descriptor_init();
|
||||||
#undef T
|
time_config = e_config_domain_load("module.time", config_descriptor_get());
|
||||||
#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);
|
|
||||||
|
|
||||||
if (!time_config)
|
if (!time_config)
|
||||||
time_config = E_NEW(Config, 1);
|
time_config = E_NEW(Config, 1);
|
||||||
|
@ -103,8 +76,7 @@ clock_shutdown(void)
|
||||||
|
|
||||||
E_FREE(time_config);
|
E_FREE(time_config);
|
||||||
}
|
}
|
||||||
E_CONFIG_DD_FREE(conf_edd);
|
config_descriptor_shutdown();
|
||||||
E_CONFIG_DD_FREE(conf_item_edd);
|
|
||||||
|
|
||||||
e_gadget_type_del("Digital Clock");
|
e_gadget_type_del("Digital Clock");
|
||||||
e_gadget_type_del("Analog Clock");
|
e_gadget_type_del("Analog Clock");
|
||||||
|
@ -138,6 +110,6 @@ e_modapi_shutdown(E_Module *m EINA_UNUSED)
|
||||||
E_API int
|
E_API int
|
||||||
e_modapi_save(E_Module *m EINA_UNUSED)
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue