add mapbuf & modify page-indicator rotation logic 42/72942/1
authorYoungHun Cho <hoon.cho@samsung.com>
Fri, 3 Jun 2016 07:48:42 +0000 (16:48 +0900)
committerYoungHun Cho <hoon.cho@samsung.com>
Fri, 3 Jun 2016 07:48:42 +0000 (16:48 +0900)
Change-Id: I5c6bf561191e1786ff6b095bd0730ebf670ad302
Signed-off-by: YoungHun Cho <hoon.cho@samsung.com>
inc/edc_conf.h
res/edje/apps_view_bg.edc
src/apps_view.c
src/page_indicator.c

index f9b8c47..5672531 100755 (executable)
 #define APPS_VIEW_COL 4
 #define APPS_VIEW_ROW 5
 
-#define APPS_VIEW_BG_OPACITY 70
+#define APPS_VIEW_BG_OPACITY 50
 
 #define GROUP_APP_ICON_LY "icon_ly"
 #define APPS_ICON_CONTENT "icon_content"
index 1bf4f53..635a68f 100755 (executable)
 collections {
     group { name: GROUP_APPS_BG_LY;
         script {
-            public rel1;
-            public rel2;
             public alpha;
 
             public message(Msg_Type:type, id, ...) {
                 if (type == MSG_FLOAT_SET)
                 {
-                    set_float(rel1, getfarg(2));
-                    set_float(rel2, getfarg(3));
-                    set_float(alpha, getfarg(4));
-                    send_message(type, id, getfarg(2), getfarg(3), getfarg(4));
+                    set_float(alpha, getfarg(2));
+                    send_message(type, id, getfarg(2));
                 }
             }
         }
@@ -62,8 +58,8 @@ collections {
                     state: "edit" 0.0;
                     inherit: "default" 0.0;
                     visible: 1;
-                    rel1 {relative: 0.06 0.09; to:SIZE_SETTER;}
-                    rel2 {relative: 0.95 0.87; to:SIZE_SETTER;}
+                    rel1 {relative: 0.055 0.0855; to:SIZE_SETTER;}
+                    rel2 {relative: 0.95 0.873; to:SIZE_SETTER;}
                 }
                 description {
                     state: "hide" 0.0;
@@ -98,8 +94,6 @@ collections {
                 source: SIGNAL_SOURCE;
                 script {
                     custom_state(PART:APPS_APPS_VIEW_BG, "show", 0.0);
-                    //set_state_val(PART:APPS_APPS_VIEW_BG, STATE_REL1, 0, get_float(rel1));
-                    //set_state_val(PART:APPS_APPS_VIEW_BG, STATE_REL2, 0, get_float(rel2));
                     set_state_val(PART:APPS_APPS_VIEW_BG, STATE_COLOR, 0, 0, 0, round(get_float(alpha)));
                     set_state(PART:APPS_APPS_VIEW_BG, "custom", 0.0);
                 }
index ea2741f..b25be03 100755 (executable)
@@ -203,11 +203,9 @@ void apps_view_show_anim(double pos)
         LOGE("Failed to get edje from layout");
         return;
     }
-    Edje_Message_Float_Set *msg = malloc(sizeof(*msg) + 3 * sizeof(double));
-    msg->count = 3;
-    msg->val[0] = ((APPS_VIEW_ANIMATION_DELTA * (1-pos)) / apps_view_s.height);
-    msg->val[1] = 1+((APPS_VIEW_ANIMATION_DELTA * (1-pos)) / apps_view_s.height);
-    msg->val[2] = pos*APPS_VIEW_BG_OPACITY;
+    Edje_Message_Float_Set *msg = malloc(sizeof(*msg) + sizeof(double));
+    msg->count = 1;
+    msg->val[0] = pos*APPS_VIEW_BG_OPACITY;
 
     edje_object_message_send(edje, EDJE_MESSAGE_FLOAT_SET, 1, msg);
     edje_object_signal_emit(edje, SIGNAL_APPS_VIEW_ANIM, SIGNAL_SOURCE);
@@ -262,10 +260,19 @@ void apps_view_reorder(void)
         if (apps_view_icon_set(item))
             item_count++;
     }
+
     //Delete empty page
     while (((item_count-1) / (APPS_VIEW_COL*APPS_VIEW_ROW) +1) < eina_list_count(apps_view_s.page_list)) {
         __apps_view_remove_page();
     }
+
+    Evas_Object *mapbuf = NULL;
+    find_list = NULL;
+    Evas_Object *page_ly = NULL;
+    EINA_LIST_FOREACH(apps_view_s.page_list, find_list, page_ly) {
+        mapbuf = evas_object_data_get(page_ly, "mapbuf");
+        elm_mapbuf_enabled_set(mapbuf, EINA_TRUE);
+    }
 }
 
 void apps_view_folder_reroder(void)
@@ -601,9 +608,20 @@ static Evas_Object *__apps_view_add_page(void)
     evas_object_show(rect);
     elm_object_part_content_set(page_ly, SIZE_SETTER, rect);
 
-    elm_box_pack_end(apps_view_s.box, page_ly);
     evas_object_show(page_ly);
 
+    Evas_Object *mapbuf;
+    mapbuf = elm_mapbuf_add(apps_view_s.box);
+
+    elm_mapbuf_smooth_set(mapbuf, EINA_TRUE);
+    elm_mapbuf_alpha_set(mapbuf, EINA_TRUE);
+    elm_object_content_set(mapbuf, page_ly);
+    evas_object_show(mapbuf);
+
+    elm_box_pack_end(apps_view_s.box, mapbuf);
+
+    evas_object_data_set(page_ly, "mapbuf", mapbuf);
+
     apps_view_s.page_list = eina_list_append(apps_view_s.page_list, page_ly);
     apps_view_s.page_count += 1;
     page_indicator_set_page_count(apps_view_s.indicator, apps_view_s.page_count);
@@ -624,9 +642,12 @@ static void __apps_view_remove_page(void)
         apps_view_s.current_page = apps_view_s.page_count - 1;
     }
 
+    Evas_Object *mapbuf = evas_object_data_get(item, "mapbuf");
+
     elm_scroller_page_bring_in(apps_view_s.scroller, apps_view_s.current_page, 0);
-    elm_box_unpack(apps_view_s.box, item);
+    elm_box_unpack(apps_view_s.box, mapbuf);
     page_indicator_set_page_count(apps_view_s.indicator, apps_view_s.page_count);
+    evas_object_del(mapbuf);
     evas_object_del(item);
 }
 
@@ -863,7 +884,8 @@ bool apps_view_hw_home_key(void)
         __apps_view_close_folder_popup(apps_view_s.opened_folder);
     }
 
-    apps_view_set_state(VIEW_STATE_NORMAL);
+    if (apps_view_s.view_state != VIEW_STATE_NORMAL)
+        apps_view_set_state(VIEW_STATE_NORMAL);
 
     return false;
 }
@@ -960,6 +982,7 @@ void apps_view_set_state(view_state_t state)
             LOGE("Failed to get edje from layout");
             return;
         }
+
         edje_object_signal_emit(edje, SIGNAL_EDIT_MODE_OFF_ANI, SIGNAL_SOURCE);
 
         Eina_List *find_list = NULL;
index 8cc0a5a..0715f50 100755 (executable)
@@ -145,26 +145,18 @@ static void __page_indicator_scroll_cb(void *data, Evas_Object *obj, void *event
 
     current_x = page_indicator->current_page * page_indicator->w;
     angle = (double)(x - current_x) / page_indicator->w * 90.0;
-
-    if (fabs((float)(x - current_x)) <= page_indicator->w) {
-        next_page = x > current_x ? (page_indicator->current_page + 1) % page_indicator->page_count : page_indicator->current_page-1;
-        color = fabs(angle) * 2;
+    if (angle > 90.0) {
+        angle = (double)(x - page_indicator->w * page_indicator->page_count) / page_indicator->w * 90.0;
+        next_page = page_indicator->page_count - 1;
     } else {
-        if (x > current_x) {
-            next_page = page_indicator->page_count-1;
-            color = (double)(page_indicator->w*page_indicator->page_count - x)/page_indicator->w * 180.0;
-        } else {
-            next_page = 0;
-            color = 180.0;
-        }
+        next_page = page_indicator->current_page + (angle > 0 ? 1 : -1);
+        next_page %= page_indicator->page_count;
     }
 
-    if (next_page == page_indicator->page_count - 1 && page_indicator->current_page == 0 && page_indicator->page_count % 2 == 1) {
-        angle = angle - 270.0;
-    }
+    color = fabs(angle) * 2;
 
-    __page_indicator_unit_rotate(page_indicator->unit[page_indicator->current_page], 90.0 + angle, 255.0 - color);
-    __page_indicator_unit_rotate(page_indicator->unit[next_page], angle, 75.0 + color);
+    __page_indicator_unit_rotate(page_indicator->unit[page_indicator->current_page], 90 + angle, 255.0 - color);
+    __page_indicator_unit_rotate(page_indicator->unit[next_page], (angle < 0 ? 360 + angle : angle), 75.0 + color);
 }
 
 static void __page_indicator_scroll_anim_stop_cb(void *data, Evas_Object *obj, void *event_info)
@@ -177,6 +169,7 @@ static void __page_indicator_scroll_anim_stop_cb(void *data, Evas_Object *obj, v
     page_indicator_t *page_indicator = (page_indicator_t*) data;
 
     elm_scroller_current_page_get(obj, &page_indicator->current_page, NULL);
+    page_indicator->current_page %= page_indicator->page_count;
 
     __page_indicator_set_current_page(page_indicator);
 }