From 9987b1034f3867b118ce3efc5509b27750ebefba Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 21 Oct 2011 23:53:41 +0000 Subject: [PATCH] implement the following: EAPI void elm_gen_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select); EAPI Eina_Bool elm_gen_always_select_mode_get(const Evas_Object *obj); EAPI void elm_gen_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select); EAPI Eina_Bool elm_gen_no_select_mode_get(const Evas_Object *obj); EAPI void elm_gen_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce); EAPI void elm_gen_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce); EAPI void elm_gen_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel); EAPI void elm_gen_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel); EAPI void elm_gen_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize); EAPI void elm_gen_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber); EAPI void elm_gen_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber); EAPI void elm_gen_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber); EAPI void elm_gen_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber); EAPI Elm_Gen_Item *elm_gen_first_item_get(const Evas_Object *obj); EAPI Elm_Gen_Item *elm_gen_last_item_get(const Evas_Object *obj); EAPI Elm_Gen_Item *elm_gen_item_next_get(const Elm_Gen_Item *it); EAPI Elm_Gen_Item *elm_gen_item_prev_get(const Elm_Gen_Item *it); EAPI Evas_Object *elm_gen_item_gen_get(const Elm_Gen_Item *it); SVN revision: 64281 --- legacy/elementary/src/lib/Elementary.h.in | 18 ++ legacy/elementary/src/lib/elm_gen.c | 205 ++++++++++++++++++++++ 2 files changed, 223 insertions(+) diff --git a/legacy/elementary/src/lib/Elementary.h.in b/legacy/elementary/src/lib/Elementary.h.in index 97fe4d69bd..fc80c3cde5 100644 --- a/legacy/elementary/src/lib/Elementary.h.in +++ b/legacy/elementary/src/lib/Elementary.h.in @@ -7923,6 +7923,24 @@ extern "C" { EAPI void elm_gen_clear(Evas_Object *obj); EAPI void elm_gen_item_selected_set(Elm_Gen_Item *it, Eina_Bool selected); EAPI Eina_Bool elm_gen_item_selected_get(const Elm_Gen_Item *it); + EAPI void elm_gen_always_select_mode_set(Evas_Object *obj, Eina_Bool always_select); + EAPI Eina_Bool elm_gen_always_select_mode_get(const Evas_Object *obj); + EAPI void elm_gen_no_select_mode_set(Evas_Object *obj, Eina_Bool no_select); + EAPI Eina_Bool elm_gen_no_select_mode_get(const Evas_Object *obj); + EAPI void elm_gen_bounce_set(Evas_Object *obj, Eina_Bool h_bounce, Eina_Bool v_bounce); + EAPI void elm_gen_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce); + EAPI void elm_gen_page_relative_set(Evas_Object *obj, double h_pagerel, double v_pagerel); + EAPI void elm_gen_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel); + EAPI void elm_gen_page_size_set(Evas_Object *obj, Evas_Coord h_pagesize, Evas_Coord v_pagesize); + EAPI void elm_gen_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber); + EAPI void elm_gen_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber); + EAPI void elm_gen_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber); + EAPI void elm_gen_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber); + EAPI Elm_Gen_Item *elm_gen_first_item_get(const Evas_Object *obj); + EAPI Elm_Gen_Item *elm_gen_last_item_get(const Evas_Object *obj); + EAPI Elm_Gen_Item *elm_gen_item_next_get(const Elm_Gen_Item *it); + EAPI Elm_Gen_Item *elm_gen_item_prev_get(const Elm_Gen_Item *it); + EAPI Evas_Object *elm_gen_item_gen_get(const Elm_Gen_Item *it); /** * @defgroup Gengrid Gengrid (Generic grid) diff --git a/legacy/elementary/src/lib/elm_gen.c b/legacy/elementary/src/lib/elm_gen.c index c6ff7f5315..e5858184f5 100644 --- a/legacy/elementary/src/lib/elm_gen.c +++ b/legacy/elementary/src/lib/elm_gen.c @@ -42,6 +42,8 @@ struct _Widget_Data Eina_Bool wasselected : 1; Eina_Bool always_select : 1; Eina_Bool clear_me : 1; + Eina_Bool h_bounce : 1; + Eina_Bool v_bounce : 1; Ecore_Cb del_cb, calc_cb, sizing_cb; Ecore_Cb clear_cb; }; @@ -524,3 +526,206 @@ elm_gen_item_selected_get(const Elm_Gen_Item *it) ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, EINA_FALSE); return it->selected; } + +EAPI void +elm_gen_always_select_mode_set(Evas_Object *obj, + Eina_Bool always_select) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->always_select = always_select; +} + +EAPI Eina_Bool +elm_gen_always_select_mode_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->always_select; +} + +EAPI void +elm_gen_no_select_mode_set(Evas_Object *obj, + Eina_Bool no_select) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + wd->no_select = no_select; +} + +EAPI Eina_Bool +elm_gen_no_select_mode_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->no_select; +} + +EAPI void +elm_gen_bounce_set(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_set(wd->scr, h_bounce, v_bounce); + wd->h_bounce = h_bounce; + wd->v_bounce = v_bounce; +} + +EAPI void +elm_gen_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; + if (h_bounce) *h_bounce = wd->h_bounce; + if (v_bounce) *v_bounce = wd->v_bounce; +} + +EAPI void +elm_gen_page_relative_set(Evas_Object *obj, + double h_pagerel, + double v_pagerel) +{ + Evas_Coord pagesize_h; + Evas_Coord pagesize_v; + + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + elm_smart_scroller_paging_get(wd->scr, NULL, NULL, &pagesize_h, &pagesize_v); + elm_smart_scroller_paging_set(wd->scr, h_pagerel, v_pagerel, pagesize_h, + pagesize_v); +} + +EAPI void +elm_gen_page_relative_get(const Evas_Object *obj, double *h_pagerel, double *v_pagerel) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + + elm_smart_scroller_paging_get(wd->scr, h_pagerel, v_pagerel, NULL, NULL); +} + +EAPI void +elm_gen_page_size_set(Evas_Object *obj, + Evas_Coord h_pagesize, + Evas_Coord v_pagesize) +{ + double pagerel_h; + double pagerel_v; + + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + elm_smart_scroller_paging_get(wd->scr, &pagerel_h, &pagerel_v, NULL, NULL); + elm_smart_scroller_paging_set(wd->scr, pagerel_h, pagerel_v, h_pagesize, + v_pagesize); +} + +EAPI void +elm_gen_current_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (wd->scr) + elm_smart_scroller_current_page_get(wd->scr, h_pagenumber, v_pagenumber); +} + +EAPI void +elm_gen_last_page_get(const Evas_Object *obj, int *h_pagenumber, int *v_pagenumber) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (wd->scr) + elm_smart_scroller_last_page_get(wd->scr, h_pagenumber, v_pagenumber); +} + +EAPI void +elm_gen_page_show(const Evas_Object *obj, int h_pagenumber, int v_pagenumber) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (wd->scr) + elm_smart_scroller_page_show(wd->scr, h_pagenumber, v_pagenumber); +} + +EAPI void +elm_gen_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenumber) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return; + if (wd->scr) + elm_smart_scroller_page_bring_in(wd->scr, h_pagenumber, v_pagenumber); +} + +EAPI Elm_Gen_Item * +elm_gen_first_item_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + if (!wd->items) return NULL; + Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(wd->items); + while ((it) && (it->delete_me)) + it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next); + return it; +} + +EAPI Elm_Gen_Item * +elm_gen_last_item_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return NULL; + if (!wd->items) return NULL; + Elm_Gen_Item *it = ELM_GEN_ITEM_FROM_INLIST(wd->items->last); + while ((it) && (it->delete_me)) + it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev); + return it; +} + +EAPI Elm_Gen_Item * +elm_gen_item_next_get(const Elm_Gen_Item *it) +{ + ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, NULL); + while (it) + { + it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->next); + if ((it) && (!it->delete_me)) break; + } + return (Elm_Gen_Item *)it; +} + +EAPI Elm_Gen_Item * +elm_gen_item_prev_get(const Elm_Gen_Item *it) +{ + ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, NULL); + while (it) + { + it = ELM_GEN_ITEM_FROM_INLIST(EINA_INLIST_GET(it)->prev); + if ((it) && (!it->delete_me)) break; + } + return (Elm_Gen_Item *)it; +} + +EAPI Evas_Object * +elm_gen_item_gen_get(const Elm_Gen_Item *it) +{ + ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, NULL); + return WIDGET(it); +}