add slide effect after "clear all" click 24/64824/1 accepted/tizen/mobile/20160406.110047 submit/tizen_mobile/20160406.092811
authorLukasz Stanislawski <l.stanislaws@samsung.com>
Tue, 5 Apr 2016 12:33:41 +0000 (14:33 +0200)
committerLukasz Stanislawski <l.stanislaws@samsung.com>
Tue, 5 Apr 2016 12:33:41 +0000 (14:33 +0200)
Change a default "clear all" behaviour, first perform
slide to hide all items, then terminate running aplication
and task-manager itself.

Change-Id: Ie203964b4b57bddc7ab530622b0d4cf61c58e732

res/edje/box.edc
src/scroller.c

index d7b3b2fd4457aa80b0c97f0caea9837f14bef310..f4736bdd7c5d56d1f343d9c784d9b2ba0d057ca3 100644 (file)
@@ -50,7 +50,36 @@ collections {
                                        fixed: 0 1;
                                        visible: 1;
                                }
+                               description {
+                                       state: "hidden" 1.0;
+                                       rel1 { relative: 0.0 1.0; }
+                                       rel2 { relative: 1.0 2.0; }
+                                       align: 0.5 1.0;
+                                       fixed: 0 1;
+                                       visible: 1;
+                               }
                        }
                } //parts
+               programs {
+                       program {
+                               signal: "all,apps,hide";
+                               source: "task-mgr";
+                               action: STATE_SET "hidden" 1.0;
+                               target: "box";
+                               transition: DECEL 0.5;
+                               after: "all,apps,hidden,emit";
+                       }
+                       program {
+                               signal: "all,apps,show";
+                               source: "task-mgr";
+                               action: STATE_SET "default" 0.0;
+                               target: "box";
+                               transition: DECEL 0.5;
+                       }
+                       program {
+                               name: "all,apps,hidden,emit";
+                               action: SIGNAL_EMIT "all,apps,hidden" "box";
+                       }
+               }
        } //group
 } //collections
index ec25b8622ee5818b21c39e28da62d913123713f3..03b25cafa91b9db73259fb6063b81b6f8e400348 100644 (file)
@@ -18,6 +18,7 @@
  */
 
  #include <Elementary.h>
+ #include <app.h>
 
  #include "conf.h"
  #include "item.h"
@@ -114,90 +115,29 @@ task_mgr_error_e scroller_push_all_item(Evas_Object *scroller, Eina_List *list)
        return TASK_MGR_ERROR_NONE;
 }
 
-
-
-static Eina_Bool _pop_all_item_cb(void *data)
+static void _terminate_all_app_and_exit(void *data, Evas_Object *obj, const char *emission, const char *source)
 {
-       Evas_Object *scroller = data;
-       Evas_Object *item = NULL;
-       Eina_List *list = NULL;
-       static int i = 0;
-       int count = 0;
-       int terminate = (int) evas_object_data_get(scroller, PRIVATE_DATA_KEY_TERMINATE);
-
-       list = evas_object_data_get(scroller, PRIVATE_DATA_KEY_REVERSE_LIST);
-       goto_if(!list, END);
-
-       count = eina_list_count(list);
-       _D("remove list count(include clear button) : %d", count);
-       if (i >= count-1) goto END;
-
-       item = eina_list_nth(list, i);
-       i++;
-       goto_if(!item, END);
+       Eina_List *list, *l;
+       Evas_Object *box = data, *item;
 
-       scroller_pop_item(scroller, item, terminate);
-       return ECORE_CALLBACK_RENEW;
-
-END:
-       i = 0;
-       eina_list_free(list);
-       evas_object_data_del(scroller, PRIVATE_DATA_KEY_REVERSE_LIST);
-       evas_object_data_del(scroller, PRIVATE_DATA_KEY_TERMINATE);
-       evas_object_data_del(scroller, PRIVATE_DATA_KEY_POP_ALL_TIMER);
-       item_clear_set_disable(scroller);
+       list = elm_box_children_get(box);
+       EINA_LIST_FOREACH(list, l, item)
+               item_terminate(item);
 
-       return ECORE_CALLBACK_CANCEL;
+       ui_app_exit();
 }
 
 
-
 void scroller_pop_all_item(Evas_Object *scroller, int terminate)
 {
        Evas_Object *box_layout = NULL;
        Evas_Object *box = NULL;
-       Eina_List *list = NULL;
-       Eina_List *reverse_list = NULL;
-       Ecore_Timer *timer = NULL;
-
-       ret_if(!scroller);
-
-       timer = evas_object_data_del(scroller, PRIVATE_DATA_KEY_POP_ALL_TIMER);
-       if (timer) {
-               _D("There is already a timer for popping all items.");
-               ecore_timer_del(timer);
-       }
-
-       /* An user tap the end all button, all items have to be terminated even if paused. */
-       if (!evas_object_data_get(scroller, PRIVATE_DATA_KEY_TERMINATE)) {
-               evas_object_data_set(scroller, PRIVATE_DATA_KEY_TERMINATE, (void *) terminate);
-       }
 
        box_layout = elm_object_content_get(scroller);
-       ret_if(!box_layout);
-
        box = elm_object_part_content_get(box_layout, BOX_GROUP_NAME);
-       ret_if(!box);
-
-       list = elm_box_children_get(box);
-       if (!list) return;
-
-       /* This reverse list should be freed in the timer */
-       reverse_list = eina_list_reverse_clone(list);
-       eina_list_free(list);
-       ret_if(!reverse_list);
-       evas_object_data_set(scroller, PRIVATE_DATA_KEY_REVERSE_LIST, reverse_list);
-
-       timer = ecore_timer_add(0.01f, _pop_all_item_cb, scroller);
-       if (!timer) {
-               _E("Cannot add a timer");
-               evas_object_data_del(scroller, PRIVATE_DATA_KEY_REVERSE_LIST);
-               evas_object_data_del(scroller, PRIVATE_DATA_KEY_TERMINATE);
-               eina_list_free(reverse_list);
-               return;
-       }
 
-       evas_object_data_set(scroller, PRIVATE_DATA_KEY_POP_ALL_TIMER, timer);
+       elm_object_signal_callback_add(box_layout, "all,apps,hidden", "box", _terminate_all_app_and_exit, box);
+       elm_object_signal_emit(box_layout, "all,apps,hide", "task-mgr");
 }