forked from enlightenment/efl
elementary, elm_layout added model_connect signal emit
This commit is contained in:
parent
84464fd103
commit
d5761bf03e
|
@ -78,6 +78,16 @@ _label_init(Evas_Object *win, Evas_Object *box, const char *text)
|
|||
return widget;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_signal_cb(void *data,
|
||||
Evas_Object *obj EINA_UNUSED,
|
||||
const char *emission,
|
||||
const char *source)
|
||||
{
|
||||
printf(">> Signal callback emission='%s' source='%s'\n", emission, source);
|
||||
}
|
||||
|
||||
EAPI_MAIN int
|
||||
elm_main(int argc, char **argv)
|
||||
{
|
||||
|
@ -136,6 +146,8 @@ elm_main(int argc, char **argv)
|
|||
elm_box_pack_end(bxr, priv->bt);
|
||||
elm_object_text_set(priv->bt, "update model");
|
||||
evas_object_smart_callback_add(priv->bt, "clicked", _update_cb, priv);
|
||||
edje_obj_signal_callback_add(priv->bt, "test*" , "*", _signal_cb, priv);
|
||||
efl_ui_model_connect(priv->bt, "signal/test-%v", "size");
|
||||
evas_object_show(priv->bt);
|
||||
|
||||
/* Image widget */
|
||||
|
|
|
@ -28,6 +28,8 @@ static const char SIG_THEME_CHANGED[] = "theme,changed";
|
|||
const char SIG_LAYOUT_FOCUSED[] = "focused";
|
||||
const char SIG_LAYOUT_UNFOCUSED[] = "unfocused";
|
||||
|
||||
const char SIGNAL_PREFIX[] = "signal/";
|
||||
|
||||
/* smart callbacks coming from elm layout objects: */
|
||||
static const Evas_Smart_Cb_Description _smart_callbacks[] = {
|
||||
{SIG_THEME_CHANGED, ""},
|
||||
|
@ -1960,6 +1962,30 @@ _prop_promise_error_cb(void* data, Eina_Error err EINA_UNUSED)
|
|||
free(sub_pp);
|
||||
}
|
||||
|
||||
static void
|
||||
_view_update(Elm_Layout_Smart_Data *pd, const char *name, const char *property)
|
||||
{
|
||||
const char *source;
|
||||
Eina_Strbuf *buf;
|
||||
|
||||
if (strncmp(SIGNAL_PREFIX, name, sizeof(SIGNAL_PREFIX) -1) != 0)
|
||||
{
|
||||
elm_layout_text_set(pd->obj, name, property);
|
||||
return;
|
||||
}
|
||||
|
||||
ELM_WIDGET_DATA_GET_OR_RETURN(pd->obj, wd);
|
||||
source = eo_class_name_get(eo_class_get(pd->model));
|
||||
|
||||
buf = eina_strbuf_new();
|
||||
eina_strbuf_append(buf, name);
|
||||
eina_strbuf_remove(buf, 0, sizeof(SIGNAL_PREFIX)-1);
|
||||
eina_strbuf_replace_all(buf, "%v", property);
|
||||
|
||||
edje_object_signal_emit(wd->resize_obj, eina_strbuf_string_get(buf), source);
|
||||
eina_strbuf_free(buf);
|
||||
}
|
||||
|
||||
static void
|
||||
_prop_promise_then_cb(void* data, void* values)
|
||||
{
|
||||
|
@ -1980,12 +2006,12 @@ _prop_promise_then_cb(void* data, void* values)
|
|||
if (vtype == EINA_VALUE_TYPE_STRING || vtype == EINA_VALUE_TYPE_STRINGSHARE)
|
||||
{
|
||||
eina_value_get(value, &text);
|
||||
elm_layout_text_set(pd->obj, name, text);
|
||||
_view_update(pd, name, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
text = eina_value_to_string(value);
|
||||
elm_layout_text_set(pd->obj, name, text);
|
||||
_view_update(pd, name, text);
|
||||
free(text);
|
||||
}
|
||||
eina_stringshare_del(name);
|
||||
|
|
Loading…
Reference in New Issue