elementary: Efl.Ui.Image now rely on Efl.Ui.Widget infrastructure for View and Property_Bind.

Reviewed-by: Vitor Sousa da Silva <vitorsousa@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D7942
This commit is contained in:
Cedric BAIL 2019-02-12 10:52:43 -08:00
parent d1d30f442b
commit e7afae9a8b
3 changed files with 25 additions and 22 deletions

View File

@ -595,6 +595,8 @@ _efl_ui_image_efl_canvas_group_group_add(Eo *obj, Efl_Ui_Image_Data *priv)
EOLIAN static void
_efl_ui_image_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Image_Data *sd)
{
Efl_Model *model;
if (elm_widget_is_legacy(obj))
efl_event_callback_del(obj, EFL_GFX_ENTITY_EVENT_HINTS_CHANGED,
_on_size_hints_changed, sd);
@ -607,12 +609,11 @@ _efl_ui_image_efl_canvas_group_group_del(Eo *obj, Efl_Ui_Image_Data *sd)
if (sd->remote.binbuf) ELM_SAFE_FREE(sd->remote.binbuf, eina_binbuf_free);
ELM_SAFE_FREE(sd->remote.key, eina_stringshare_del);
if (sd->property.model)
model = efl_ui_view_model_get(obj);
if (model)
{
efl_event_callback_del(sd->property.model, EFL_MODEL_EVENT_PROPERTIES_CHANGED,
efl_event_callback_del(model, EFL_MODEL_EVENT_PROPERTIES_CHANGED,
_efl_ui_image_model_properties_changed_cb, obj);
efl_unref(sd->property.model);
sd->property.model = NULL;
}
efl_canvas_group_del(efl_super(obj, MY_CLASS));
@ -1849,12 +1850,14 @@ _update_viewmodel(Eo *obj, Efl_Ui_Image_Data *pd)
Eina_File *f = NULL;
char *file = NULL;
char *key = NULL;
Efl_Model *model;
if (!pd->property.model) return ;
model = efl_ui_view_model_get(obj);
if (!model) return ;
vfile = efl_model_property_get(pd->property.model, pd->property.file);
vfile = efl_model_property_get(model, pd->property.file);
if (!vfile) return;
vkey = efl_model_property_get(pd->property.model, pd->property.key);
vkey = efl_model_property_get(model, pd->property.key);
if (eina_value_type_get(vfile) == EINA_VALUE_TYPE_ERROR)
goto err;
@ -1926,29 +1929,27 @@ _efl_ui_image_model_properties_changed_cb(void *data, const Efl_Event *event)
EOLIAN static void
_efl_ui_image_efl_ui_view_model_set(Eo *obj, Efl_Ui_Image_Data *pd, Efl_Model *model)
{
if (pd->property.model)
Efl_Model *setted;
setted = efl_ui_view_model_get(obj);
if (setted)
{
efl_event_callback_del(pd->property.model, EFL_MODEL_EVENT_PROPERTIES_CHANGED,
efl_event_callback_del(setted, EFL_MODEL_EVENT_PROPERTIES_CHANGED,
_efl_ui_image_model_properties_changed_cb, obj);
}
efl_replace(&pd->property.model, model);
efl_ui_view_model_set(efl_super(obj, EFL_UI_IMAGE_CLASS), model);
if (model)
setted = efl_ui_view_model_get(obj);
if (setted)
{
efl_event_callback_add(model, EFL_MODEL_EVENT_PROPERTIES_CHANGED,
efl_event_callback_add(setted, EFL_MODEL_EVENT_PROPERTIES_CHANGED,
_efl_ui_image_model_properties_changed_cb, obj);
}
_update_viewmodel(obj, pd);
}
EOLIAN static Efl_Model *
_efl_ui_image_efl_ui_view_model_get(const Eo *obj EINA_UNUSED, Efl_Ui_Image_Data *pd)
{
return pd->property.model;
}
EOLIAN static Eina_Error
_efl_ui_image_efl_ui_property_bind_property_bind(Eo *obj, Efl_Ui_Image_Data *pd, const char *key, const char *property)
{
@ -1967,7 +1968,10 @@ _efl_ui_image_efl_ui_property_bind_property_bind(Eo *obj, Efl_Ui_Image_Data *pd,
{
eina_stringshare_replace(&pd->property.key, property);
}
else return EINA_FALSE;
else
{
return efl_ui_property_bind(efl_super(obj, EFL_UI_IMAGE_CLASS), key, property);
}
_update_viewmodel(obj, pd);
return 0;

View File

@ -22,7 +22,7 @@ class @beta Efl.Ui.Image extends Efl.Ui.Widget implements Efl.Ui.Clickable, Efl.
Efl.File, Efl.Gfx.Image, Efl.Gfx.Image_Load_Controller, Efl.Player, Efl.Gfx.View,
Efl.Access.Component, Efl.Access.Widget.Action, Efl.Gfx.Color,
Efl.Orientation,
Efl.Ui.View, Efl.Ui.Property_Bind, Efl.Layout.Calc,
Efl.Layout.Calc,
Efl.Layout.Group, Efl.Layout.Signal
{
[[ Efl UI image class]]
@ -119,7 +119,7 @@ class @beta Efl.Ui.Image extends Efl.Ui.Widget implements Efl.Ui.Clickable, Efl.
Efl.Canvas.Group.group_member_add;
Efl.Ui.Draggable.drag_target { get; set; }
Efl.Ui.Property_Bind.property_bind;
Efl.Ui.View.model { get; set; }
Efl.Ui.View.model { set; }
Efl.Ui.Widget.theme_apply;
Efl.Ui.Widget.widget_input_event_handler;
Efl.Access.Component.extents { get; }

View File

@ -80,7 +80,6 @@ struct _Efl_Ui_Image_Data
const char *stdicon;
struct {
Efl_Model *model;
Eina_Stringshare *file;
Eina_Stringshare *key;