diff --git a/legacy/elementary/data/edje_externals/Makefile.am b/legacy/elementary/data/edje_externals/Makefile.am index bc4fb23316..bc54ae27c0 100644 --- a/legacy/elementary/data/edje_externals/Makefile.am +++ b/legacy/elementary/data/edje_externals/Makefile.am @@ -9,6 +9,7 @@ files_DATA = icons.edj EXTRA_DIST = \ icons.edc \ +ico_anchorview.png \ ico_bubble.png \ ico_button.png \ ico_check.png \ diff --git a/legacy/elementary/data/edje_externals/ico_anchorview.png b/legacy/elementary/data/edje_externals/ico_anchorview.png new file mode 100644 index 0000000000..a62138e97a Binary files /dev/null and b/legacy/elementary/data/edje_externals/ico_anchorview.png differ diff --git a/legacy/elementary/data/edje_externals/icons.edc b/legacy/elementary/data/edje_externals/icons.edc index 9120ea6813..fbf1998f06 100644 --- a/legacy/elementary/data/edje_externals/icons.edc +++ b/legacy/elementary/data/edje_externals/icons.edc @@ -10,6 +10,7 @@ collections { group { name: "ico_"_name; \ image.normal: "ico_"_name".png"; \ }}}}} +ICON("anchorview") ICON("bubble") ICON("button") ICON("check") diff --git a/legacy/elementary/src/edje_externals/Makefile.am b/legacy/elementary/src/edje_externals/Makefile.am index 92d593a87f..979fb0e02b 100644 --- a/legacy/elementary/src/edje_externals/Makefile.am +++ b/legacy/elementary/src/edje_externals/Makefile.am @@ -26,6 +26,7 @@ pkg_LTLIBRARIES = elm.la elm_la_SOURCES = private.h \ modules.inc \ elm.c \ +elm_anchorview.c \ elm_bubble.c \ elm_button.c \ elm_check.c \ diff --git a/legacy/elementary/src/edje_externals/elm_anchorview.c b/legacy/elementary/src/edje_externals/elm_anchorview.c new file mode 100644 index 0000000000..88ebdff1ce --- /dev/null +++ b/legacy/elementary/src/edje_externals/elm_anchorview.c @@ -0,0 +1,95 @@ +#include "private.h" + +typedef struct _Elm_Params_Anchorview +{ + const char *text; +} Elm_Params_Anchorview; + +static void +external_anchorview_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) +{ + const Elm_Params_Anchorview *p; + + if (to_params) p = to_params; + else if (from_params) p = from_params; + else return; + + if (p->text) + { + elm_anchorview_text_set(obj, p->text); + } +} + +static Eina_Bool +external_anchorview_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param) +{ + if (!strcmp(param->name, "text")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + elm_anchorview_text_set(obj, param->s); + return EINA_TRUE; + } + } + + ERR("unknown parameter '%s' of type '%s'", + param->name, edje_external_param_type_str(param->type)); + + return EINA_FALSE; +} + +static Eina_Bool +external_anchorview_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param) +{ + if (!strcmp(param->name, "text")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + param->s = elm_anchorview_text_get(obj); + return EINA_TRUE; + } + } + + ERR("unknown parameter '%s' of type '%s'", + param->name, edje_external_param_type_str(param->type)); + + return EINA_FALSE; +} + +static void * +external_anchorview_params_parse(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const Eina_List *params) +{ + Elm_Params_Anchorview *mem; + Edje_External_Param *param; + const Eina_List *l; + + mem = calloc(1, sizeof(Elm_Params_Anchorview)); + if (!mem) + return NULL; + + EINA_LIST_FOREACH(params, l, param) + { + if (!strcmp(param->name, "text")) + mem->text = eina_stringshare_add(param->s); + } + + return mem; +} + +static void +external_anchorview_params_free(void *params) +{ + Elm_Params_Anchorview *mem = params; + + if (mem->text) + eina_stringshare_del(mem->text); + free(mem); +} + +static Edje_External_Param_Info external_anchorview_params[] = { + EDJE_EXTERNAL_PARAM_INFO_STRING_DEFAULT("text", "some text"), + EDJE_EXTERNAL_PARAM_INFO_SENTINEL +}; + +DEFINE_EXTERNAL_ICON_ADD(anchorview, "anchorview") +DEFINE_EXTERNAL_TYPE_SIMPLE(anchorview, "Anchorview"); diff --git a/legacy/elementary/src/edje_externals/modules.inc b/legacy/elementary/src/edje_externals/modules.inc index b582a138d3..0d304413e8 100644 --- a/legacy/elementary/src/edje_externals/modules.inc +++ b/legacy/elementary/src/edje_externals/modules.inc @@ -1,3 +1,4 @@ +DEFINE_TYPE(anchorview) DEFINE_TYPE(bubble) DEFINE_TYPE(button) DEFINE_TYPE(check) diff --git a/legacy/elementary/src/lib/elc_anchorview.c b/legacy/elementary/src/lib/elc_anchorview.c index d026176057..959d46b6ad 100644 --- a/legacy/elementary/src/lib/elc_anchorview.c +++ b/legacy/elementary/src/lib/elc_anchorview.c @@ -23,6 +23,15 @@ struct _Widget_Data }; static const char *widtype = NULL; + +static const char SIG_ANCHOR_CLICKED[] = "anchor,clicked"; +static const Evas_Smart_Cb_Description _signals[] = { + {SIG_ANCHOR_CLICKED, ""}, /* TODO: declare the type properly, as data is + * being passed + */ + {NULL, NULL} +}; + static void _del_pre_hook(Evas_Object *obj); static void _del_hook(Evas_Object *obj); static void _sizing_eval(Evas_Object *obj); @@ -107,7 +116,7 @@ _anchor_clicked(void *data, Evas_Object *obj, void *event_info) if (py < (y + (h / 3))) ei.hover_top = 0; ei.hover_bottom = 1; if (py > (y + ((h * 2) / 3))) ei.hover_bottom = 0; - evas_object_smart_callback_call(data, "anchor,clicked", &ei); + evas_object_smart_callback_call(data, SIG_ANCHOR_CLICKED, &ei); evas_object_smart_callback_add(wd->hover, "clicked", _hover_clicked, data); evas_object_show(wd->hover); } @@ -192,6 +201,26 @@ elm_anchorview_text_set(Evas_Object *obj, const char *text) _sizing_eval(obj); } +/** + * Get the markup text set for the anchorview + * + * This retrieves back the string set by @c elm_anchorview_text_set(). + * + * @param obj The anchorview object + * @return text The markup text set or @c NULL, either if it was not set + * or an error ocurred + * + * @ingroup Anchorview + */ +EAPI const char* +elm_anchorview_text_get(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return elm_entry_entry_get(wd->entry); +} + /** * Set the parent of the hover popup *