[elm_genlist.c] Applied SVN Revision 54393, 54394 Changes.
authorDaniel Juyung Seo <juyung.seo@samsung.com>
Thu, 11 Nov 2010 11:16:23 +0000 (20:16 +0900)
committerDaniel Juyung Seo <juyung.seo@samsung.com>
Thu, 11 Nov 2010 11:16:23 +0000 (20:16 +0900)
Changeset 54394 for trunk/TMP/st/elementary/src/lib/elm_genlist.c
Timestamp: 11/09/10 19:01:15 (32 hours ago)
Author: bdilly
Message: Document recently added scroll,edge,X signals to elm_genlist

Changeset 54393 for trunk/TMP/st/elementary/src/lib/elm_genlist.c
Timestamp: 11/09/10 18:48:59 (33 hours ago)
Author: bdilly
Message:
This small patch allows to get a smart callback when the scrollers in an
elm_list or in an elm_genlist fire the edge,{top,bottom,left,right}
signals, backporting them to the list object.
The new smart callbacks called are:
· "scroll,edge,top" - the list is scrolled until the top edge
· "scroll,edge,bottom" - the list is scrolled until the bottom edge
· "scroll,edge,left" - the list is scrolled until the left edge
· "scroll,edge,right" - the list is scrolled until the right edge
By: Marco Trevisan (Trevino) <mail@...>

src/bin/test_genlist.c
src/lib/elm_genlist.c

index 3309864..80e0f74 100644 (file)
@@ -1,4 +1,7 @@
 #include <Elementary.h>
+#ifdef HAVE_CONFIG_H
+# include "elementary_config.h"
+#endif
 #ifndef ELM_LIB_QUICKLAUNCH
 
 /* Hint:
@@ -895,6 +898,30 @@ item_drag_right(void *data, Evas_Object *obj, void *event_info)
 }
 
 static void
+scroll_top(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("Top edge!\n");
+}
+
+static void
+scroll_bottom(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("Bottom edge!\n");
+}
+
+static void
+scroll_left(void *data, Evas_Object *obj, void *event_info)
+{
+   printf("Left edge!\n");
+}
+
+static void
+scroll_right(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   printf("Right edge!\n");
+}
+
+static void
 item_drag(void *data, Evas_Object *obj, void *event_info)
 {
    printf("drag\n");
@@ -916,7 +943,7 @@ void
 test_genlist5(void *data, Evas_Object *obj, void *event_info)
 {
    Evas_Object *win, *bg, *gl, *bx, *bx2, *bt;
-   static Testitem tit[3];
+   static Testitem tit[5];
 
    win = elm_win_add(NULL, "genlist-5", ELM_WIN_BASIC);
    elm_win_title_set(win, "Genlist 5");
@@ -955,7 +982,15 @@ test_genlist5(void *data, Evas_Object *obj, void *event_info)
    tit[2].item = elm_genlist_item_append(gl, &itc5,
                                         &(tit[2])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
                                         NULL/* func data */);
+   tit[3].mode = 3;
+   tit[3].item = elm_genlist_item_append(gl, &itc5,
+                                        &(tit[3])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+                                        NULL/* func data */);
 
+   tit[4].mode = 4;
+   tit[4].item = elm_genlist_item_append(gl, &itc5,
+                                        &(tit[4])/* item data */, NULL/* parent */, ELM_GENLIST_ITEM_NONE, gl_sel/* func */,
+                                        NULL/* func data */);
    elm_box_pack_end(bx, gl);
    evas_object_show(bx);
 
@@ -963,6 +998,10 @@ test_genlist5(void *data, Evas_Object *obj, void *event_info)
    evas_object_smart_callback_add(gl, "drag,start,down", item_drag_down, NULL);
    evas_object_smart_callback_add(gl, "drag,start,left", item_drag_left, NULL);
    evas_object_smart_callback_add(gl, "drag,start,right", item_drag_right, NULL);
+   evas_object_smart_callback_add(gl, "scroll,edge,top", scroll_top, NULL);
+   evas_object_smart_callback_add(gl, "scroll,edge,bottom", scroll_bottom, NULL);
+   evas_object_smart_callback_add(gl, "scroll,edge,left", scroll_left, NULL);
+   evas_object_smart_callback_add(gl, "scroll,edge,right", scroll_right, NULL);
    evas_object_smart_callback_add(gl, "drag", item_drag, NULL);
    evas_object_smart_callback_add(gl, "drag,stop", item_drag_stop, NULL);
    evas_object_smart_callback_add(gl, "longpressed", item_longpress, NULL);
index e81ffdc..b076db7 100644 (file)
  * longpressed - This is called when the item is pressed for a certain amount
  * of time. By default it's 1 second.
  *
+ * scroll,edge,top - This is called when the genlist is scrolled until the top
+ * edge.
+ *
+ * scroll,edge,bottom - This is called when the genlist is scrolled until the
+ * bottom edge.
+ *
+ * scroll,edge,left - This is called when the genlist is scrolled until the
+ * left edge.
+ *
+ * scroll,edge,right - This is called when the genlist is scrolled until the
+ * right edge.
+ *
  * Genlist has a fairly large API, mostly because it's relatively complex,
  * trying to be both expansive, powerful and efficient. First we will begin
  * an overview o the theory behind genlist.
@@ -2450,6 +2462,34 @@ _freeze_off(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__
    elm_smart_scroller_freeze_set(wd->scr, 0);
 }
 
+static void
+_scroll_edge_left(void *data, Evas_Object *scr __UNUSED__, void *event_info __UNUSED__)
+{
+   Evas_Object *obj = data;
+   evas_object_smart_callback_call(obj, "scroll,edge,left", NULL);
+}
+
+static void
+_scroll_edge_right(void *data, Evas_Object *scr __UNUSED__, void *event_info __UNUSED__)
+{
+   Evas_Object *obj = data;
+   evas_object_smart_callback_call(obj, "scroll,edge,right", NULL);
+}
+
+static void
+_scroll_edge_top(void *data, Evas_Object *scr __UNUSED__, void *event_info __UNUSED__)
+{
+   Evas_Object *obj = data;
+   evas_object_smart_callback_call(obj, "scroll,edge,top", NULL);
+}
+
+static void
+_scroll_edge_bottom(void *data, Evas_Object *scr __UNUSED__, void *event_info __UNUSED__)
+{
+   Evas_Object *obj = data;
+   evas_object_smart_callback_call(obj, "scroll,edge,bottom", NULL);
+}
+
 /**
  * Add a new Genlist object
  *
@@ -2501,6 +2541,11 @@ elm_genlist_add(Evas_Object *parent)
 
        elm_smart_scroller_bounce_allow_set(wd->scr, EINA_FALSE, EINA_TRUE);
 
+   evas_object_smart_callback_add(wd->scr, "edge,left", _scroll_edge_left, obj);
+   evas_object_smart_callback_add(wd->scr, "edge,right", _scroll_edge_right, obj);
+   evas_object_smart_callback_add(wd->scr, "edge,top", _scroll_edge_top, obj);
+   evas_object_smart_callback_add(wd->scr, "edge,bottom", _scroll_edge_bottom, obj);
+
    wd->obj = obj;
    wd->mode = ELM_LIST_SCROLL;
    wd->max_items_per_block = 32;