From b42a71190842b5f130f06850c78921ee3e2584c6 Mon Sep 17 00:00:00 2001 From: Jaehwan Kim Date: Fri, 15 Mar 2013 20:54:10 +0900 Subject: [PATCH] [Scroller] The shadow effect is shown according the scroll direction. Change-Id: I47aa8655a7eb1abe43008cf8a3502bc49fc021a3 --- themes/widgets/scroller.edc | 220 +++++++++++++++++++++++++++++++++++++------- 1 file changed, 187 insertions(+), 33 deletions(-) diff --git a/themes/widgets/scroller.edc b/themes/widgets/scroller.edc index 0b5e5ba..beda1cd 100644 --- a/themes/widgets/scroller.edc +++ b/themes/widgets/scroller.edc @@ -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); -- 2.7.4