add configure callbacks, hook up clock config
This commit is contained in:
parent
c62120d935
commit
459cf14f08
|
@ -7,6 +7,7 @@ src/gadgets/demo.c \
|
|||
src/gadgets/gadget.h \
|
||||
src/gadgets/start/start.c \
|
||||
src/gadgets/clock/clock.c \
|
||||
src/gadgets/clock/config.c \
|
||||
src/gadgets/clock/clock.h \
|
||||
src/gadgets/clock/mod.c \
|
||||
src/gadgets/clock/time.c
|
||||
|
|
|
@ -398,7 +398,10 @@ _conf_item_get(unsigned int *id)
|
|||
static void
|
||||
_clock_gadget_added_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
|
||||
{
|
||||
_eval_instance_size(data);
|
||||
Instance *inst = data;
|
||||
|
||||
_eval_instance_size(inst);
|
||||
z_gadget_configure_cb_set(inst->o_clock, config_clock);
|
||||
evas_object_smart_callback_del_full(obj, "gadget_added", _clock_gadget_added_cb, data);
|
||||
}
|
||||
|
||||
|
@ -458,6 +461,7 @@ clock_create(Evas_Object *parent, unsigned int *id, Z_Gadget_Site_Orient orient)
|
|||
inst->o_clock = o;
|
||||
evas_object_event_callback_add(o, EVAS_CALLBACK_DEL, clock_del, inst);
|
||||
evas_object_smart_callback_add(parent, "gadget_added", _clock_gadget_added_cb, inst);
|
||||
evas_object_data_set(o, "clock", inst);
|
||||
|
||||
evas_object_event_callback_add(inst->o_clock,
|
||||
EVAS_CALLBACK_MOUSE_DOWN,
|
||||
|
|
|
@ -60,12 +60,14 @@ struct _Instance
|
|||
Config_Item *cfg;
|
||||
};
|
||||
|
||||
void e_int_config_clock_module(Evas_Object *parent, Config_Item *ci);
|
||||
EINTERN Evas_Object *config_clock(Evas_Object *g);
|
||||
void e_int_clock_instances_redo(Eina_Bool all);
|
||||
|
||||
EINTERN void time_daynames_clear(Instance *inst);
|
||||
EINTERN void time_string_format(Instance *inst, char *buf, int bufsz);
|
||||
EINTERN void time_instance_update(Instance *inst);
|
||||
EINTERN void time_init(void);
|
||||
EINTERN void time_shutdown(void);
|
||||
|
||||
EINTERN Evas_Object *clock_create(Evas_Object *parent, unsigned int *id, Z_Gadget_Site_Orient orient);
|
||||
EINTERN void clock_popup_new(Instance *inst);
|
||||
|
|
|
@ -5,7 +5,7 @@ static E_Config_DD *conf_item_edd = NULL;
|
|||
static E_Action *act = NULL;
|
||||
|
||||
static void
|
||||
_e_mod_action(const char *params)
|
||||
_e_mod_action_cb(E_Object *obj EINA_UNUSED, const char *params, ...)
|
||||
{
|
||||
Eina_List *l;
|
||||
Instance *inst;
|
||||
|
@ -19,12 +19,6 @@ _e_mod_action(const char *params)
|
|||
clock_popup_new(inst);
|
||||
}
|
||||
|
||||
static void
|
||||
_e_mod_action_cb(E_Object *obj EINA_UNUSED, const char *params)
|
||||
{
|
||||
_e_mod_action(params);
|
||||
}
|
||||
|
||||
EINTERN void
|
||||
clock_init(void)
|
||||
{
|
||||
|
@ -57,15 +51,16 @@ clock_init(void)
|
|||
act = e_action_add("clock");
|
||||
if (act)
|
||||
{
|
||||
act->func.go = _e_mod_action_cb;
|
||||
act->func.go_key = _e_mod_action_cb;
|
||||
act->func.go_mouse = _e_mod_action_cb;
|
||||
act->func.go_edge = _e_mod_action_cb;
|
||||
act->func.go = (void*)_e_mod_action_cb;
|
||||
act->func.go_key = (void*)_e_mod_action_cb;
|
||||
act->func.go_mouse = (void*)_e_mod_action_cb;
|
||||
act->func.go_edge = (void*)_e_mod_action_cb;
|
||||
|
||||
e_action_predef_name_set(N_("Clock"), N_("Toggle calendar"), "clock", "show_calendar", NULL, 0);
|
||||
}
|
||||
|
||||
z_gadget_type_add("Clock", clock_create);
|
||||
time_init();
|
||||
}
|
||||
|
||||
EINTERN void
|
||||
|
@ -85,10 +80,7 @@ clock_shutdown(void)
|
|||
e_object_del(E_OBJECT(clock_config->config_dialog));
|
||||
|
||||
EINA_LIST_FREE(clock_config->items, ci)
|
||||
{
|
||||
eina_stringshare_del(ci->id);
|
||||
free(ci);
|
||||
}
|
||||
free(ci);
|
||||
|
||||
free(clock_config);
|
||||
clock_config = NULL;
|
||||
|
@ -99,6 +91,7 @@ clock_shutdown(void)
|
|||
conf_edd = NULL;
|
||||
|
||||
z_gadget_type_del("Clock");
|
||||
time_shutdown();
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
|
|
@ -241,15 +241,6 @@ _clock_eio_error(void *d EINA_UNUSED, int type EINA_UNUSED, void *event)
|
|||
clock_tzetc_monitor = eio_monitor_add("/etc");
|
||||
}
|
||||
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_ERROR, _clock_eio_error, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_FILE_CREATED, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_FILE_MODIFIED, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_FILE_DELETED, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_SELF_DELETED, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_SELF_RENAME, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, E_EVENT_SYS_RESUME, _clock_time_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED, _clock_time_update, NULL);
|
||||
|
||||
return ECORE_CALLBACK_PASS_ON;
|
||||
}
|
||||
|
||||
|
@ -262,6 +253,15 @@ time_init(void)
|
|||
clock_tz2_monitor = eio_monitor_add("/etc/timezone");
|
||||
if (ecore_file_is_dir("/etc"))
|
||||
clock_tzetc_monitor = eio_monitor_add("/etc");
|
||||
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_ERROR, _clock_eio_error, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_FILE_CREATED, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_FILE_MODIFIED, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_FILE_DELETED, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_SELF_DELETED, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, EIO_MONITOR_SELF_RENAME, _clock_eio_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, E_EVENT_SYS_RESUME, _clock_time_update, NULL);
|
||||
E_LIST_HANDLER_APPEND(clock_eio_handlers, ECORE_EVENT_SYSTEM_TIMEDATE_CHANGED, _clock_time_update, NULL);
|
||||
_update_today_timer(NULL);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,8 @@ struct Z_Gadget_Config
|
|||
Evas_Object *gadget; //list?
|
||||
unsigned int id;
|
||||
Eina_Stringshare *type;
|
||||
Z_Gadget_Configure_Cb configure;
|
||||
Evas_Object *cfg_object;
|
||||
Z_Gadget_Site *site;
|
||||
|
||||
double x, y; //fixed % positioning
|
||||
|
@ -53,6 +55,7 @@ static Eina_Hash *gadget_types;
|
|||
static Eina_List *sites;
|
||||
|
||||
static E_Action *move_act;
|
||||
static E_Action *configure_act;
|
||||
|
||||
static Z_Gadget_Config *
|
||||
_gadget_at_xy(Z_Gadget_Site *zgs, int x, int y, Z_Gadget_Config *exclude)
|
||||
|
@ -160,6 +163,7 @@ _gadget_object_free(E_Object *eobj)
|
|||
zgc = evas_object_data_get(g, "__z_gadget");
|
||||
evas_object_smart_callback_call(zgc->site->layout, "gadget_removed", zgc->gadget);
|
||||
E_FREE_FUNC(zgc->gadget, evas_object_del);
|
||||
evas_object_del(zgc->cfg_object);
|
||||
E_FREE(zgc->e_obj_inherit);
|
||||
}
|
||||
|
||||
|
@ -649,6 +653,36 @@ _gadget_act_modify(E_Object *obj, const char *params EINA_UNUSED, E_Binding_Even
|
|||
zgc->site->move_handler = ecore_event_handler_add(ECORE_EVENT_MOUSE_MOVE, (Ecore_Event_Handler_Cb)_gadget_mouse_move, zgc);
|
||||
}
|
||||
|
||||
static void
|
||||
_gadget_act_configure_object_del(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
|
||||
{
|
||||
Z_Gadget_Config *zgc = data;
|
||||
|
||||
zgc->cfg_object = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_gadget_act_configure(E_Object *obj, const char *params EINA_UNUSED, E_Binding_Event_Mouse_Button *ev EINA_UNUSED)
|
||||
{
|
||||
Z_Gadget_Config *zgc;
|
||||
Evas_Object *g;
|
||||
|
||||
if (obj->type != Z_GADGET_TYPE) return;
|
||||
|
||||
g = e_object_data_get(obj);
|
||||
zgc = evas_object_data_get(g, "__z_gadget");
|
||||
if (!zgc->configure) return;
|
||||
if (zgc->cfg_object)
|
||||
{
|
||||
evas_object_raise(zgc->cfg_object);
|
||||
evas_object_show(zgc->cfg_object);
|
||||
return;
|
||||
}
|
||||
zgc->cfg_object = zgc->configure(zgc->gadget);
|
||||
if (!zgc->cfg_object) return;
|
||||
evas_object_event_callback_add(zgc->cfg_object, EVAS_CALLBACK_DEL, _gadget_act_configure_object_del, zgc);
|
||||
}
|
||||
|
||||
static Eina_Bool
|
||||
_site_mouse_up(Z_Gadget_Site *zgs, int t EINA_UNUSED, Ecore_Event_Mouse_Button *ev)
|
||||
{
|
||||
|
@ -724,10 +758,14 @@ z_gadget_site_add(Evas_Object *parent, Z_Gadget_Site_Orient orient)
|
|||
|
||||
if (!move_act)
|
||||
{
|
||||
move_act = e_action_add("gadget_modify");
|
||||
e_action_predef_name_set(D_("Gadgets"), D_("Move gadget"), "gadget_modify", NULL, NULL, 0);
|
||||
move_act = e_action_add("gadget_move");
|
||||
e_action_predef_name_set(D_("Gadgets"), D_("Move gadget"), "gadget_move", NULL, NULL, 0);
|
||||
move_act->func.go_mouse = _gadget_act_modify;
|
||||
move_act->func.end_mouse = _gadget_act_modify_end;
|
||||
|
||||
configure_act = e_action_add("gadget_configure");
|
||||
e_action_predef_name_set(D_("Gadgets"), D_("Configure gadget"), "gadget_configure", NULL, NULL, 0);
|
||||
configure_act->func.go_mouse = _gadget_act_configure;
|
||||
}
|
||||
|
||||
return zgs->layout;
|
||||
|
@ -742,7 +780,7 @@ z_gadget_site_anchor_get(Evas_Object *obj)
|
|||
}
|
||||
|
||||
Z_API void
|
||||
z_gadget_site_anchor(Evas_Object *obj, Z_Gadget_Site_Anchor an)
|
||||
z_gadget_site_anchor_set(Evas_Object *obj, Z_Gadget_Site_Anchor an)
|
||||
{
|
||||
ZGS_GET(obj);
|
||||
|
||||
|
@ -812,12 +850,23 @@ z_gadget_site_gadget_add(Evas_Object *obj, const char *type)
|
|||
Z_API Evas_Object *
|
||||
z_gadget_site_get(Evas_Object *g)
|
||||
{
|
||||
Z_Gadget_Site *zgs;
|
||||
Z_Gadget_Config *zgc;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(g, NULL);
|
||||
zgs = evas_object_data_get(g, "__z_gadget");
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(zgs, NULL);
|
||||
return zgs->layout;
|
||||
zgc = evas_object_data_get(g, "__z_gadget");
|
||||
EINA_SAFETY_ON_NULL_RETURN_VAL(zgc, NULL);
|
||||
return zgc->site->layout;
|
||||
}
|
||||
|
||||
Z_API void
|
||||
z_gadget_configure_cb_set(Evas_Object *g, Z_Gadget_Configure_Cb cb)
|
||||
{
|
||||
Z_Gadget_Config *zgc;
|
||||
|
||||
EINA_SAFETY_ON_NULL_RETURN(g);
|
||||
zgc = evas_object_data_get(g, "__z_gadget");
|
||||
EINA_SAFETY_ON_NULL_RETURN(zgc);
|
||||
zgc->configure = cb;
|
||||
}
|
||||
|
||||
Z_API void
|
||||
|
|
|
@ -23,7 +23,7 @@ gadget_demo(void)
|
|||
e_theme_edje_object_set(ly, NULL, "e/shelf/default/base");
|
||||
|
||||
site = z_gadget_site_add(ly, Z_GADGET_SITE_ORIENT_VERTICAL);
|
||||
z_gadget_site_anchor(site, Z_GADGET_SITE_ANCHOR_LEFT);
|
||||
z_gadget_site_anchor_set(site, Z_GADGET_SITE_ANCHOR_LEFT);
|
||||
elm_object_part_content_set(ly, "e.swallow.content", site);
|
||||
elm_layout_signal_emit(ly, "e,state,orientation,left", "e");
|
||||
evas_object_geometry_set(ly, 0, 0, 48, e_comp->h);
|
||||
|
|
|
@ -33,13 +33,15 @@ typedef enum
|
|||
} Z_Gadget_Site_Anchor;
|
||||
|
||||
typedef Evas_Object *(*Z_Gadget_Create_Cb)(Evas_Object *parent, unsigned int *id, Z_Gadget_Site_Orient orient);
|
||||
typedef Evas_Object *(*Z_Gadget_Configure_Cb)(Evas_Object *gadget);
|
||||
|
||||
Z_API Evas_Object *z_gadget_site_add(Evas_Object *parent, Z_Gadget_Site_Orient orient);
|
||||
Z_API Z_Gadget_Site_Anchor z_gadget_site_anchor_get(Evas_Object *obj);
|
||||
Z_API void z_gadget_site_anchor(Evas_Object *obj, Z_Gadget_Site_Anchor an);
|
||||
Z_API void z_gadget_site_anchor_set(Evas_Object *obj, Z_Gadget_Site_Anchor an);
|
||||
Z_API Z_Gadget_Site_Orient z_gadget_site_orient_get(Evas_Object *obj);
|
||||
Z_API Z_Gadget_Site_Gravity z_gadget_site_gravity_get(Evas_Object *obj);
|
||||
Z_API void z_gadget_site_gadget_add(Evas_Object *obj, const char *type);
|
||||
Z_API void z_gadget_configure_cb_set(Evas_Object *g, Z_Gadget_Configure_Cb cb);
|
||||
Z_API Evas_Object *z_gadget_site_get(Evas_Object *g);
|
||||
Z_API void z_gadget_type_add(const char *type, Z_Gadget_Create_Cb callback);
|
||||
Z_API void z_gadget_type_del(const char *type);
|
||||
|
|
Loading…
Reference in New Issue