From aa2c166c9c1ee7560735d92c3015e088c4181bde Mon Sep 17 00:00:00 2001 From: Prince Kr Dubey Date: Thu, 11 Nov 2010 14:52:34 +0900 Subject: [PATCH] [edje_externals] Policy set property added. --- src/edje_externals/elm_scroller.c | 214 +++++++++++++++++--------------------- 1 file changed, 94 insertions(+), 120 deletions(-) diff --git a/src/edje_externals/elm_scroller.c b/src/edje_externals/elm_scroller.c index da7b95f..d0f4a3f 100644 --- a/src/edje_externals/elm_scroller.c +++ b/src/edje_externals/elm_scroller.c @@ -3,7 +3,8 @@ typedef struct _Elm_Params_Scroller { Elm_Params base; - const char *policy; + const char *h_policy; + const char *v_policy; Eina_Bool bounce_exist: 1; Eina_Bool h_bounce:1; Eina_Bool h_bounce_exists:1; @@ -11,140 +12,112 @@ typedef struct _Elm_Params_Scroller Eina_Bool v_bounce_exists:1; }Elm_Params_Scroller; -static const char* list_policy_choices[] = {"auto", "on", "off", NULL}; +static const char* scroller_policy_choices[] = {"auto", "on", "off", NULL}; static Elm_Scroller_Policy -_scroller_horizontal_policy_setting_get(const char *horizontal_policy_str) +_scroller_policy_setting_get(const char *policy_str) { unsigned int i; - assert(sizeof(list_policy_choices)/sizeof(list_policy_choices[0]) == ELM_SCROLLER_POLICY_LAST + 1); + assert(sizeof(scroller_policy_choices)/sizeof(scroller_policy_choices[0]) == ELM_SCROLLER_POLICY_LAST + 1); - for (i = 0; i < sizeof(list_policy_choices); i++) + for (i = 0; i < sizeof(scroller_policy_choices); i++) { - if (!strcmp(horizontal_policy_str, list_policy_choices[i])) + if (!strcmp(policy_str, scroller_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; + Elm_Scroller_Policy policy_h, policy_v; + Eina_Bool h_bounce, v_bounce; if (to_params) p = to_params; else if (from_params) p = from_params; else return; - if (p->policy) + if ((p->h_policy) && (p->v_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); - } + policy_h = _scroller_policy_setting_get(p->h_policy); + policy_v = _scroller_policy_setting_get(p->v_policy); + + elm_scroller_policy_set(obj, policy_h, policy_v); + } + else if ((p->h_policy) || (p->v_policy)) + { + elm_scroller_policy_get(obj, &policy_h, &policy_v); + + if (p->h_policy) + policy_h = _scroller_policy_setting_get(p->h_policy); + else + policy_v = _scroller_policy_setting_get(p->v_policy); + 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); - } + else if ((p->h_bounce_exists) || (p->v_bounce_exists)) + { + 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; - } - } +{ + Elm_Scroller_Policy policy_h, policy_v, h_policy, v_policy; + Eina_Bool h_bounce, v_bounce; + + if (!strcmp(param->name, "horizontal policy")) + { + if (param->type == EDJE_EXTERNAL_PARAM_TYPE_CHOICE) + { + elm_scroller_policy_get(obj, &policy_h, &policy_v); + h_policy = _scroller_policy_setting_get(param->s); + + if (h_policy == ELM_SCROLLER_POLICY_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_get(obj, &policy_h, &policy_v); + v_policy = _scroller_vertical_policy_setting_get(param->s); + + if (v_policy == ELM_SCROLLER_POLICY_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) + { + 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) + { + 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)); @@ -155,17 +128,19 @@ external_scroller_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_ static Eina_Bool external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_External_Param *param) { + Elm_Scroller_Policy h_policy, v_policy; + Eina_Bool h_bounce, v_bounce; + 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) + if (h_policy == ELM_SCROLLER_POLICY_LAST) return EINA_FALSE; - param->s = list_policy_choices[h_policy]; + param->s = scroller_policy_choices[h_policy]; return EINA_TRUE; } } @@ -173,13 +148,12 @@ external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_ { 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) + if (v_policy == ELM_SCROLLER_POLICY_LAST) return EINA_FALSE; - param->s = list_policy_choices[v_policy]; + param->s = scroller_policy_choices[v_policy]; return EINA_TRUE; } } @@ -187,7 +161,6 @@ external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_ { 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; @@ -197,7 +170,6 @@ external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_ { 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; @@ -224,9 +196,9 @@ external_scroller_params_parse(void *data, Evas_Object *obj, const Eina_List *pa EINA_LIST_FOREACH(params, l, param) { if (!strcmp(param->name, "horizontal policy")) - mem->policy = eina_stringshare_add(param->s); + mem->h_policy = eina_stringshare_add(param->s); else if (!strcmp(param->name, "vertical policy")) - mem->policy = eina_stringshare_add(param->s); + mem->v_policy = eina_stringshare_add(param->s); else if (!strcmp(param->name, "horizontal bounce")) { mem->h_bounce = param->i; @@ -254,14 +226,16 @@ external_scroller_params_free(void *params) { Elm_Params_Scroller *mem = params; - if (mem->policy) - eina_stringshare_del(mem->policy); + if (mem->h_policy) + eina_stringshare_del(mem->h_policy); + if (mem->v_policy) + eina_stringshare_del(mem->v_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_CHOICE_FULL("horizontal policy", "auto", scroller_policy_choices), + EDJE_EXTERNAL_PARAM_INFO_CHOICE_FULL("vertical policy", "auto", scroller_policy_choices), EDJE_EXTERNAL_PARAM_INFO_BOOL("horizontal bounce"), EDJE_EXTERNAL_PARAM_INFO_BOOL("vertical bounce"), EDJE_EXTERNAL_PARAM_INFO_SENTINEL -- 2.7.4