genlist: add elm_genlist_filtered_items_count API

Summary: This API will return the number of items that have passed the filter at a given point of time. If the API is called before "filter,done" callback comes, it may or may not give the filtered count for the complete genlist.

Test Plan: Updated Genlist_filter example to print the output from filtered_count_get API in "filter,done" callback.

Reviewers: SanghyeonLee, shilpasingh, cedric

Reviewed By: cedric

Subscribers: buds

Differential Revision: https://phab.enlightenment.org/D3725

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
shashank.p 2016-03-04 15:41:02 -08:00 committed by Cedric BAIL
parent ecc4e26236
commit 5d08cbad2d
3 changed files with 19 additions and 3 deletions

View File

@ -5025,11 +5025,11 @@ gl_filter_get(void *data, Evas_Object *obj EINA_UNUSED, void *key)
}
static void
_gl_filter_finished_cb(void *data EINA_UNUSED,
_gl_filter_finished_cb(void *data,
Evas_Object *obj EINA_UNUSED,
void *event_info EINA_UNUSED)
{
printf("Filter finished\n");
printf("Filter finished, filtered items count is %d\n", elm_genlist_filtered_items_count((Evas_Object *)data));
}
void
@ -5117,7 +5117,7 @@ test_genlist_filter(void *data EINA_UNUSED,
evas_object_smart_callback_add(gl, "activated", _gl_focus_item_cb, "activated");
evas_object_smart_callback_add(gl, "highlighted", _gl_focus_item_cb, "highlighted");
evas_object_smart_callback_add(gl, "unhighlighted", _gl_focus_item_cb, "unhighlighted");
evas_object_smart_callback_add(gl, "filter,done", _gl_filter_finished_cb, NULL);
evas_object_smart_callback_add(gl, "filter,done", _gl_filter_finished_cb, gl);
evas_object_event_callback_add(gl, EVAS_CALLBACK_KEY_DOWN, _gl_focus_key_down_cb, NULL);
itc = elm_genlist_item_class_new();

View File

@ -7652,6 +7652,12 @@ _elm_genlist_filter_iterator_new(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd)
return &iter->iterator;
}
EOLIAN static unsigned int
_elm_genlist_filtered_items_count(const Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd)
{
return sd->filtered_count;
}
EOLIAN static void
_elm_genlist_longpress_timeout_set(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd, double timeout)
{

View File

@ -423,6 +423,16 @@ class Elm.Genlist (Elm.Layout, Elm.Interface_Scrollable, Evas.Clickable_Interfac
]]
return: free(own(iterator<Elm_Gen_Item *> *), eina_iterator_free); [[Iterator on genlist]]
}
filtered_items_count @const {
[[Return how many items have passed the filter currently.
This behaviour is O(1) and may or may not return the
filtered count for complete genlist based on the timing
of the call. To get complete count, call after "filter,done"
callback
]]
return: uint;
}
items_count @const {
[[Return how many items are currently in a list.