Revert "Revert "efl_ui_pager: implement unpack_all/clear function""
authorJaehyun Cho <jae_hyun.cho@samsung.com>
Wed, 17 Apr 2019 01:41:38 +0000 (10:41 +0900)
committerYeongjong Lee <yj34.lee@samsung.com>
Wed, 24 Apr 2019 05:24:47 +0000 (14:24 +0900)
This reverts commit b28f1e034b7ecbe7966b0d2b9687d8e22245837c.

To restore 74c48f029632d2260816b4cb3de6dbb40a29f040 which implements
features during feature freeze period, the revert commit is reverted.

src/lib/elementary/efl_page_indicator.c
src/lib/elementary/efl_page_indicator_icon.c
src/lib/elementary/efl_page_transition.c
src/lib/elementary/efl_page_transition_scroll.c
src/lib/elementary/efl_ui_pager.c
src/lib/elementary/elm_priv.h

index 57cd2bf..6b0be26 100644 (file)
@@ -43,6 +43,14 @@ _efl_page_indicator_unpack(Eo *obj EINA_UNUSED,
 }
 
 EOLIAN static void
+_efl_page_indicator_unpack_all(Eo *obj EINA_UNUSED,
+                               Efl_Page_Indicator_Data *pd)
+{
+   pd->cnt = 0;
+   pd->curr_idx = -1;
+}
+
+EOLIAN static void
 _efl_page_indicator_bind(Eo *obj EINA_UNUSED,
                          Efl_Page_Indicator_Data *pd,
                          Eo *pager,
@@ -72,6 +80,7 @@ EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_pack,
                           EFL_FUNC_CALL(index), int index)
 EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_unpack,
                           EFL_FUNC_CALL(index), int index)
+EOAPI EFL_VOID_FUNC_BODY(efl_page_indicator_unpack_all)
 
 #define EFL_PAGE_INDICATOR_EXTRA_OPS \
    EFL_OBJECT_OP_FUNC(efl_page_indicator_update, \
@@ -79,6 +88,8 @@ EOAPI EFL_VOID_FUNC_BODYV(efl_page_indicator_unpack,
    EFL_OBJECT_OP_FUNC(efl_page_indicator_pack, \
                       _efl_page_indicator_pack), \
    EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack, \
-                      _efl_page_indicator_unpack)
+                      _efl_page_indicator_unpack), \
+   EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack_all, \
+                      _efl_page_indicator_unpack_all)
 
 #include "efl_page_indicator.eo.c"
index 3c9c54e..55326cf 100644 (file)
@@ -110,6 +110,22 @@ _efl_page_indicator_icon_unpack(Eo *obj,
 }
 
 EOLIAN static void
+_efl_page_indicator_icon_unpack_all(Eo *obj,
+                                    Efl_Page_Indicator_Icon_Data *pd)
+{
+   Eo *item;
+
+   EINA_LIST_FREE(pd->items, item)
+     {
+        efl_del(item);
+     }
+
+   pd->curr = NULL;
+
+   efl_page_indicator_unpack_all(efl_super(obj, MY_CLASS));
+}
+
+EOLIAN static void
 _efl_page_indicator_icon_efl_page_indicator_bind(Eo *obj,
                                                  Efl_Page_Indicator_Icon_Data *pd,
                                                  Eo *pager,
@@ -168,6 +184,8 @@ _efl_page_indicator_icon_efl_page_indicator_bind(Eo *obj,
    EFL_OBJECT_OP_FUNC(efl_page_indicator_pack, \
                       _efl_page_indicator_icon_pack), \
    EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack, \
-                      _efl_page_indicator_icon_unpack)
+                      _efl_page_indicator_icon_unpack), \
+   EFL_OBJECT_OP_FUNC(efl_page_indicator_unpack_all, \
+                      _efl_page_indicator_icon_unpack_all)
 
 #include "efl_page_indicator_icon.eo.c"
index 3740a69..f6d73a2 100644 (file)
@@ -72,6 +72,14 @@ _efl_page_transition_pack(Eo *obj EINA_UNUSED,
 }
 
 EOLIAN static void
+_efl_page_transition_unpack_all(Eo *obj EINA_UNUSED,
+                                Efl_Page_Transition_Data *pd EINA_UNUSED,
+                                int index EINA_UNUSED)
+{
+
+}
+
+EOLIAN static void
 _efl_page_transition_curr_page_change(Eo *obj EINA_UNUSED,
                                       Efl_Page_Transition_Data *pd EINA_UNUSED,
                                       int diff EINA_UNUSED)
@@ -94,6 +102,7 @@ EOAPI EFL_VOID_FUNC_BODYV(efl_page_transition_update,
                           EFL_FUNC_CALL(move), double move)
 EOAPI EFL_VOID_FUNC_BODYV(efl_page_transition_pack,
                           EFL_FUNC_CALL(index), int index)
+EOAPI EFL_VOID_FUNC_BODY(efl_page_transition_unpack_all)
 EOAPI EFL_VOID_FUNC_BODYV(efl_page_transition_curr_page_change,
                           EFL_FUNC_CALL(diff), int diff)
 EOAPI EFL_VOID_FUNC_BODYV(efl_page_transition_page_size_set,
@@ -109,6 +118,8 @@ EOAPI EFL_FUNC_BODYV(efl_page_transition_loop_set, Eina_Bool, 0,
                       _efl_page_transition_update), \
    EFL_OBJECT_OP_FUNC(efl_page_transition_pack, \
                       _efl_page_transition_pack), \
+   EFL_OBJECT_OP_FUNC(efl_page_transition_unpack_all, \
+                      _efl_page_transition_unpack_all), \
    EFL_OBJECT_OP_FUNC(efl_page_transition_curr_page_change, \
                       _efl_page_transition_curr_page_change), \
    EFL_OBJECT_OP_FUNC(efl_page_transition_page_size_set, \
index 5c5cb9a..ac3c6da 100644 (file)
@@ -413,6 +413,24 @@ _efl_page_transition_scroll_pack(Eo *obj,
 }
 
 EOLIAN static void
+_efl_page_transition_scroll_unpack_all(Eo *obj EINA_UNUSED,
+                                       Efl_Page_Transition_Scroll_Data *pd)
+{
+   Eina_List *list;
+   Page_Info *pi;
+
+   EINA_LIST_FOREACH(pd->page_infos, list, pi)
+     {
+        efl_pack_unpack(pi->obj, pi->content);
+
+        pi->content_num = -1;
+        pi->content = NULL;
+        pi->visible = EINA_FALSE;
+     }
+   return EINA_TRUE;
+}
+
+EOLIAN static void
 _efl_page_transition_scroll_curr_page_change(Eo *obj EINA_UNUSED,
                                              Efl_Page_Transition_Scroll_Data *pd,
                                              int diff)
@@ -656,6 +674,8 @@ _efl_page_transition_scroll_efl_object_invalidate(Eo *obj,
                       _efl_page_transition_scroll_update), \
    EFL_OBJECT_OP_FUNC(efl_page_transition_pack, \
                       _efl_page_transition_scroll_pack), \
+   EFL_OBJECT_OP_FUNC(efl_page_transition_unpack_all, \
+                      _efl_page_transition_scroll_unpack_all), \
    EFL_OBJECT_OP_FUNC(efl_page_transition_curr_page_change, \
                       _efl_page_transition_scroll_curr_page_change), \
    EFL_OBJECT_OP_FUNC(efl_page_transition_page_size_set, \
index 5203989..0ce1488 100644 (file)
@@ -784,20 +784,59 @@ _efl_ui_pager_loop_mode_get(const Eo *obj EINA_UNUSED,
    return pd->loop;
 }
 
+static void
+_unpack_all(Efl_Ui_Pager_Data *pd,
+            Eina_Bool clear)
+{
+   Eo *subobj;
+
+   pd->cnt = 0;
+   pd->curr.page = -1;
+   pd->curr.pos = 0.0;
+
+   if (pd->transition)
+     {
+        efl_page_transition_unpack_all(pd->transition);
+     }
+   else
+     {
+        subobj = eina_list_nth(pd->content_list, pd->curr.page);
+        efl_pack_unpack(pd->page_box, subobj);
+     }
+
+   if (clear)
+     {
+        EINA_LIST_FREE(pd->content_list, subobj)
+           evas_object_del(subobj);
+     }
+   else
+     {
+        EINA_LIST_FREE(pd->content_list, subobj)
+           efl_canvas_object_clipper_set(subobj, NULL);
+     }
+
+   if (pd->indicator)
+     {
+        efl_page_indicator_unpack_all(pd->indicator);
+     }
+}
+
 EOLIAN static Eina_Bool
 _efl_ui_pager_efl_pack_pack_clear(Eo *obj EINA_UNUSED,
-                                  Efl_Ui_Pager_Data *pd EINA_UNUSED)
+                                  Efl_Ui_Pager_Data *pd)
 {
-   ERR("Soon to be implemented");
-   return EINA_FALSE;
+   _unpack_all(pd, EINA_TRUE);
+
+   return EINA_TRUE;
 }
 
 EOLIAN static Eina_Bool
 _efl_ui_pager_efl_pack_unpack_all(Eo *obj EINA_UNUSED,
-                                  Efl_Ui_Pager_Data *pd EINA_UNUSED)
+                                  Efl_Ui_Pager_Data *pd)
 {
-   ERR("Soon to be implemented");
-   return EINA_FALSE;
+   _unpack_all(pd, EINA_FALSE);
+
+   return EINA_TRUE;
 }
 
 static void
index 030771f..9188c1a 100644 (file)
@@ -906,12 +906,14 @@ EOAPI void                         efl_page_transition_page_size_set(Eo *obj, Eina_Size2D sz);
 EOAPI void                      efl_page_transition_padding_size_set(Eo *obj, int padding);
 EOAPI void                      efl_page_transition_update(Eo *obj, double pos);
 EOAPI void                      efl_page_transition_pack(Eo *obj, int index);
+EOAPI void                      efl_page_transition_unpack_all(Eo *obj);
 EOAPI void                      efl_page_transition_curr_page_change(Eo *obj, int diff);
 EOAPI Eina_Bool                 efl_page_transition_loop_set(Eo *obj, Efl_Ui_Pager_Loop loop);
 
 EOAPI void                      efl_page_indicator_update(Eo *obj, double pos);
 EOAPI void                      efl_page_indicator_pack(Eo *obj, int index);
 EOAPI void                      efl_page_indicator_unpack(Eo *obj, int index);
+EOAPI void                      efl_page_indicator_unpack_all(Eo *obj);
 
 Eina_Bool _elm_config_accel_preference_parse(const char *pref, Eina_Stringshare **accel, int *gl_depth, int *gl_stencil, int *gl_msaa);