From 18f1fea26979503c56b785e8321ffcef5b8ca577 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Wed, 11 Nov 2015 17:29:58 -0500 Subject: [PATCH] add scroller indicator for zoom effect --- Makefile.am | 5 +- e-module-desksanity.edc | 164 ++++++++++++++++++++++++++++++++++++++++ glow_bottom.png | Bin 0 -> 5012 bytes glow_top.png | Bin 0 -> 5036 bytes 4 files changed, 168 insertions(+), 1 deletion(-) create mode 100644 glow_bottom.png create mode 100644 glow_top.png diff --git a/Makefile.am b/Makefile.am index 7746917..ebe7e4e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -18,7 +18,10 @@ EXTRA_DIST = module.desktop.in \ e_modules-desksanity.spec.in \ e-module-desksanity.edc \ epic-e-256.png \ - win_shadow.png + win_shadow.png \ +glow_bottom.png \ +glow_top.png + e-module-desksanity.edj: e-module-desksanity.edc $(EDJE_CC) -id $(top_srcdir) $< $@ diff --git a/e-module-desksanity.edc b/e-module-desksanity.edc index bb24447..46cab4c 100644 --- a/e-module-desksanity.edc +++ b/e-module-desksanity.edc @@ -193,7 +193,171 @@ collections { } } group { name: "e/modules/desksanity/zoom/scrollframe"; + images.image: "glow_bottom.png" COMP; + images.image: "glow_top.png" COMP; + script { + public visible; + public top_visible() { + new st[31], Float:vl; + get_state(PART:"top_clip", st, 30, vl); + if (!strcmp(st, "default")) { + run_program(get_program_id("tp_vis")); + run_program(get_program_id("tp_glow")); + } + } + public bottom_visible() { + new st[31], Float:vl; + get_state(PART:"bottom_clip", st, 30, vl); + if (!strcmp(st, "default")) { + run_program(get_program_id("btm_vis")); + run_program(get_program_id("btm_glow")); + } + } + } parts { + rect { "elm.dragable.vbar"; + dragable.x: 0 0 0; + dragable.y: 1 1 0; + dragable.confine: "elm.swallow.content"; + desc { + max: 0 0; + fixed: 1 1; + color: 0 0 0 0; + } + } + rect { "elm.dragable.hbar"; + dragable.x: 0 0 0; + dragable.y: 1 1 0; + dragable.confine: "elm.swallow.content"; + desc { + max: 0 0; + fixed: 1 1; + color: 0 0 0 0; + } + } + rect { "top_clip"; + desc { + color: 255 255 255 0; + hid; + } + desc { "visible"; + color: 255 255 255 180; + vis; + } + } + part { "glow_top"; clip: "top_clip"; + desc { "default"; + fixed: 0 1; + min: 16 2; + image.normal: "glow_top.png"; + aspect: 330 32; + rel2.relative: 1 0; + rel2.to_y: "elm.swallow.content"; + rel1.offset: 0 4; + } + desc { "glow"; inherit: "default"; + color: 255 255 255 100; + } + } + program { name: "scr_eval"; + signal: "drag,set"; source: "elm.dragable.vbar"; + script { + new Float:x, Float:y; + + if (get_int(visible)) { + get_drag(PART:"elm.dragable.vbar", x, y); + if (y < 1.0) + bottom_visible(); + else + run_program(get_program_id("bottom_hidden")); + if (y > 0.0) + top_visible(); + else + run_program(get_program_id("top_hidden")); + } + } + } + program { "tp_vis"; + action: STATE_SET "visible"; + target: "top_clip"; + transition: LINEAR 0.2; + } + program { "tp_glow"; + action: STATE_SET "glow"; + target: "glow_top"; + transition: SINUSOIDAL 0.7; + sequence { + action: STATE_SET "default"; + target: "glow_top"; + transition: SINUSOIDAL 0.7; + after: "tp_glow"; + } + } + program { name: "top_hidden"; + action: STATE_SET "default"; + targets: "top_clip" "glow_top"; + transition: LINEAR 0.2 CURRENT; + } + program { signal: "elm,action,show,vbar"; source: "elm"; + script { + set_int(visible, 1); + } + after: "scr_eval"; + } + program { signal: "elm,action,hide,vbar"; source: "elm"; + script { + set_int(visible, 0); + } + sequence { + action: STATE_SET "default"; + targets: "top_clip" "bottom_clip"; + transition: LINEAR 0.2; + } + } + rect { "bottom_clip"; + desc { + color: 255 255 255 0; + hid; + } + desc { "visible"; + color: 255 255 255 180; + vis; + } + } + part { "glow_bottom"; clip: "bottom_clip"; + desc { + fixed: 0 1; + min: 16 2; + image.normal: "glow_bottom.png"; + aspect: 330 32; + rel1.relative: 0 1; + rel1.to_y: "elm.swallow.content"; + } + desc { "glow"; inherit: "default"; + color: 255 255 255 100; + } + } + program { "btm_vis"; + action: STATE_SET "visible"; + target: "bottom_clip"; + transition: LINEAR 0.2; + } + program { "btm_glow"; + action: STATE_SET "glow"; + target: "glow_bottom"; + transition: SINUSOIDAL 0.7; + sequence { + action: STATE_SET "default"; + target: "glow_bottom"; + transition: SINUSOIDAL 0.7; + after: "btm_glow"; + } + } + program { name: "bottom_hidden"; + action: STATE_SET "default"; + targets: "bottom_clip" "glow_bottom"; + transition: LINEAR 0.2 CURRENT; + } rect { "clipper"; nomouse; desc { rel1.to: "elm.swallow.content"; diff --git a/glow_bottom.png b/glow_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..0819bbd46740639c953cc12e3d91566c5ff214bc GIT binary patch literal 5012 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