From 90d42393e4fa1207db3f6ec40bf1e8e9b6649798 Mon Sep 17 00:00:00 2001 From: Prince Kr Dubey Date: Wed, 10 Nov 2010 21:10:24 +0900 Subject: [PATCH] [elm_nocontents and elm_scroller] Added to edje_externals. --- data/edje_externals/ico_nocontents.png | Bin 0 -> 218 bytes data/edje_externals/ico_scroller.png | Bin 0 -> 747 bytes data/edje_externals/icons.edc | 2 + src/edje_externals/Makefile.am | 2 + src/edje_externals/elm_nocontents.c | 90 +++++++++++ src/edje_externals/elm_scroller.c | 271 +++++++++++++++++++++++++++++++++ src/edje_externals/modules.inc | 2 + 7 files changed, 367 insertions(+) create mode 100644 data/edje_externals/ico_nocontents.png create mode 100644 data/edje_externals/ico_scroller.png create mode 100644 src/edje_externals/elm_nocontents.c create mode 100644 src/edje_externals/elm_scroller.c diff --git a/data/edje_externals/ico_nocontents.png b/data/edje_externals/ico_nocontents.png new file mode 100644 index 0000000000000000000000000000000000000000..771dac94d2bf16c8fcae169f62fa05f8cb1c2608 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^iXhCv#K6F~zA<$jki(Mh=O>_%)r1c48n{Iv*t(u1=&kHeO=jaadYvoG5SYqy#NY@d%8G= zcpQH_#gU6afrI7h|Nl4FiD_tvvAy=qkumHFo$AB!cH-Ha--N#}ng78sK;`v{opzq( zvm-miq9P?`#HrQV7u9MpF#KcGlE2g4&dV-SaDef6&T%HAm!hdF%{;t;Rxo(F`njxg HN@xNAI#EH7 literal 0 HcmV?d00001 diff --git a/data/edje_externals/ico_scroller.png b/data/edje_externals/ico_scroller.png new file mode 100644 index 0000000000000000000000000000000000000000..8106aa499f744793ccfea38cdbbf9e9f8408ae55 GIT binary patch literal 747 zcmVp&ESznKn+v7uT)5XqtsAl>Owd<8c)w9g2to zRVo!;US8<+dI%xVTBDSrSS-@-_vv=KUncqv=|x`>JvusKb#;||K9ANKAq2zWkWQzA zX`0x!ohi}Bi+$hEKER?V;^5$b!^1-cg8?fmD?B|taejWz-rgRyT8+VAkeNstcXDzv zHo!)!IhxCLU6j_E_4RcMg~Iy}$8nHSvbMH1c0LQzDo=Wh1PH@$>@W;NwAMsX^j}5# zSv4niM?RlNN;$O_Msa+6jO)6Y;>0u?&=ja{ZEaoG>vh`gHV+RETwY#MDwU{KtL*OX z0&shK%hlD@TO~#XXj!{anxw*;d z=_#J)VVWjE5R7-nECfb#OzNm!ugCWGHfLvNl*{GMr|2y0I4MUE1avwb;y5Nr5)8v& zXJ-e)F#f8ZoOak`H6q7xD3{AvmW9@uBuVIYyNlf?JkR6){+^AE4T2y*2!UyuV=-xq zs(IKjK(pC=7hkK@A`CY8VDeDf<0BNs|20 df|OX6#cxRc2_M=BD002ovPDHLkV1nwmP)Ps) literal 0 HcmV?d00001 diff --git a/data/edje_externals/icons.edc b/data/edje_externals/icons.edc index d63a053..e373942 100644 --- a/data/edje_externals/icons.edc +++ b/data/edje_externals/icons.edc @@ -22,11 +22,13 @@ ICON("genlist") ICON("hoversel") ICON("list") ICON("map") +ICON("nocontents") ICON("notepad") ICON("photocam") ICON("progressbar") ICON("radio") ICON("scrolled_entry") +ICON("scroller") ICON("searchbar") ICON("slider") ICON("slideshow") diff --git a/src/edje_externals/Makefile.am b/src/edje_externals/Makefile.am index 57e982e..1d9e414 100644 --- a/src/edje_externals/Makefile.am +++ b/src/edje_externals/Makefile.am @@ -39,11 +39,13 @@ elm_genlist.c \ elm_hoversel.c \ elm_list.c \ elm_map.c \ +elm_nocontents.c \ elm_notepad.c \ elm_photocam.c \ elm_progressbar.c \ elm_radio.c \ elm_scrolled_entry.c \ +elm_scroller.c \ elm_searchbar.c \ elm_slider.c \ elm_slideshow.c \ diff --git a/src/edje_externals/elm_nocontents.c b/src/edje_externals/elm_nocontents.c new file mode 100644 index 0000000..290eea9 --- /dev/null +++ b/src/edje_externals/elm_nocontents.c @@ -0,0 +1,90 @@ +#include "private.h" + +typedef struct _Elm_Params_Nocontents +{ + Elm_Params base; +}Elm_Params_Nocontents; + +static void +external_nocontents_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) +{ + const Elm_Params_Nocontents *p; + + if (to_params) p = to_params; + else if (from_params) p = from_params; + else return; + + if (p->base.label) elm_nocontents_label_set(obj, p->base.label); +} + +static Eina_Bool +external_nocontents_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_nocontents_label_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_nocontents_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_nocontents_label_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_nocontents_params_parse(void *data, Evas_Object *obj, const Eina_List *params) +{ + Elm_Params_Nocontents *mem; + Edje_External_Param *param; + const Eina_List *l; + + mem = external_common_params_parse(Elm_Params_Nocontents, data, obj, params); + if (!mem) + return NULL; + + return mem; +} + +static Evas_Object *external_nocontents_content_get(void *data __UNUSED__, + const Evas_Object *obj, const char *content) +{ + ERR("so content"); + return NULL; +} + +static void +external_nocontents_params_free(void *params) +{ +Elm_Params_Nocontents *mem = params; + external_common_params_free(params); +} + +static Edje_External_Param_Info external_nocontents_params[] = { + DEFINE_EXTERNAL_COMMON_PARAMS, + EDJE_EXTERNAL_PARAM_INFO_SENTINEL +}; + +DEFINE_EXTERNAL_ICON_ADD(nocontents, "nocontents"); +DEFINE_EXTERNAL_TYPE_SIMPLE(nocontents, "Nocontents"); diff --git a/src/edje_externals/elm_scroller.c b/src/edje_externals/elm_scroller.c new file mode 100644 index 0000000..da7b95f --- /dev/null +++ b/src/edje_externals/elm_scroller.c @@ -0,0 +1,271 @@ +#include "private.h" + +typedef struct _Elm_Params_Scroller +{ + Elm_Params base; + const char *policy; + Eina_Bool bounce_exist: 1; + Eina_Bool h_bounce:1; + Eina_Bool h_bounce_exists:1; + Eina_Bool v_bounce:1; + Eina_Bool v_bounce_exists:1; +}Elm_Params_Scroller; + +static const char* list_policy_choices[] = {"auto", "on", "off", NULL}; + +static Elm_Scroller_Policy +_scroller_horizontal_policy_setting_get(const char *horizontal_policy_str) +{ + unsigned int i; + + assert(sizeof(list_policy_choices)/sizeof(list_policy_choices[0]) == ELM_SCROLLER_POLICY_LAST + 1); + + for (i = 0; i < sizeof(list_policy_choices); i++) + { + if (!strcmp(horizontal_policy_str, list_policy_choices[i])) + return i; + } + return ELM_SCROLLER_POLICY_LAST; +} + +static Elm_Scroller_Policy +_scroller_vertical_policy_setting_get(const char *vertical_policy_str) +{ + unsigned int i; + + assert(sizeof(list_policy_choices)/sizeof(list_policy_choices[0]) == ELM_SCROLLER_POLICY_LAST + 1); + + for (i = 0; i < sizeof(list_policy_choices); i++) + { + if (!strcmp(vertical_policy_str, list_policy_choices[i])) + return i; + } + return ELM_SCROLLER_POLICY_LAST; +} + +static void +external_scroller_state_set(void *data __UNUSED__, Evas_Object *obj, const void *from_params, const void *to_params, float pos __UNUSED__) +{ + const Elm_Params_Scroller *p; + + if (to_params) p = to_params; + else if (from_params) p = from_params; + else return; + + if (p->policy) + { + Elm_Scroller_Policy h_policy; + Elm_Scroller_Policy v_policy; + + h_policy = _scroller_horizontal_policy_setting_get(p->policy); + v_policy = _scroller_vertical_policy_setting_get(p->policy); + + if (h_policy != ELM_LIST_LAST && v_policy != ELM_LIST_LAST) + elm_scroller_policy_set(obj, h_policy, v_policy); + else + { + Elm_Scroller_Policy /*unsigned int*/ policy_h, policy_v; + + elm_scroller_policy_get(obj, &policy_h, &policy_v); + + if (h_policy != ELM_LIST_LAST && v_policy == ELM_LIST_LAST) + elm_scroller_policy_set(obj, h_policy, policy_v); + else if(v_policy != ELM_LIST_LAST && h_policy == ELM_LIST_LAST) + elm_scroller_policy_set(obj, policy_h, v_policy); + else + elm_scroller_policy_set(obj, policy_h, policy_v); + } + } + if ((p->h_bounce_exists) && (p->v_bounce_exists)) + elm_scroller_bounce_set(obj, p->h_bounce, p->v_bounce); + else if ((p->h_bounce_exists) || (p->v_bounce_exists)) + { + Eina_Bool h_bounce, v_bounce; + + elm_scroller_bounce_get(obj, &h_bounce, &v_bounce); + if (p->h_bounce_exists) + elm_scroller_bounce_set(obj, p->h_bounce, v_bounce); + else + elm_scroller_bounce_set(obj, h_bounce, p->v_bounce); + } +} + +static Eina_Bool +external_scroller_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_External_Param *param) + { + if (!strcmp(param->name, "horizontal policy")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) + { + Elm_Scroller_Policy h_policy; + Elm_Scroller_Policy policy_h, policy_v; + + elm_scroller_policy_get(obj, &policy_h, &policy_v); + + h_policy = _scroller_horizontal_policy_setting_get(param->s); + + if (h_policy == ELM_LIST_LAST) return EINA_FALSE; + elm_scroller_policy_set(obj, h_policy, policy_v); + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "vertical policy")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) + { + Elm_Scroller_Policy v_policy; + Elm_Scroller_Policy policy_h, policy_v; + + elm_scroller_policy_get(obj, &policy_h, &policy_v); + + v_policy = _scroller_vertical_policy_setting_get(param->s); + + if (v_policy == ELM_LIST_LAST) return EINA_FALSE; + elm_scroller_policy_set(obj, policy_h, v_policy); + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "horizontal bounce")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + Eina_Bool h_bounce, v_bounce; + elm_scroller_bounce_get(obj, &h_bounce, &v_bounce); + elm_scroller_bounce_set(obj, param->i, v_bounce); + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "vertical bounce")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + Eina_Bool h_bounce, v_bounce; + elm_scroller_bounce_get(obj, &h_bounce, &v_bounce); + elm_scroller_bounce_set(obj, h_bounce, 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_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param) +{ + if (!strcmp(param->name, "horizontal policy")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) + { + Elm_Scroller_Policy h_policy, v_policy; + elm_scroller_policy_get(obj, &h_policy, &v_policy); + + if (h_policy == ELM_LIST_LAST) + return EINA_FALSE; + + param->s = list_policy_choices[h_policy]; + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "vertical policy")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) + { + Elm_Scroller_Policy h_policy, v_policy; + elm_scroller_policy_get(obj, &h_policy, &v_policy); + + if (v_policy == ELM_LIST_LAST) + return EINA_FALSE; + + param->s = list_policy_choices[v_policy]; + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "horizontal bounce")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + Eina_Bool h_bounce, v_bounce; + elm_scroller_bounce_get(obj, &h_bounce, &v_bounce); + param->i = h_bounce; + return EINA_TRUE; + } + } + else if (!strcmp(param->name, "vertical bounce")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_BOOL) + { + Eina_Bool h_bounce, v_bounce; + elm_scroller_bounce_get(obj, &h_bounce, &v_bounce); + param->i = v_bounce; + 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_scroller_params_parse(void *data, Evas_Object *obj, const Eina_List *params) +{ + Elm_Params_Scroller *mem; + Edje_External_Param *param; + const Eina_List *l; + + mem = calloc(1, sizeof(Elm_Params_Scroller)); + if (!mem) + return NULL; + + EINA_LIST_FOREACH(params, l, param) + { + if (!strcmp(param->name, "horizontal policy")) + mem->policy = eina_stringshare_add(param->s); + else if (!strcmp(param->name, "vertical policy")) + mem->policy = eina_stringshare_add(param->s); + else if (!strcmp(param->name, "horizontal bounce")) + { + mem->h_bounce = param->i; + mem->h_bounce_exists = EINA_TRUE; + } + else if (!strcmp(param->name, "vertical bounce")) + { + mem->v_bounce = param->i; + mem->v_bounce_exists = EINA_TRUE; + } + } + + return mem; +} + +static Evas_Object *external_scroller_content_get(void *data __UNUSED__, + const Evas_Object *obj, const char *content) +{ + ERR("so content"); + return NULL; +} + +static void +external_scroller_params_free(void *params) +{ + Elm_Params_Scroller *mem = params; + + if (mem->policy) + eina_stringshare_del(mem->policy); + external_common_params_free(params); +} + +static Edje_External_Param_Info external_scroller_params[] = { + EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("horizontal policy", "auto", list_policy_choices), + EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("vertical policy", "auto", list_policy_choices), + EDJE_EXTERNAL_PARAM_INFO_BOOL("horizontal bounce"), + EDJE_EXTERNAL_PARAM_INFO_BOOL("vertical bounce"), + EDJE_EXTERNAL_PARAM_INFO_SENTINEL +}; + +DEFINE_EXTERNAL_ICON_ADD(scroller, "scroller"); +DEFINE_EXTERNAL_TYPE_SIMPLE(scroller, "Scroller"); diff --git a/src/edje_externals/modules.inc b/src/edje_externals/modules.inc index 2a4d374..c5945fb 100644 --- a/src/edje_externals/modules.inc +++ b/src/edje_externals/modules.inc @@ -10,11 +10,13 @@ DEFINE_TYPE(genlist) DEFINE_TYPE(hoversel) DEFINE_TYPE(list) DEFINE_TYPE(map) +DEFINE_TYPE(nocontents) DEFINE_TYPE(notepad) DEFINE_TYPE(photocam) DEFINE_TYPE(progressbar) DEFINE_TYPE(radio) DEFINE_TYPE(scrolled_entry) +DEFINE_TYPE(scroller) DEFINE_TYPE(searchbar) DEFINE_TYPE(slider) DEFINE_TYPE(slideshow) -- 2.7.4