Revert "genlist: added reorder feature on key events"
authorStefan Schmidt <s.schmidt@samsung.com>
Mon, 19 Jan 2015 11:56:50 +0000 (12:56 +0100)
committerStefan Schmidt <s.schmidt@samsung.com>
Mon, 19 Jan 2015 11:56:50 +0000 (12:56 +0100)
This reverts commit f99be3a1d6bdc63153598b592b5437c33da44bf0.

The API is not ready to be released. Please see the thread on the e-devel
mailing list under this subject. This can get another try in the 1.14
release cycle.

Conflicts:
src/lib/elm_genlist.c

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

index 4953bfc..c5a1074 100644 (file)
@@ -5,8 +5,6 @@
 #endif
 #include <Elementary.h>
 
-static int tween_mode_val;
-
 Evas_Object * _elm_min_set(Evas_Object *obj, Evas_Object *parent,
                            Evas_Coord w, Evas_Coord h);
 
@@ -2096,44 +2094,6 @@ _reorder_tg_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSE
    elm_genlist_reorder_mode_set(data, elm_check_state_get(obj));
 }
 
-static void
-_focus_highlight_ck_changed_cb(void *data, Evas_Object *obj, void *event_info EINA_UNUSED)
-{
-   elm_win_focus_highlight_enabled_set(data, elm_check_state_get(obj));
-}
-
-static void
-_tween_mode_changed_cb(void *data, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
-{
-   switch (tween_mode_val)
-     {
-        case 1:
-           elm_genlist_reorder_mode_start(data, ECORE_POS_MAP_LINEAR);
-           break;
-        case 2:
-           elm_genlist_reorder_mode_start(data, ECORE_POS_MAP_ACCELERATE);
-           break;
-        case 3:
-           elm_genlist_reorder_mode_start(data, ECORE_POS_MAP_DECELERATE);
-           break;
-        case 4:
-           elm_genlist_reorder_mode_start(data, ECORE_POS_MAP_SINUSOIDAL);
-           break;
-        case 5:
-           elm_genlist_reorder_mode_start(data, ECORE_POS_MAP_DIVISOR_INTERP);
-           break;
-        case 6:
-           elm_genlist_reorder_mode_start(data, ECORE_POS_MAP_BOUNCE);
-           break;
-        case 7:
-           elm_genlist_reorder_mode_start(data, ECORE_POS_MAP_SPRING);
-           break;
-        default:
-           elm_genlist_reorder_mode_start(data, ECORE_POS_MAP_LINEAR);
-           break;
-     }
-}
-
 /**
  * gl_moved is called after an item was reordered.
  * This is only called when reorder mode is enabled.
@@ -2191,12 +2151,11 @@ static void gl_moved_before(Evas_Object *data EINA_UNUSED, Evas_Object *obj EINA
 void
 test_genlist11(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event_info EINA_UNUSED)
 {
-   Evas_Object *win, *fr, *lb, *bx, *tg, *gl, *hbx, *ck, *grp, *rd;
+   Evas_Object *win, *fr, *lb, *bx, *tg, *gl;
    int i;
 
    api_data *api = calloc(1, sizeof(api_data));
    win = elm_win_util_standard_add("genlist-reorder-mode", "Genlist Reorder Mode");
-   elm_win_focus_highlight_enabled_set(win, EINA_TRUE);
    elm_win_autodel_set(win, EINA_TRUE);
    evas_object_event_callback_add(win, EVAS_CALLBACK_FREE, _cleanup_cb, api);
 
@@ -2224,116 +2183,20 @@ test_genlist11(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event
    api->gl = gl;
    evas_object_show(gl);
 
-   hbx = elm_box_add(win);
-   elm_box_horizontal_set(hbx, EINA_TRUE);
-   evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, 0);
-   elm_box_padding_set(hbx, 20, 0);
-   elm_box_pack_end(bx, hbx);
-   evas_object_show(hbx);
-
    tg = elm_check_add(win);
    elm_object_style_set(tg, "toggle");
    elm_object_text_set(tg, "Reorder Mode:");
    elm_check_state_set(tg, elm_config_mirrored_get());
    evas_object_smart_callback_add(tg, "changed", _reorder_tg_changed_cb, gl);
-   elm_box_pack_end(hbx, tg);
+   elm_box_pack_end(bx, tg);
    evas_object_show(tg);
 
-   ck = elm_check_add(win);
-   elm_object_text_set(ck, "Focus Highlight");
-   elm_check_state_set(ck, elm_win_focus_highlight_enabled_get(win));
-   evas_object_smart_callback_add(ck, "changed", _focus_highlight_ck_changed_cb, win);
-   elm_box_pack_end(hbx, ck);
-   evas_object_show(ck);
-
-   lb = elm_label_add(win);
-   elm_object_text_set(lb, "Select reorder tween mode:");
-   elm_box_pack_end(bx, lb);
-   evas_object_show(lb);
-
-   hbx = elm_box_add(win);
-   elm_box_horizontal_set(hbx, EINA_TRUE);
-   evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, 0);
-   elm_box_pack_end(bx, hbx);
-   evas_object_show(hbx);
-
-   grp = rd = elm_radio_add(win);
-   elm_object_text_set(rd, "Linear");
-   elm_radio_state_value_set(rd, 1);
-   elm_radio_value_pointer_set(rd, &tween_mode_val);
-   evas_object_smart_callback_add(rd, "changed", _tween_mode_changed_cb, gl);
-   elm_box_pack_end(hbx, rd);
-   evas_object_show(rd);
-
-   rd = elm_radio_add(win);
-   elm_object_text_set(rd, "Accelerate");
-   elm_radio_state_value_set(rd, 2);
-   elm_radio_value_pointer_set(rd, &tween_mode_val);
-   elm_radio_group_add(rd, grp);
-   evas_object_smart_callback_add(rd, "changed", _tween_mode_changed_cb, gl);
-   elm_box_pack_end(hbx, rd);
-   evas_object_show(rd);
-
-   rd = elm_radio_add(win);
-   elm_object_text_set(rd, "Decelerate");
-   elm_radio_state_value_set(rd, 3);
-   elm_radio_value_pointer_set(rd, &tween_mode_val);
-   elm_radio_group_add(rd, grp);
-   evas_object_smart_callback_add(rd, "changed", _tween_mode_changed_cb, gl);
-   elm_box_pack_end(hbx, rd);
-   evas_object_show(rd);
-
-   rd = elm_radio_add(win);
-   elm_object_text_set(rd, "Sinusoidal");
-   elm_radio_state_value_set(rd, 4);
-   elm_radio_value_pointer_set(rd, &tween_mode_val);
-   elm_radio_group_add(rd, grp);
-   evas_object_smart_callback_add(rd, "changed", _tween_mode_changed_cb, gl);
-   elm_box_pack_end(hbx, rd);
-   evas_object_show(rd);
-
-   hbx = elm_box_add(win);
-   elm_box_horizontal_set(hbx, EINA_TRUE);
-   evas_object_size_hint_weight_set(hbx, EVAS_HINT_EXPAND, 0);
-   elm_box_pack_end(bx, hbx);
-   evas_object_show(hbx);
-
-   rd = elm_radio_add(win);
-   elm_object_text_set(rd, "Divisor Interpolation");
-   elm_radio_state_value_set(rd, 5);
-   elm_radio_value_pointer_set(rd, &tween_mode_val);
-   elm_radio_group_add(rd, grp);
-   evas_object_smart_callback_add(rd, "changed", _tween_mode_changed_cb, gl);
-   elm_box_pack_end(hbx, rd);
-   evas_object_show(rd);
-
-   rd = elm_radio_add(win);
-   elm_object_text_set(rd, "Bounce");
-   elm_radio_state_value_set(rd, 6);
-   elm_radio_value_pointer_set(rd, &tween_mode_val);
-   elm_radio_group_add(rd, grp);
-   evas_object_smart_callback_add(rd, "changed", _tween_mode_changed_cb, gl);
-   elm_box_pack_end(hbx, rd);
-   evas_object_show(rd);
-
-   rd = elm_radio_add(win);
-   elm_object_text_set(rd, "Spring");
-   elm_radio_state_value_set(rd, 7);
-   elm_radio_value_pointer_set(rd, &tween_mode_val);
-   elm_radio_group_add(rd, grp);
-   evas_object_smart_callback_add(rd, "changed", _tween_mode_changed_cb, gl);
-   elm_box_pack_end(hbx, rd);
-   evas_object_show(rd);
-
-   elm_radio_value_set(grp, 1);
-
    api->itc1 = elm_genlist_item_class_new();
    api->itc1->item_style = "default";
    api->itc1->func.text_get = gl_text_get;
    api->itc1->func.content_get = gl_content_get;
    api->itc1->func.state_get = gl_state_get;
    api->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);
index fd80482..e242f82 100644 (file)
@@ -91,9 +91,7 @@
     cmd(SIG_ITEM_FOCUSED, "item,focused", "") \
     cmd(SIG_ITEM_UNFOCUSED, "item,unfocused", "") \
     cmd(SIG_PRESSED, "pressed", "") \
-    cmd(SIG_RELEASED, "released", "") \
-    cmd(SIG_ITEM_REORDER_START, "item,reorder,anim,start", "") \
-    cmd(SIG_ITEM_REORDER_STOP, "item,reorder,anim,stop", "")
+    cmd(SIG_RELEASED, "released", "")
 
 ELM_PRIV_GENLIST_SIGNALS(ELM_PRIV_STATIC_VARIABLE_DECLARE);
 
@@ -146,8 +144,6 @@ static Eina_Bool _item_select(Elm_Gen_Item *it);
 static Eina_Bool _key_action_move(Evas_Object *obj, const char *params);
 static Eina_Bool _key_action_select(Evas_Object *obj, const char *params);
 static Eina_Bool _key_action_escape(Evas_Object *obj, const char *params);
-static void _item_move_after(Elm_Gen_Item *it, Elm_Gen_Item *after);
-static void _item_move_before(Elm_Gen_Item *it, Elm_Gen_Item *before);
 static void  _calc_job(void *data);
 static Eina_Bool _item_block_recalc(Item_Block *itb, int in, Eina_Bool qadd);
 static void _item_mouse_callbacks_add(Elm_Gen_Item *it, Evas_Object *view);
@@ -2755,101 +2751,6 @@ _key_action_move_dir(Evas_Object *obj, Elm_Focus_Direction dir, Eina_Bool multi)
    return EINA_FALSE;
 }
 
-static void
-_anim_end(Elm_Genlist_Data *sd)
-{
-   if (sd->reorder.dir == ELM_FOCUS_UP)
-     _item_move_after(sd->reorder.it2, sd->reorder.it1);
-   else if (sd->reorder.dir == ELM_FOCUS_DOWN)
-     _item_move_after(sd->reorder.it1, sd->reorder.it2);
-
-   ecore_job_del(sd->calc_job);
-   sd->calc_job = ecore_job_add(_calc_job, sd->obj);
-}
-
-static Eina_Bool
-_item_swap_cb(void *data, double pos)
-{
-   Elm_Genlist_Data *sd = data;
-   double frame = pos;
-   Evas_Coord xx1, yy1, xx2, yy2;
-   double dx, dy;
-
-   switch (sd->reorder.tween_mode)
-     {
-        case ECORE_POS_MAP_LINEAR:
-           frame = ecore_animator_pos_map(frame, sd->reorder.tween_mode, 0, 0);
-           break;
-        case ECORE_POS_MAP_ACCELERATE:
-        case ECORE_POS_MAP_DECELERATE:
-        case ECORE_POS_MAP_SINUSOIDAL:
-           frame = ecore_animator_pos_map(frame, sd->reorder.tween_mode, 1.0, 0);
-           break;
-        case ECORE_POS_MAP_DIVISOR_INTERP:
-        case ECORE_POS_MAP_BOUNCE:
-        case ECORE_POS_MAP_SPRING:
-           frame = ecore_animator_pos_map(frame, sd->reorder.tween_mode, 1.0, 1.0);
-           break;
-        default:
-           // use ECORE_POS_MAP_LINEAR as default tween mode
-           frame = ecore_animator_pos_map(frame, sd->reorder.tween_mode, 0, 0);
-           break;
-     }
-
-   dx = sd->reorder.x2 - sd->reorder.x1;
-   dy = sd->reorder.y2 - sd->reorder.y1;
-
-   xx1 = sd->reorder.x1 + (dx * frame);
-   yy1 = sd->reorder.y1 + (dy * frame);
-   xx2 = sd->reorder.x2 - (dx * frame);
-   yy2 = sd->reorder.y2 - (dy * frame);
-
-   evas_object_move(VIEW(sd->reorder.it2), xx2, yy2);
-   evas_object_move(VIEW(sd->reorder.it1), xx1, yy1);
-
-   if (pos == 1.0)
-     {
-        elm_genlist_item_bring_in((Elm_Object_Item *)sd->reorder.it2, ELM_GENLIST_ITEM_SCROLLTO_IN);
-        _anim_end(sd);
-        evas_object_smart_callback_call(sd->obj, SIG_ITEM_REORDER_STOP,
-                                        EO_OBJ(sd->reorder.it1));
-        evas_object_smart_callback_call(sd->obj, SIG_MOVED, EO_OBJ(sd->reorder.it1));
-        sd->reorder.running = EINA_FALSE;
-     }
-
-   _elm_widget_focus_highlight_start(sd->obj);
-
-   return EINA_TRUE;
-}
-
-
-static void
-_swap_items(Elm_Gen_Item *it1, Elm_Gen_Item *it2, Elm_Focus_Direction dir)
-{
-   if (!it1 || !it2) return;
-
-   ELM_GENLIST_DATA_GET_FROM_ITEM(it1, sd);
-   Evas_Coord xx1, yy1, xx2, yy2;
-
-   sd->reorder.running = EINA_TRUE;
-   sd->reorder.dir = dir;
-   sd->reorder.it1 = it1;
-   sd->reorder.it2 = it2;
-
-   evas_object_geometry_get(VIEW(it1), &xx1, &yy1, NULL, NULL);
-   evas_object_geometry_get(VIEW(it2), &xx2, &yy2, NULL, NULL);
-   sd->reorder.x1 = xx1;
-   sd->reorder.y1 = yy1;
-   sd->reorder.x2 = xx2;
-   sd->reorder.y2 = yy2;
-
-   evas_object_raise(VIEW(it1));
-   evas_object_smart_callback_call(sd->obj, SIG_ITEM_REORDER_START,
-                                   EO_OBJ(sd->reorder.it1));
-   //TODO: Add elm config for time
-   ecore_animator_timeline_add(0.3, _item_swap_cb, sd);
-}
-
 static Eina_Bool
 _key_action_move(Evas_Object *obj, const char *params)
 {
@@ -2896,18 +2797,6 @@ _key_action_move(Evas_Object *obj, const char *params)
      }
    else if (!strcmp(dir, "up"))
      {
-        if (sd->reorder.running) return EINA_TRUE;
-        if (sd->reorder_mode)
-          {
-             Elm_Object_Item *up = elm_genlist_item_prev_get(sd->focused_item);
-             ELM_GENLIST_ITEM_DATA_GET(sd->focused_item, focused_it);
-             ELM_GENLIST_ITEM_DATA_GET(up, up2);
-
-             _swap_items(focused_it, up2, ELM_FOCUS_UP);
-
-             return EINA_TRUE;
-          }
-
         if (_key_action_move_dir(obj, ELM_FOCUS_UP, EINA_FALSE)) return EINA_TRUE;
         else return EINA_FALSE;
      }
@@ -2919,18 +2808,6 @@ _key_action_move(Evas_Object *obj, const char *params)
      }
    else if (!strcmp(dir, "down"))
      {
-        if (sd->reorder.running) return EINA_TRUE;
-        if (sd->reorder_mode)
-          {
-             Elm_Object_Item *down = elm_genlist_item_next_get(sd->focused_item);
-             ELM_GENLIST_ITEM_DATA_GET(sd->focused_item, focused_it);
-             ELM_GENLIST_ITEM_DATA_GET(down, down2);
-
-             _swap_items(focused_it, down2, ELM_FOCUS_DOWN);
-
-             return EINA_TRUE;
-          }
-
         if (_key_action_move_dir(obj, ELM_FOCUS_DOWN, EINA_FALSE)) return EINA_TRUE;
         else return EINA_FALSE;
      }
@@ -7415,25 +7292,6 @@ _elm_genlist_reorder_mode_set(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd, Eina_Bo
     }
 }
 
-EAPI void
-elm_genlist_reorder_mode_start(Evas_Object *obj, Ecore_Pos_Map tween_mode)
-{
-   ELM_GENLIST_CHECK(obj);
-   ELM_GENLIST_DATA_GET(obj, sd);
-
-   sd->reorder.tween_mode = tween_mode;
-   _elm_genlist_reorder_mode_set(obj, sd, EINA_TRUE);
-}
-
-EAPI void
-elm_genlist_reorder_mode_stop(Evas_Object *obj)
-{
-   ELM_GENLIST_CHECK(obj);
-   ELM_GENLIST_DATA_GET(obj, sd);
-
-   _elm_genlist_reorder_mode_set(obj, sd, EINA_FALSE);
-}
-
 EOLIAN static Eina_Bool
 _elm_genlist_reorder_mode_get(Eo *obj EINA_UNUSED, Elm_Genlist_Data *sd)
 {
index 3f1835e..d8ee6c4 100644 (file)
  * - @c "unfocused" - When the genlist has lost focus. (since 1.8)
  * - @c "item,focused" - When the genlist item has recieved focus. (since 1.10)
  * - @c "item,unfocused" - When the genlist item has lost focus. (since 1.10)
- * - @c "item,reorder,anim,start" - This is called when a genglist item's movement
-     has just started by keys in reorder mode. The %c event_info parameter
- *   is the item that is going to move. (since 1.13)
- * - @c "item,reorder,anim,stop" - This is called when a genlist item's movement just
-     stopped in reorder mode. The %c event_info parameter is the item
-     that was moved. (since 1.13)
+ *
  *
  * Supported elm_object_item common APIs
  * @li @ref elm_object_item_part_content_get
index f8345ed..77866c0 100644 (file)
@@ -31,33 +31,5 @@ EAPI Evas_Object                  *elm_genlist_add(Evas_Object *parent);
 EAPI Elm_Object_Item *
 elm_genlist_nth_item_get(const Evas_Object *obj, unsigned int nth);
 
-/**
- * Enable item reorder mode with keys for genlist widget
- *
- * @param obj The genlist object
- * @param tween_mode Position mappings for animation
- * @see _Ecore_Pos_Map
- *
- * @see elm_genlist_reorder_mode_stop()
- * @since 1.13
- *
- * @ingroup Genlist
- */
-EAPI void
-elm_genlist_reorder_mode_start(Evas_Object *obj, Ecore_Pos_Map tween_mode);
-
-/**
- * Stop item reorder mode with keys for genlist widget
- *
- * @param obj The genlist object
- *
- * @see elm_genlist_reorder_mode_start()
- * @since 1.13
- *
- * @ingroup Genlist
- */
-EAPI void
-elm_genlist_reorder_mode_stop(Evas_Object *obj);
-
-#include "elm_genlist.eo.legacy.h"
 #include "elm_genlist_item.eo.legacy.h"
+#include "elm_genlist.eo.legacy.h"
index d16c394..7d0c900 100644 (file)
@@ -137,15 +137,6 @@ struct _Elm_Genlist_Data
    Elm_Genlist_Item_Move_Effect_Mode     move_effect_mode;
    int                                   reorder_fast;
 
-   struct
-   {
-      Elm_Gen_Item                          *it1, *it2; /**< The items which are getting swapped */
-      Elm_Focus_Direction                   dir; /**< focus key direction */
-      Ecore_Pos_Map                         tween_mode; /**< Position mappings for animation */
-      Evas_Coord                            x1, y1, x2, y2; /**< Coordinates of it1 and it2 */
-      Eina_Bool                             running : 1; /**< animation is happening */
-   } reorder;
-
    Eina_Bool                             focus_on_selection_enabled : 1;
    Eina_Bool                             tree_effect_enabled : 1;
    Eina_Bool                             auto_scroll_enabled : 1;