genlist: add elm_genlist_filtered_items_count API
authorshashank.p <shashank.p@samsung.com>
Fri, 4 Mar 2016 23:41:02 +0000 (15:41 -0800)
committerCedric BAIL <cedric@osg.samsung.com>
Sat, 5 Mar 2016 00:14:37 +0000 (16:14 -0800)
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>
legacy/elementary/src/bin/test_genlist.c
legacy/elementary/src/lib/elm_genlist.c
legacy/elementary/src/lib/elm_genlist.eo

index 483199d..0c25669 100644 (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();
index 5447e72..ebb31f2 100644 (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)
 {
index 5ab6266..f3a0d09 100644 (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.