[Scroller] The shadow effect is shown according the scroll direction.
authorJaehwan Kim <jae.hwan.kim@samsung.com>
Fri, 15 Mar 2013 11:54:10 +0000 (20:54 +0900)
committerSungho Kwak <sungho1.kwak@samsung.com>
Thu, 21 Mar 2013 08:17:16 +0000 (17:17 +0900)
Change-Id: I47aa8655a7eb1abe43008cf8a3502bc49fc021a3

themes/widgets/scroller.edc

index 0b5e5ba..beda1cd 100644 (file)
@@ -1113,7 +1113,18 @@ group { name: "elm/genlist/base/default";
    }
 
    parts {
-      part { name: "shadow_clip";
+      part { name: "vshadow_clip";
+         type: RECT;
+         mouse_events: 0;
+         scale: 1;
+         description { state: "default" 0.0;
+         }
+         description { state: "hidden" 0.0;
+            visible: 0;
+            color: 255 255 255 0;
+         }
+      }
+      part { name: "hshadow_clip";
          type: RECT;
          mouse_events: 0;
          scale: 1;
@@ -1125,7 +1136,7 @@ group { name: "elm/genlist/base/default";
          }
       }
       part { name: "shadow_top";
-         clip_to: "shadow_clip";
+         clip_to: "vshadow_clip";
          type: IMAGE;
          scale: 1;
          mouse_events: 0;
@@ -1146,7 +1157,7 @@ group { name: "elm/genlist/base/default";
          }
       }
       part { name: "shadow_bottom";
-         clip_to: "shadow_clip";
+         clip_to: "vshadow_clip";
          type: IMAGE;
          scale: 1;
          mouse_events: 0;
@@ -1167,7 +1178,7 @@ group { name: "elm/genlist/base/default";
          }
       }
       part { name: "shadow_left";
-         clip_to: "shadow_clip";
+         clip_to: "hshadow_clip";
          type: IMAGE;
          scale: 1;
          mouse_events: 0;
@@ -1188,7 +1199,7 @@ group { name: "elm/genlist/base/default";
          }
       }
       part { name: "shadow_right";
-         clip_to: "shadow_clip";
+         clip_to: "hshadow_clip";
          type: IMAGE;
          scale: 1;
          mouse_events: 0;
@@ -1274,7 +1285,8 @@ group { name: "elm/genlist/base/default";
          script {
             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
-            set_state(PART:"shadow_clip", "hidden", 0.0);
+            set_state(PART:"vshadow_clip", "hidden", 0.0);
+            set_state(PART:"hshadow_clip", "hidden", 0.0);
             set_int(sbvis_h, 0);
             set_int(sbvis_v, 0);
             set_int(sbalways_v, 0);
@@ -1290,14 +1302,28 @@ group { name: "elm/genlist/base/default";
          source: "";
          action:  STATE_SET "default" 0.0;
          transition: LINEAR 0.5;
-         target: "shadow_clip";
+         target: "vshadow_clip";
       }
       program { name: "vshadow_hide";
          signal: "do-hide-vshadow";
          source: "";
          action:  STATE_SET "hidden" 0.0;
          transition: LINEAR 0.5;
-         target: "shadow_clip";
+         target: "vshadow_clip";
+      }
+      program { name: "hshadow_show";
+         signal: "do-show-hshadow";
+         source: "";
+         action:  STATE_SET "default" 0.0;
+         transition: LINEAR 0.5;
+         target: "hshadow_clip";
+      }
+      program { name: "hshadow_hide";
+         signal: "do-hide-hshadow";
+         source: "";
+         action:  STATE_SET "hidden" 0.0;
+         transition: LINEAR 0.5;
+         target: "hshadow_clip";
       }
       program { name: "scroll";
          signal: "elm,action,scroll";
@@ -1320,14 +1346,51 @@ group { name: "elm/genlist/base/default";
             if (v > 0) cancel_timer(v);
             v = timer(1, "timer0", 0);
             set_int(sbvis_timer, v);
-
+         }
+      }
+      program { name: "scroll_up";
+         signal: "elm,action,scroll,up";
+         source: "elm";
+         after: "scroll_vertical";
+      }
+      program { name: "scroll_down";
+         signal: "elm,action,scroll,down";
+         source: "elm";
+         after: "scroll_vertical";
+      }
+      program { name: "scroll_vertical";
+         script {
+            new v;
             v = get_int(edge_timer);
             if (!v) {
                set_state(PART:"shadow_top", "default", 0.0);
                set_state(PART:"shadow_bottom", "default", 0.0);
+               emit("do-show-vshadow", "");
+               v = get_int(sh_timer);
+               if (v > 0) cancel_timer(v);
+               v = timer(0.2, "timer1", 0);
+               set_int(sh_timer, v);
+            }
+         }
+      }
+      program { name: "scroll_left";
+         signal: "elm,action,scroll,left";
+         source: "elm";
+         after: "scroll_horizontal";
+      }
+      program { name: "scroll_right";
+         signal: "elm,action,scroll,right";
+         source: "elm";
+         after: "scroll_horizontal";
+      }
+      program { name: "scroll_horizontal";
+         script {
+            new v;
+            v = get_int(edge_timer);
+            if (!v) {
                set_state(PART:"shadow_left", "default", 0.0);
                set_state(PART:"shadow_right", "default", 0.0);
-               emit("do-show-vshadow", "");
+               emit("do-show-hshadow", "");
                v = get_int(sh_timer);
                if (v > 0) cancel_timer(v);
                v = timer(0.2, "timer1", 0);
@@ -1338,35 +1401,49 @@ group { name: "elm/genlist/base/default";
       program { name: "edge_top";
          signal: "elm,edge,top";
          source: "elm";
-         after: "edge";
+         after: "edge_vertical";
       }
       program { name: "edge_bottom";
          signal: "elm,edge,bottom";
          source: "elm";
-         after: "edge";
+         after: "edge_vertical";
       }
       program { name: "edge_left";
          signal: "elm,edge,left";
          source: "elm";
-         after: "edge";
+         after: "edge_horizontal";
       }
       program { name: "edge_right";
          signal: "elm,edge,right";
          source: "elm";
-         after: "edge";
+         after: "edge_horizontal";
       }
-      program { name: "edge";
+      program { name: "edge_vertical";
          script {
             new v;
             v = get_int(sh_timer);
             if (v > 0) cancel_timer(v);
             set_state(PART:"shadow_top", "edge", 0.0);
             set_state(PART:"shadow_bottom", "edge", 0.0);
+            v = get_int(edge_timer);
+            if (!v) {
+                emit("do-show-vshadow", "");
+            }
+            if (v > 0) cancel_timer(v);
+            v = timer(0.2, "timer2", 0);
+            set_int(edge_timer, v);
+         }
+      }
+      program { name: "edge_horizontal";
+         script {
+            new v;
+            v = get_int(sh_timer);
+            if (v > 0) cancel_timer(v);
             set_state(PART:"shadow_left", "edge", 0.0);
             set_state(PART:"shadow_right", "edge", 0.0);
             v = get_int(edge_timer);
             if (!v) {
-                emit("do-show-vshadow", "");
+                emit("do-show-hshadow", "");
             }
             if (v > 0) cancel_timer(v);
             v = timer(0.2, "timer2", 0);
@@ -1415,7 +1492,18 @@ group { name: "elm/genlist/base/handler";
    }
 
    parts {
-      part { name: "shadow_clip";
+      part { name: "vshadow_clip";
+         type: RECT;
+         mouse_events: 0;
+         scale: 1;
+         description { state: "default" 0.0;
+         }
+         description { state: "hidden" 0.0;
+            visible: 0;
+            color: 255 255 255 0;
+         }
+      }
+      part { name: "hshadow_clip";
          type: RECT;
          mouse_events: 0;
          scale: 1;
@@ -1427,7 +1515,7 @@ group { name: "elm/genlist/base/handler";
          }
       }
       part { name: "shadow_top";
-         clip_to: "shadow_clip";
+         clip_to: "vshadow_clip";
          type: IMAGE;
          scale: 1;
          mouse_events: 0;
@@ -1448,7 +1536,7 @@ group { name: "elm/genlist/base/handler";
          }
       }
       part { name: "shadow_bottom";
-         clip_to: "shadow_clip";
+         clip_to: "vshadow_clip";
          type: IMAGE;
          scale: 1;
          mouse_events: 0;
@@ -1469,7 +1557,7 @@ group { name: "elm/genlist/base/handler";
          }
       }
       part { name: "shadow_left";
-         clip_to: "shadow_clip";
+         clip_to: "hshadow_clip";
          type: IMAGE;
          scale: 1;
          mouse_events: 0;
@@ -1490,7 +1578,7 @@ group { name: "elm/genlist/base/handler";
          }
       }
       part { name: "shadow_right";
-         clip_to: "shadow_clip";
+         clip_to: "hshadow_clip";
          type: IMAGE;
          scale: 1;
          mouse_events: 0;
@@ -1518,7 +1606,8 @@ group { name: "elm/genlist/base/handler";
          script {
             set_state(PART:"sb_hbar_clip", "hidden", 0.0);
             set_state(PART:"sb_vbar_clip", "hidden", 0.0);
-            set_state(PART:"shadow_clip", "hidden", 0.0);
+            set_state(PART:"vshadow_clip", "hidden", 0.0);
+            set_state(PART:"hshadow_clip", "hidden", 0.0);
             set_int(sbvis_h, 0);
             set_int(sbvis_v, 0);
             set_int(sbalways_v, 0);
@@ -1593,14 +1682,28 @@ group { name: "elm/genlist/base/handler";
          source: "";
          action:  STATE_SET "default" 0.0;
          transition: LINEAR 0.5;
-         target: "shadow_clip";
+         target: "vshadow_clip";
       }
       program { name: "vshadow_hide";
          signal: "do-hide-vshadow";
          source: "";
          action:  STATE_SET "hidden" 0.0;
          transition: LINEAR 0.5;
-         target: "shadow_clip";
+         target: "vshadow_clip";
+      }
+      program { name: "hshadow_show";
+         signal: "do-show-hshadow";
+         source: "";
+         action:  STATE_SET "default" 0.0;
+         transition: LINEAR 0.5;
+         target: "hshadow_clip";
+      }
+      program { name: "hshadow_hide";
+         signal: "do-hide-hshadow";
+         source: "";
+         action:  STATE_SET "hidden" 0.0;
+         transition: LINEAR 0.5;
+         target: "hshadow_clip";
       }
       program { name: "scroll";
          signal: "elm,action,scroll";
@@ -1621,16 +1724,53 @@ group { name: "elm/genlist/base/handler";
             }
             v = get_int(sbvis_timer);
             if (v > 0) cancel_timer(v);
-            v = timer(1.0, "timer0", 0);
+            v = timer(1, "timer0", 0);
             set_int(sbvis_timer, v);
-
+         }
+      }
+      program { name: "scroll_up";
+         signal: "elm,action,scroll,up";
+         source: "elm";
+         after: "scroll_vertical";
+      }
+      program { name: "scroll_down";
+         signal: "elm,action,scroll,down";
+         source: "elm";
+         after: "scroll_vertical";
+      }
+      program { name: "scroll_vertical";
+         script {
+            new v;
             v = get_int(edge_timer);
             if (!v) {
                set_state(PART:"shadow_top", "default", 0.0);
                set_state(PART:"shadow_bottom", "default", 0.0);
+               emit("do-show-vshadow", "");
+               v = get_int(sh_timer);
+               if (v > 0) cancel_timer(v);
+               v = timer(0.2, "timer1", 0);
+               set_int(sh_timer, v);
+            }
+         }
+      }
+      program { name: "scroll_left";
+         signal: "elm,action,scroll,left";
+         source: "elm";
+         after: "scroll_horizontal";
+      }
+      program { name: "scroll_right";
+         signal: "elm,action,scroll,right";
+         source: "elm";
+         after: "scroll_horizontal";
+      }
+      program { name: "scroll_horizontal";
+         script {
+            new v;
+            v = get_int(edge_timer);
+            if (!v) {
                set_state(PART:"shadow_left", "default", 0.0);
                set_state(PART:"shadow_right", "default", 0.0);
-               emit("do-show-vshadow", "");
+               emit("do-show-hshadow", "");
                v = get_int(sh_timer);
                if (v > 0) cancel_timer(v);
                v = timer(0.2, "timer1", 0);
@@ -1641,35 +1781,49 @@ group { name: "elm/genlist/base/handler";
       program { name: "edge_top";
          signal: "elm,edge,top";
          source: "elm";
-         after: "edge";
+         after: "edge_vertical";
       }
       program { name: "edge_bottom";
          signal: "elm,edge,bottom";
          source: "elm";
-         after: "edge";
+         after: "edge_vertical";
       }
       program { name: "edge_left";
          signal: "elm,edge,left";
          source: "elm";
-         after: "edge";
+         after: "edge_horizontal";
       }
       program { name: "edge_right";
          signal: "elm,edge,right";
          source: "elm";
-         after: "edge";
+         after: "edge_horizontal";
       }
-      program { name: "edge";
+      program { name: "edge_vertical";
          script {
             new v;
             v = get_int(sh_timer);
             if (v > 0) cancel_timer(v);
             set_state(PART:"shadow_top", "edge", 0.0);
             set_state(PART:"shadow_bottom", "edge", 0.0);
+            v = get_int(edge_timer);
+            if (!v) {
+                emit("do-show-vshadow", "");
+            }
+            if (v > 0) cancel_timer(v);
+            v = timer(0.2, "timer2", 0);
+            set_int(edge_timer, v);
+         }
+      }
+      program { name: "edge_horizontal";
+         script {
+            new v;
+            v = get_int(sh_timer);
+            if (v > 0) cancel_timer(v);
             set_state(PART:"shadow_left", "edge", 0.0);
             set_state(PART:"shadow_right", "edge", 0.0);
             v = get_int(edge_timer);
             if (!v) {
-                emit("do-show-vshadow", "");
+                emit("do-show-hshadow", "");
             }
             if (v > 0) cancel_timer(v);
             v = timer(0.2, "timer2", 0);