nstate: Remove some legacy code

This uses constructor/destructor instead of group_add/group_del.

Note: finalize can't be used for theme loading as any action done inside
efl_add(...) would be lost (eg. part text set).
This commit is contained in:
Jean-Philippe Andre 2017-10-24 11:13:51 +09:00
parent d267595557
commit 1e83dd84c6
2 changed files with 46 additions and 84 deletions

View File

@ -274,39 +274,6 @@ _on_check_toggle(void *data,
_activate(data);
}
EOLIAN static void
_efl_ui_check_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Check_Data *_pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
efl_canvas_group_add(efl_super(obj, MY_CLASS));
elm_widget_sub_object_parent_add(obj);
if (!elm_layout_theme_set(obj, "check", "base", elm_widget_style_get(obj)))
CRI("Failed to set layout!");
edje_object_signal_callback_add
(wd->resize_obj, "elm,action,check,on", "*",
_on_check_on, obj);
edje_object_signal_callback_add
(wd->resize_obj, "elm,action,check,off", "*",
_on_check_off, obj);
edje_object_signal_callback_add
(wd->resize_obj, "elm,action,check,toggle", "*",
_on_check_toggle, obj);
_elm_access_object_register(obj, wd->resize_obj);
_elm_access_text_set
(_elm_access_info_get(obj), ELM_ACCESS_TYPE, E_("Check"));
_elm_access_callback_set
(_elm_access_info_get(obj), ELM_ACCESS_INFO, _access_info_cb, obj);
_elm_access_callback_set
(_elm_access_info_get(obj), ELM_ACCESS_STATE, _access_state_cb, obj);
elm_widget_can_focus_set(obj, EINA_TRUE);
elm_layout_sizing_eval(obj);
}
EOLIAN static Eina_Bool
_efl_ui_check_selected_get(Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED)
{
@ -351,12 +318,34 @@ elm_check_add(Evas_Object *parent)
}
EOLIAN static Eo *
_efl_ui_check_efl_object_constructor(Eo *obj, Efl_Ui_Check_Data *_pd EINA_UNUSED)
_efl_ui_check_efl_object_constructor(Eo *obj, Efl_Ui_Check_Data *pd EINA_UNUSED)
{
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME_LEGACY);
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
elm_widget_sub_object_parent_add(obj);
if (!elm_layout_theme_set(obj, "check", "base", elm_widget_style_get(obj)))
CRI("Failed to set layout!");
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
efl_canvas_layout_signal_callback_add
(wd->resize_obj, "elm,action,check,on", "*", _on_check_on, obj);
efl_canvas_layout_signal_callback_add
(wd->resize_obj, "elm,action,check,off", "*", _on_check_off, obj);
efl_canvas_layout_signal_callback_add
(wd->resize_obj, "elm,action,check,toggle", "*", _on_check_toggle, obj);
efl_access_role_set(obj, EFL_ACCESS_ROLE_CHECK_BOX);
_elm_access_object_register(obj, wd->resize_obj);
_elm_access_text_set
(_elm_access_info_get(obj), ELM_ACCESS_TYPE, E_("Check"));
_elm_access_callback_set
(_elm_access_info_get(obj), ELM_ACCESS_INFO, _access_info_cb, obj);
_elm_access_callback_set
(_elm_access_info_get(obj), ELM_ACCESS_STATE, _access_state_cb, obj);
elm_widget_can_focus_set(obj, EINA_TRUE);
return obj;
}
@ -419,7 +408,6 @@ ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_check, Efl_Ui_Check_Data)
ELM_LAYOUT_TEXT_ALIASES_IMPLEMENT(MY_CLASS_PFX)
#define EFL_UI_CHECK_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_OPS(efl_ui_check), \
ELM_LAYOUT_TEXT_ALIASES_OPS(MY_CLASS_PFX)
#include "efl_ui_check.eo.c"

View File

@ -18,10 +18,6 @@ typedef struct
int state;
} Efl_Ui_Nstate_Data;
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
{NULL, NULL}
};
static Eina_Bool _key_action_activate(Evas_Object *obj, const char *params);
static void _state_active(Evas_Object *obj, Efl_Ui_Nstate_Data *sd);
@ -30,12 +26,33 @@ static const Elm_Action key_actions[] = {
{NULL, NULL}
};
static void
_on_state_changed(void *data,
Evas_Object *o EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
efl_ui_nstate_activate(data);
}
EOLIAN static Efl_Object *
_efl_ui_nstate_efl_object_constructor(Eo *obj, Efl_Ui_Nstate_Data *pd EINA_UNUSED)
_efl_ui_nstate_efl_object_constructor(Eo *obj, Efl_Ui_Nstate_Data *pd)
{
obj = efl_constructor(efl_super(obj, MY_CLASS));
efl_canvas_object_type_set(obj, MY_CLASS_NAME);
evas_object_smart_callbacks_descriptions_set(obj, _smart_callbacks);
elm_widget_sub_object_parent_add(obj);
pd->state = 0;
// Default: 2 states
pd->nstate = 2;
if (!elm_layout_theme_set(obj, "nstate", "base", elm_widget_style_get(obj)))
CRI("Failed to set layout!");
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd, NULL);
efl_canvas_layout_signal_callback_add
(wd->resize_obj, "elm,action,state,changed", "*", _on_state_changed, obj);
//TODO: Add ATSPI call here
return obj;
@ -60,44 +77,6 @@ _state_active(Evas_Object *obj, Efl_Ui_Nstate_Data *sd)
efl_event_callback_legacy_call(obj, EFL_UI_NSTATE_EVENT_STATE_CHANGED, NULL);
}
static void
_on_state_changed(void *data,
Evas_Object *o EINA_UNUSED,
const char *emission EINA_UNUSED,
const char *source EINA_UNUSED)
{
efl_ui_nstate_activate(data);
}
EOLIAN static void
_efl_ui_nstate_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Nstate_Data *pd)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
efl_canvas_group_add(efl_super(obj, MY_CLASS));
elm_widget_sub_object_parent_add(obj);
pd->state = 0;
// Default: 2 states
pd->nstate = 2;
if (!elm_layout_theme_set(obj, "nstate", "base", elm_widget_style_get(obj)))
CRI("Failed to set layout!");
edje_object_signal_callback_add(wd->resize_obj, "elm,action,state,changed",
"*", _on_state_changed, obj);
}
EOLIAN static void
_efl_ui_nstate_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Nstate_Data *pd EINA_UNUSED)
{
ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd);
edje_object_signal_callback_del_full(wd->resize_obj, "elm,action,state,changed",
"*", _on_state_changed, obj);
efl_canvas_group_del(efl_super(obj, MY_CLASS));
}
EOLIAN static int
_efl_ui_nstate_count_get(Eo *obj EINA_UNUSED, Efl_Ui_Nstate_Data *pd)
{
@ -174,9 +153,4 @@ _efl_ui_nstate_class_constructor(Efl_Class *klass)
ELM_WIDGET_KEY_DOWN_DEFAULT_IMPLEMENT(efl_ui_nstate, Efl_Ui_Nstate_Data)
/* Internal EO APIs and hidden overrides */
#define EFL_UI_NSTATE_EXTRA_OPS \
EFL_CANVAS_GROUP_ADD_DEL_OPS(efl_ui_nstate)
#include "efl_ui_nstate.eo.c"