[Genlist] Add the moved.after/before signal instead of moved
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 21 Mar 2012 11:50:33 +0000 (11:50 +0000)
committerJung Chanwook <joey.jung@samsung.com>
Mon, 26 Mar 2012 23:30:33 +0000 (08:30 +0900)
Some applications want to know moved.after or before and relative item
because of updating their own list. So I separated moved into
moved,after and move,before.

git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/elementary@69537 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

Change-Id: I110d16ec7a030ab2719560a8a46f3ae92a588462

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

index 9a2f9e3..4089761 100644 (file)
@@ -1898,15 +1898,50 @@ _reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__
  * @param obj          :  the genlist object.
  * @param item         :  the moved item.
  *
- * If the move_after is true,
+ *  the item(*item) had been moved
+ *
+ */
+static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
+{
+   // if needed, add application logic.
+}
+
+/**
+ * gl_moved_after is called after an item was reordered.
+ * This is only called when reorder mode is enabled.
+ *
+ * @param data         :  the genlist object passed as data.
+ * @param obj          :  the genlist object.
+ * @param item         :  the moved item.
+ *
  *  the item(*item) had been moved after the given relative item(*rel_item) in list.
- * If the move_after is false,
+ *
+ */
+static void gl_moved_after(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
+{
+   // if needed, add application logic.
+   Elm_Object_Item *it;
+   it = elm_genlist_item_prev_get(item);
+   printf("it=%p, prev_it=%p\n",item,it);
+}
+
+/**
+ * gl_moved_before is called after an item was reordered.
+ * This is only called when reorder mode is enabled.
+ *
+ * @param data         :  the genlist object passed as data.
+ * @param obj          :  the genlist object.
+ * @param item         :  the moved item.
+ *
  *  the item(*item) had been moved before the given relative item(*rel_item) in list.
  *
  */
-static void gl_moved(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
+static void gl_moved_before(Evas_Object *data __UNUSED__, Evas_Object *obj __UNUSED__, Elm_Object_Item *item __UNUSED__)
 {
    // if needed, add application logic.
+   Elm_Object_Item *it;
+   it = elm_genlist_item_next_get(item);
+   printf("it=%p, next_it=%p\n",item,it);
 }
 
 void
@@ -1956,6 +1991,8 @@ test_genlist11(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
    itc1->func.state_get = gl_state_get;
    itc1->func.del       = NULL;
    evas_object_smart_callback_add(gl, "moved", (Evas_Smart_Cb)gl_moved, gl);
+   evas_object_smart_callback_add(gl, "moved,after", (Evas_Smart_Cb)gl_moved_after, gl);
+   evas_object_smart_callback_add(gl, "moved,before", (Evas_Smart_Cb)gl_moved_before, gl);
 
    for (i = 0; i < 50; i++)
      elm_genlist_item_append(gl,
index 4f19413..28831d0 100644 (file)
@@ -217,6 +217,8 @@ static const char SIG_MULTI_PINCH_OUT[] = "multi,pinch,out";
 static const char SIG_MULTI_PINCH_IN[] = "multi,pinch,in";
 static const char SIG_SWIPE[] = "swipe";
 static const char SIG_MOVED[] = "moved";
+static const char SIG_MOVED_AFTER[] = "moved,after";
+static const char SIG_MOVED_BEFORE[] = "moved,before";
 static const char SIG_INDEX_UPDATE[] = "index,update";
 static const char SIG_TREE_EFFECT_FINISHED [] = "tree,effect,finished";
 
@@ -254,6 +256,8 @@ static const Evas_Smart_Cb_Description _signals[] = {
    {SIG_MULTI_PINCH_IN, ""},
    {SIG_SWIPE, ""},
    {SIG_MOVED, ""},
+   {SIG_MOVED_AFTER, ""},
+   {SIG_MOVED_BEFORE, ""},
    {SIG_TREE_EFFECT_FINISHED, ""},
    {NULL, NULL}
 };
@@ -1430,6 +1434,7 @@ _mouse_up(void        *data,
                _item_move_before(it->wd->reorder_it, it->wd->reorder_rel);
              else
                _item_move_after(it->wd->reorder_it, it->wd->reorder_rel);
+             evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
           }
         else
           {
@@ -4522,6 +4527,7 @@ _elm_genlist_item_list_compare(const void *data, const void *data1)
    return it->wd->item_compare_cb(it, item1);
 }
 
+/*If application want to know the relative item, use elm_genlist_item_prev_get(it)*/
 static void
 _item_move_after(Elm_Gen_Item *it, Elm_Gen_Item *after)
 {
@@ -4538,9 +4544,10 @@ _item_move_after(Elm_Gen_Item *it, Elm_Gen_Item *after)
    if (after->item->group_item) it->item->group_item = after->item->group_item;
    _item_queue(it->wd, it, NULL);
 
-   evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
+   evas_object_smart_callback_call(WIDGET(it), SIG_MOVED_AFTER, it);
 }
 
+/*If application want to know the relative item, use elm_genlist_item_next_get(it)*/
 static void
 _item_move_before(Elm_Gen_Item *it, Elm_Gen_Item *before)
 {
@@ -4556,7 +4563,7 @@ _item_move_before(Elm_Gen_Item *it, Elm_Gen_Item *before)
    if (before->item->group_item) it->item->group_item = before->item->group_item;
    _item_queue(it->wd, it, NULL);
 
-   evas_object_smart_callback_call(WIDGET(it), SIG_MOVED, it);
+   evas_object_smart_callback_call(WIDGET(it), SIG_MOVED_BEFORE, it);
 }
 
 EAPI unsigned int
index e7b911c..84b3b56 100644 (file)
  *   multi-touch pinched in.
  * - @c "swipe" - This is called when the genlist is swiped.
  * - @c "moved" - This is called when a genlist item is moved.
+ * - @c "moved,after" - This is called when a genlist item is moved after.
+ * - @c "moved,before" - This is called when a genlist item is moved before.
  * - @c "language,changed" - This is called when the program's language is
  *   changed.
  * - @c "tree,effect,finished" - This is called when a genlist tree effect is finished.