From 5dd010bb26c52b74e439ce1df828e72a362dc6f7 Mon Sep 17 00:00:00 2001 From: Tiago Rezende Campos Falcao Date: Tue, 30 Mar 2010 20:41:56 +0000 Subject: [PATCH] Hoversel External SVN revision: 47607 --- .../data/edje_externals/Makefile.am | 1 + .../data/edje_externals/ico_hoversel.png | Bin 0 -> 4670 bytes .../elementary/data/edje_externals/icons.edc | 1 + .../elementary/src/edje_externals/Makefile.am | 1 + .../src/edje_externals/elm_hoversel.c | 140 ++++++++++++++++++ .../elementary/src/edje_externals/modules.inc | 1 + legacy/elementary/src/lib/Elementary.h.in | 1 + legacy/elementary/src/lib/elc_hoversel.c | 9 ++ 8 files changed, 154 insertions(+) create mode 100644 legacy/elementary/data/edje_externals/ico_hoversel.png create mode 100644 legacy/elementary/src/edje_externals/elm_hoversel.c diff --git a/legacy/elementary/data/edje_externals/Makefile.am b/legacy/elementary/data/edje_externals/Makefile.am index 4fd17a84e2..829e4fd5dd 100644 --- a/legacy/elementary/data/edje_externals/Makefile.am +++ b/legacy/elementary/data/edje_externals/Makefile.am @@ -14,6 +14,7 @@ ico_anchorview.png \ ico_bubble.png \ ico_button.png \ ico_check.png \ +ico_hoversel.png \ ico_notepad.png \ ico_radio.png \ ico_scrolled_entry.png \ diff --git a/legacy/elementary/data/edje_externals/ico_hoversel.png b/legacy/elementary/data/edje_externals/ico_hoversel.png new file mode 100644 index 0000000000000000000000000000000000000000..134d12db99c7ab092bfdf4e4a3eed39c2b782ae5 GIT binary patch literal 4670 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 HtC0Tz_%V@w literal 0 HcmV?d00001 diff --git a/legacy/elementary/data/edje_externals/icons.edc b/legacy/elementary/data/edje_externals/icons.edc index de19422fd8..45425fd736 100644 --- a/legacy/elementary/data/edje_externals/icons.edc +++ b/legacy/elementary/data/edje_externals/icons.edc @@ -15,6 +15,7 @@ ICON("anchorview") ICON("bubble") ICON("button") ICON("check") +ICON("hoversel") ICON("notepad") ICON("radio") ICON("scrolled_entry") diff --git a/legacy/elementary/src/edje_externals/Makefile.am b/legacy/elementary/src/edje_externals/Makefile.am index 067ec707b6..eed93555d0 100644 --- a/legacy/elementary/src/edje_externals/Makefile.am +++ b/legacy/elementary/src/edje_externals/Makefile.am @@ -31,6 +31,7 @@ elm_anchorview.c \ elm_bubble.c \ elm_button.c \ elm_check.c \ +elm_hoversel.c \ elm_notepad.c \ elm_radio.c \ elm_scrolled_entry.c \ diff --git a/legacy/elementary/src/edje_externals/elm_hoversel.c b/legacy/elementary/src/edje_externals/elm_hoversel.c new file mode 100644 index 0000000000..902a956eb2 --- /dev/null +++ b/legacy/elementary/src/edje_externals/elm_hoversel.c @@ -0,0 +1,140 @@ +#include "private.h" + +typedef struct _Elm_Params_Hoversel +{ + Elm_Params base; + Evas_Object *icon; + Eina_Bool horizontal:1; + Eina_Bool horizontal_exists:1; +} Elm_Params_Hoversel; + +static void +external_hoversel_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) +{ + const Elm_Params_Hoversel *p; + + if (to_params) p = to_params; + else if (from_params) p = from_params; + else return; + + if (p->base.label) + elm_hoversel_label_set(obj, p->base.label); + if (p->icon) + elm_hoversel_icon_set(obj, p->icon); + if (p->horizontal_exists) + elm_hoversel_horizontal_set(obj, p->horizontal); +} + +static Eina_Bool +external_hoversel_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param) +{ + if (!strcmp(param->name, "label")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + elm_hoversel_label_set(obj, param->s); + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "icon")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + Evas_Object *icon = external_common_param_icon_get(obj, param); + if (icon) + { + elm_hoversel_icon_set(obj, icon); + return EINA_TRUE; + } + } + } + else if (!strcmp(param->name, "horizontal")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + elm_hoversel_horizontal_set(obj, param->i); + 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_hoversel_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param) +{ + if (!strcmp(param->name, "label")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + param->s = elm_hoversel_label_get(obj); + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "icon")) + { + /* not easy to get icon name back from live object */ + return EINA_FALSE; + } + else if (!strcmp(param->name, "horizontal")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + param->i = elm_hoversel_horizontal_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_hoversel_params_parse(void *data, Evas_Object *obj, const Eina_List *params) +{ + Elm_Params_Hoversel *mem; + Edje_External_Param *param; + const Eina_List *l; + + mem = external_common_params_parse(Elm_Params_Hoversel, data, obj, params); + if (!mem) + return NULL; + + external_common_icon_param_parse(&mem->icon, obj, params); + + EINA_LIST_FOREACH(params, l, param) + { + if (!strcmp(param->name, "horizontal")) + { + mem->horizontal = !!param->i; + mem->horizontal_exists = EINA_TRUE; + } + } + + return mem; +} + + static void +external_hoversel_params_free(void *params) +{ + Elm_Params_Hoversel *mem = params; + + if (mem->icon) + evas_object_del(mem->icon); + external_common_params_free(params); +} + +static Edje_External_Param_Info external_hoversel_params[] = { + DEFINE_EXTERNAL_COMMON_PARAMS, + EDJE_EXTERNAL_PARAM_INFO_STRING("icon"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("horizontal"), + EDJE_EXTERNAL_PARAM_INFO_SENTINEL +}; + +DEFINE_EXTERNAL_ICON_ADD(hoversel, "hoversel"); +DEFINE_EXTERNAL_TYPE_SIMPLE(hoversel, "Hoversel"); diff --git a/legacy/elementary/src/edje_externals/modules.inc b/legacy/elementary/src/edje_externals/modules.inc index 6517ba10a4..8543d130ea 100644 --- a/legacy/elementary/src/edje_externals/modules.inc +++ b/legacy/elementary/src/edje_externals/modules.inc @@ -3,6 +3,7 @@ DEFINE_TYPE(anchorview) DEFINE_TYPE(bubble) DEFINE_TYPE(button) DEFINE_TYPE(check) +DEFINE_TYPE(hoversel) DEFINE_TYPE(notepad) DEFINE_TYPE(radio) DEFINE_TYPE(scrolled_entry) diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index 6d1a602ba9..a680ca31d7 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -738,6 +738,7 @@ extern "C" { EAPI Evas_Object *elm_hoversel_add(Evas_Object *parent); EAPI void elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal); + EAPI Eina_Bool elm_hoversel_horizontal_get(const Evas_Object *obj); EAPI void elm_hoversel_hover_parent_set(Evas_Object *obj, Evas_Object *parent); EAPI void elm_hoversel_label_set(Evas_Object *obj, const char *label); EAPI const char *elm_hoversel_label_get(const Evas_Object *obj); diff --git a/legacy/elementary/src/lib/elc_hoversel.c b/legacy/elementary/src/lib/elc_hoversel.c index 329516dfac..fc4a765b1b 100644 --- a/legacy/elementary/src/lib/elc_hoversel.c +++ b/legacy/elementary/src/lib/elc_hoversel.c @@ -318,6 +318,15 @@ elm_hoversel_horizontal_set(Evas_Object *obj, Eina_Bool horizontal) wd->horizontal = !!horizontal; } +EAPI Eina_Bool +elm_hoversel_horizontal_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) EINA_FALSE; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return EINA_FALSE; + return wd->horizontal; +} + /** * Get the hoversel button label *