diff --git a/legacy/elementary/src/lib/elm_gengrid.c b/legacy/elementary/src/lib/elm_gengrid.c index 66c2ce500c..0a5ff34e00 100644 --- a/legacy/elementary/src/lib/elm_gengrid.c +++ b/legacy/elementary/src/lib/elm_gengrid.c @@ -2372,6 +2372,34 @@ elm_gengrid_item_selected_get(const Elm_Object_Item *it) return elm_genlist_item_selected_get(it); } +EAPI Eina_List * +elm_gengrid_realized_items_get(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) NULL; + Widget_Data *wd = elm_widget_data_get(obj); + Eina_List *list = NULL; + Elm_Gen_Item *it; + + EINA_INLIST_FOREACH(wd->items, it) + { + if (it->realized) list = eina_list_append(list, (Elm_Object_Item *)it); + } + return list; +} + +EAPI void +elm_gengrid_realized_items_update(Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + + Eina_List *list, *l; + Elm_Object_Item *it; + + list = elm_gengrid_realized_items_get(obj); + EINA_LIST_FOREACH(list, l, it) + elm_gengrid_item_update(it); +} + EAPI void elm_gengrid_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) @@ -2686,6 +2714,34 @@ elm_gengrid_page_bring_in(const Evas_Object *obj, int h_pagenumber, int v_pagenu _elm_genlist_page_bring_in(obj, h_pagenumber, v_pagenumber); } +EAPI void +elm_gengrid_scroller_policy_set(Evas_Object *obj, + Elm_Scroller_Policy policy_h, + Elm_Scroller_Policy policy_v) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + if ((!wd) || (!wd->scr)) return; + if ((policy_h >= ELM_SCROLLER_POLICY_LAST) || + (policy_v >= ELM_SCROLLER_POLICY_LAST)) + return; + elm_smart_scroller_policy_set(wd->scr, policy_h, policy_v); +} + +EAPI void +elm_gengrid_scroller_policy_get(const Evas_Object *obj, + Elm_Scroller_Policy *policy_h, + Elm_Scroller_Policy *policy_v) +{ + ELM_CHECK_WIDTYPE(obj, widtype); + Widget_Data *wd = elm_widget_data_get(obj); + Elm_Smart_Scroller_Policy s_policy_h, s_policy_v; + if ((!wd) || (!wd->scr)) return; + elm_smart_scroller_policy_get(wd->scr, &s_policy_h, &s_policy_v); + if (policy_h) *policy_h = (Elm_Scroller_Policy)s_policy_h; + if (policy_v) *policy_v = (Elm_Scroller_Policy)s_policy_v; +} + EAPI Elm_Object_Item * elm_gengrid_first_item_get(const Evas_Object *obj) { @@ -2797,6 +2853,15 @@ elm_gengrid_filled_get(const Evas_Object *obj) return wd->filled; } +EAPI unsigned int +elm_gengrid_items_count(const Evas_Object *obj) +{ + ELM_CHECK_WIDTYPE(obj, widtype) 0; + Widget_Data *wd = elm_widget_data_get(obj); + if (!wd) return 0; + return wd->item_count; +} + EAPI Elm_Gengrid_Item_Class * elm_gengrid_item_class_new(void) { diff --git a/legacy/elementary/src/lib/elm_gengrid.h b/legacy/elementary/src/lib/elm_gengrid.h index 8ab0cdb91d..84ea7d4d65 100644 --- a/legacy/elementary/src/lib/elm_gengrid.h +++ b/legacy/elementary/src/lib/elm_gengrid.h @@ -558,8 +558,41 @@ EAPI Elm_Object_Item *elm_gengrid_selected_item_get(const Evas_Objec */ EAPI const Eina_List *elm_gengrid_selected_items_get(const Evas_Object *obj); -//XXX: let's add -//EAPI Eina_List *elm_gengrid_realized_items_get(const Evas_Object *obj); +/** + * Get a list of realized items in gengrid + * + * @param obj The gengrid object + * @return The list of realized items, nor NULL if none are realized. + * + * This returns a list of the realized items in the gengrid. The list + * contains gengrid item pointers. The list must be freed by the + * caller when done with eina_list_free(). The item pointers in the + * list are only valid so long as those items are not deleted or the + * gengrid is not deleted. + * + * @see elm_gengrid_realized_items_update() + * + * @ingroup Gengrid + */ +EAPI Eina_List *elm_gengrid_realized_items_get(const Evas_Object *obj); + +/** + * Update the contents of all realized items. + * + * @param obj The gengrid object. + * + * This updates all realized items by calling all the item class functions again + * to get the contents, texts and states. Use this when the original + * item data has changed and the changes are desired to be reflected. + * + * To update just one item, use elm_gengrid_item_update(). + * + * @see elm_gengrid_realized_items_get() + * @see elm_gengrid_item_update() + * + * @ingroup Gengrid + */ +EAPI void elm_gengrid_realized_items_update(Evas_Object *obj); /** * Get the first item in a given gengrid widget @@ -593,11 +626,39 @@ EAPI Elm_Object_Item *elm_gengrid_first_item_get(const Evas_Object * */ EAPI Elm_Object_Item *elm_gengrid_last_item_get(const Evas_Object *obj); -//XXX: let's add -//EAPI void elm_gengrid_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v); +/** + * Set the scrollbar policy + * + * @param obj The gengrid object + * @param policy_h Horizontal scrollbar policy. + * @param policy_v Vertical scrollbar policy. + * + * This sets the scrollbar visibility policy for the given gengrid + * scroller. #ELM_SMART_SCROLLER_POLICY_AUTO means the scrollbar is + * made visible if it is needed, and otherwise kept hidden. + * #ELM_SMART_SCROLLER_POLICY_ON turns it on all the time, and + * #ELM_SMART_SCROLLER_POLICY_OFF always keeps it off. This applies + * respectively for the horizontal and vertical scrollbars. Default is + * #ELM_SMART_SCROLLER_POLICY_AUTO + * + * @see elm_gengrid_scroller_policy_get() + * + * @ingroup Gengrid + */ +EAPI void elm_gengrid_scroller_policy_set(Evas_Object *obj, Elm_Scroller_Policy policy_h, Elm_Scroller_Policy policy_v); -//XXX: lets' add -//EAPI void elm_gengrid_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v); +/** + * Get the scrollbar policy + * + * @param obj The gengrid object + * @param policy_h Pointer to store the horizontal scrollbar policy. + * @param policy_v Pointer to store the vertical scrollbar policy. + * + * @see elm_gengrid_scroller_policy_set() + * + * @ingroup Gengrid + */ +EAPI void elm_gengrid_scroller_policy_get(const Evas_Object *obj, Elm_Scroller_Policy *policy_h, Elm_Scroller_Policy *policy_v); /** * Get the @b next item in a gengrid widget's internal list of items, @@ -741,8 +802,18 @@ EAPI const Elm_Gengrid_Item_Class *elm_gengrid_item_item_class_get(const Elm_Obj //XXX: Let's add //EAPI int elm_gengrid_item_index_get(const Elm_Object_Item *it); -//EAPI void elm_gengrid_realized_items_update(Evas_Object *obj); -//EAPI unsigned int elm_gengrid_items_count(const Evas_Object *obj); + +/** + * Return how many items are currently in a list + * + * @param obj The list + * @return The total number of list items in the list + * + * This behavior is O(1) and includes items which may or may not be realized. + * + * @ingroup Gengrid + */ +EAPI unsigned int elm_gengrid_items_count(const Evas_Object *obj); /** * Add a new gengrid item class in a given gengrid widget.