From: Prince Kr Dubey Date: Fri, 12 Nov 2010 10:33:20 +0000 (+0900) Subject: [edje_external] Scroller, warning removed. X-Git-Tag: 1.0.0+svn.51480slp2+build63~29^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6366160d5847bd980b68047934014eba9334975c;p=framework%2Fuifw%2Felementary.git [edje_external] Scroller, warning removed. --- diff --git a/data/edje_externals/Makefile.am b/data/edje_externals/Makefile.am index ef45da4..79eebc8 100644 --- a/data/edje_externals/Makefile.am +++ b/data/edje_externals/Makefile.am @@ -23,12 +23,14 @@ ico_hoversel.png \ ico_icon.png \ ico_list.png \ ico_map.png \ +ico_nocontents.png \ ico_notepad.png \ ico_page_control.png \ ico_photocam.png \ ico_progressbar.png \ ico_radio.png \ ico_scrolled_entry.png \ +ico_scroller.png \ ico_slider.png \ ico_slideshow.png \ ico_spinner.png \ diff --git a/data/edje_externals/icons.edc b/data/edje_externals/icons.edc index 4a7983b..ca79d34 100644 --- a/data/edje_externals/icons.edc +++ b/data/edje_externals/icons.edc @@ -31,6 +31,7 @@ ICON("photocam") ICON("progressbar") ICON("radio") ICON("scrolled_entry") +ICON("scroller") ICON("searchbar") ICON("slider") ICON("slideshow") diff --git a/src/edje_externals/elm_scroller.c b/src/edje_externals/elm_scroller.c index d0f4a3f..925753b 100644 --- a/src/edje_externals/elm_scroller.c +++ b/src/edje_externals/elm_scroller.c @@ -1,8 +1,11 @@ #include "private.h" +#include -typedef struct _Elm_Params_Scroller -{ +typedef struct _Elm_Params_Scroller Elm_Params_Scroller; + +struct _Elm_Params_Scroller { Elm_Params base; + Evas_Object *content; const char *h_policy; const char *v_policy; Eina_Bool bounce_exist: 1; @@ -10,7 +13,7 @@ typedef struct _Elm_Params_Scroller Eina_Bool h_bounce_exists:1; Eina_Bool v_bounce:1; Eina_Bool v_bounce_exists:1; -}Elm_Params_Scroller; +}; static const char* scroller_policy_choices[] = {"auto", "on", "off", NULL}; @@ -68,6 +71,9 @@ external_scroller_state_set(void *data __UNUSED__, Evas_Object *obj, const void else elm_scroller_bounce_set(obj, h_bounce, p->v_bounce); } + if (p->content) { + elm_scroller_content_set(obj, p->content); + } } static Eina_Bool @@ -93,7 +99,7 @@ external_scroller_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_ 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); + v_policy = _scroller_policy_setting_get(param->s); if (v_policy == ELM_SCROLLER_POLICY_LAST) return EINA_FALSE; elm_scroller_policy_set(obj, policy_h, v_policy); @@ -118,6 +124,15 @@ external_scroller_param_set(void *data __UNUSED__, Evas_Object *obj, const Edje_ return EINA_TRUE; } } + if (!strcmp(param->name, "content") + && param->type == EDJE_EXTERNAL_PARAM_TYPE_STRING) + { + Evas_Object *content = external_common_param_edje_object_get(obj, param); + if ((strcmp(param->s, "")) && (!content)) + return EINA_FALSE; + elm_scroller_content_set(obj, content); + return EINA_TRUE; + } ERR("unknown parameter '%s' of type '%s'", param->name, edje_external_param_type_str(param->type)); @@ -175,6 +190,11 @@ external_scroller_param_get(void *data __UNUSED__, const Evas_Object *obj, Edje_ return EINA_TRUE; } } + if (!strcmp(param->name, "content")) + { + /* not easy to get content name back from live object */ + return EINA_FALSE; + } ERR("unknown parameter '%s' of type '%s'", param->name, edje_external_param_type_str(param->type)); @@ -209,6 +229,8 @@ external_scroller_params_parse(void *data, Evas_Object *obj, const Eina_List *pa mem->v_bounce = param->i; mem->v_bounce_exists = EINA_TRUE; } + if (!strcmp(param->name, "content")) + mem->content = external_common_param_edje_object_get(obj, param); } return mem; @@ -217,7 +239,10 @@ external_scroller_params_parse(void *data, Evas_Object *obj, const Eina_List *pa static Evas_Object *external_scroller_content_get(void *data __UNUSED__, const Evas_Object *obj, const char *content) { - ERR("so content"); + if (!strcmp(content, "content")) + return elm_scroller_content_get(obj); + + ERR("unknown content '%s'", content); return NULL; } @@ -234,10 +259,12 @@ external_scroller_params_free(void *params) } static Edje_External_Param_Info external_scroller_params[] = { + DEFINE_EXTERNAL_COMMON_PARAMS, 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_STRING("content"), EDJE_EXTERNAL_PARAM_INFO_SENTINEL }; diff --git a/src/lib/Elementary.h.in b/src/lib/Elementary.h.in index e0c15e2..80ab213 100644 --- a/src/lib/Elementary.h.in +++ b/src/lib/Elementary.h.in @@ -514,6 +514,7 @@ extern "C" { EAPI Evas_Object *elm_scroller_add(Evas_Object *parent); EAPI void elm_scroller_content_set(Evas_Object *obj, Evas_Object *child); + EAPI Evas_Object *elm_scroller_content_get(const Evas_Object *obj); EAPI Evas_Object *elm_scroller_content_unset(Evas_Object *obj); EAPI void elm_scroller_custom_widget_base_theme_set(Evas_Object *obj, const char *widget, const char *base); EAPI void elm_scroller_content_min_limit(Evas_Object *obj, Eina_Bool w, Eina_Bool h); diff --git a/src/lib/elm_scroller.c b/src/lib/elm_scroller.c index e4d004e..1d60438 100644 --- a/src/lib/elm_scroller.c +++ b/src/lib/elm_scroller.c @@ -393,6 +393,25 @@ elm_scroller_content_set(Evas_Object *obj, Evas_Object *content) } /** + * Get the content of the scroller widget + * + * Return the content object which is set for this widget + * + * @param obj The slider object + * @return The content that is being used + * + * @ingroup Scroller + */ +EAPI Evas_Object * +elm_scroller_content_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + return wd->content; +} + +/** * Unset the content of the scroller widget * * Unparent and return the content object which was set for this widget @@ -607,6 +626,24 @@ elm_scroller_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce } /** + * Get the bounce mode + * + * @param obj The Scroller object + * @param h_bounce Allow bounce horizontally + * @param v_bounce Allow bounce vertically + * + * @ingroup Scroller + */ +EAPI void +elm_scroller_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_bounce_allow_get(wd->scr, h_bounce, v_bounce); +} + +/** * Set scroll page size relative to viewport size * * The scroller is sapale of limiting scrolling by the user to "pages". That