From 1152fb3e3528e024f0f9e01451783a937fdbe4dc Mon Sep 17 00:00:00 2001 From: Yeshwanth Reddivari Date: Mon, 28 Mar 2016 13:41:27 +0530 Subject: [PATCH] Slider: Theme - Add support for range in edc phab: https://phab.enlightenment.org/D3821 Test Plan: elementary_test -to slider @feature Change-Id: Ibc3f7c93efb927a6fc602f246a795c426f80bd39 --- data/elementary/themes/edc/elm/slider.edc | 473 ++++++++++++++++-- .../themes/img/horiz_glow_range.png | Bin 0 -> 131 bytes .../elementary/themes/img/vert_glow_range.png | Bin 0 -> 127 bytes 3 files changed, 443 insertions(+), 30 deletions(-) create mode 100755 data/elementary/themes/img/horiz_glow_range.png create mode 100755 data/elementary/themes/img/vert_glow_range.png diff --git a/data/elementary/themes/edc/elm/slider.edc b/data/elementary/themes/edc/elm/slider.edc index b39a680163..5786dfec60 100644 --- a/data/elementary/themes/edc/elm/slider.edc +++ b/data/elementary/themes/edc/elm/slider.edc @@ -39,6 +39,7 @@ group { name: "elm/slider/horizontal/default"; images.image: "slider_run_bevel_horiz.png" COMP; images.image: "slider_run_base_light_horiz.png" COMP; images.image: "horiz_glow_run.png" COMP; + images.image: "horiz_glow_range.png" COMP; images.image: "horiz_glow_run_rev.png" COMP; images.image: "knob_round_small_normal.png" COMP; images.image: "knob_round_small_selected.png" COMP; @@ -65,6 +66,19 @@ group { name: "elm/slider/horizontal/default"; #define DISABLE 32 script { public slmode; + public range; + public g_timer_id; + public update_glow() + { + new x1,y1,w1,h1; + new x2,y2,w2,h2; + get_geometry(PART:"knob", x1, y1, w1, h1); + get_geometry(PART:"knob2", x2, y2, w2, h2); + if(x2 < x1) + set_state(PART:"glow", "range_reverse", 0.0); + else + set_state(PART:"glow", "range", 0.0); + } public eval_mode(m) { new ic = m & ICON; new l = m & LABEL; @@ -72,22 +86,36 @@ group { name: "elm/slider/horizontal/default"; new u = m & UNITS; new d = m & DISABLE; new i = m & INVERT; - if (i) { - if (!d) { - set_state(PART:"base", "default", 0.0); - set_state(PART:"glow", "inverted", 0.0); - } else { - set_state(PART:"base", "disabled", 0.0); - set_state(PART:"glow", "disabled_inverted", 0.0); - } - } else { - if (!d) { - set_state(PART:"base", "default", 0.0); - set_state(PART:"glow", "default", 0.0); - } else { - set_state(PART:"base", "disabled", 0.0); - set_state(PART:"glow", "disabled", 0.0); - } + new r = get_int(range); + if (!r) { + if (i) { + if (!d) { + set_state(PART:"base", "default", 0.0); + set_state(PART:"glow", "inverted", 0.0); + } else { + set_state(PART:"base", "disabled", 0.0); + set_state(PART:"glow", "disabled_inverted", 0.0); + } + } else { + if (!d) { + set_state(PART:"base", "default", 0.0); + set_state(PART:"glow", "default", 0.0); + } else { + set_state(PART:"base", "disabled", 0.0); + set_state(PART:"glow", "disabled", 0.0); + } + } + } else if (d) { + new x1,y1,w1,h1; + new x2,y2,w2,h2; + get_geometry(PART:"knob", x1, y1, w1, h1); + get_geometry(PART:"knob2", x2, y2, w2, h2); + set_state(PART:"base", "disabled", 0.0); + if(x2 < x1) + set_state(PART:"glow", "disabled_range_reverse", 0.0); + else + set_state(PART:"glow", "disabled_range", 0.0); + } if (l) { if (!d) { @@ -189,6 +217,32 @@ group { name: "elm/slider/horizontal/default"; rel2.to: "base"; image.border: 4 0 0 0; } + description { state: "range" 0.0; + image.normal: "horiz_glow_range.png"; + rel1.relative: 0.5 1.0; + rel1.offset: -1 -2; + rel1.to_x: "button"; + rel1.to_y: "base"; + rel2.relative: 0.5 1.0; + rel2.offset: -1 -2; + rel2.to_x: "button2"; + rel2.to_y: "base"; + fixed: 0 1; + image.border: 0 4 0 0; + } + description { state: "disabled_range" 0.0; + inherit: "range" 0.0; + color: 255 255 255 64; + } + description { state: "range_reverse" 0.0; + inherit: "range" 0.0; + rel1.to_x: "button2"; + rel2.to_x: "button"; + } + description { state: "disabled_range_reverse" 0.0; + inherit: "range_reverse" 0.0; + color: 255 255 255 64; + } description { state: "disabled_inverted" 0.0; inherit: "inverted" 0.0; color: 255 255 255 64; @@ -223,6 +277,7 @@ group { name: "elm/slider/horizontal/default"; rel2.offset: -1 -3; rel2.relative: 0.0 1.0; rel2.to_y: "elm.swallow.bar"; + fixed: 1 0; } description { state: "visible" 0.0; inherit: "default" 0.0; @@ -297,6 +352,7 @@ group { name: "elm/slider/horizontal/default"; rel1.offset: 0 2; rel1.relative: 1.0 0.0; rel2.offset: -1 -3; + fixed: 1 0; } description { state: "visible" 0.0; inherit: "default" 0.0; @@ -350,6 +406,12 @@ group { name: "elm/slider/horizontal/default"; rel1.offset: -3 2; rel2.offset: -3 -3; } + description { state: "disabled_visible" 0.0; + inherit: "default" 0.0; + rel1.offset: -3 2; + rel2.offset: -3 -3; + color: 255 255 255 64; + } } part { name: "elm.units"; type: TEXT; mouse_events: 0; effect: SHADOW BOTTOM; @@ -440,6 +502,93 @@ group { name: "elm/slider/horizontal/default"; rel2.to: "elm.dragable.slider"; } } + part { name: "button2"; type: GROUP; mouse_events: 0; + source: "elm/slider/horizontal/indicator/default"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "elm.dragable2.slider"; + rel2.to: "elm.dragable2.slider"; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + } + } + part { name: "elm.dragable2.slider"; type: RECT; + scale: 1; + dragable.x: 1 1 0; + dragable.y: 0 0 0; + dragable.confine: "elm.swallow.bar"; + description { state: "default" 0.0; + color: 0 0 0 0; + min: 16 16; + max: 16 16; + fixed: 1 1; + rel1.relative: 0.5 0.0; + rel1.to_x: "elm.swallow.bar"; + rel2.relative: 0.5 1.0; + rel2.to_x: "elm.swallow.bar"; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "knob2"; + description { state: "default" 0.0; + image.normal: "knob"; + fixed: 1 1; + min: 12 12; + step: 2 2; + max: 32 32; // XXX allow bigger sizes with more knob images + rel1.to: "elm.dragable2.slider"; + rel1.offset: -4 -4; + rel2.to: "elm.dragable2.slider"; + rel2.offset: 3 3; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + } + } + part { name: "slideevent2"; type: RECT; repeat_events: 1; + scale: 1; + ignore_flags: ON_HOLD; + dragable.events: "elm.dragable2.slider"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "elm.dragable2.slider"; + rel2.to: "elm.dragable2.slider"; + color: 0 0 0 0; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.track2.slider"; type: SWALLOW; mouse_events: 0; + description { state: "default" 0.0; + max: 0 0; + rel1.to: "elm.dragable2.slider"; + rel2.to: "elm.dragable2.slider"; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } part { name: "event"; type: RECT; description { state: "default" 0.0; color: 0 0 0 0; @@ -462,6 +611,46 @@ group { name: "elm/slider/horizontal/default"; action: STATE_SET "default" 0.0; target: "knob"; } + program { + signal: "elm,slider,range,enable"; + source: "elm"; + script { + set_int(range, 1); + set_state(PART:"button2", "show", 0.0); + set_state(PART:"elm.dragable2.slider", "show", 0.0); + set_state(PART:"knob2", "show", 0.0); + set_state(PART:"slideevent2", "show", 0.0); + set_state(PART:"elm.track2.slider", "show", 0.0); + update_glow(); + new m = get_int(slmode); + eval_mode(m); + } + } + program { + signal: "elm,slider,range,disable"; + source: "elm"; + script { + set_int(range, 0); + set_state(PART:"button2", "default", 0.0); + set_state(PART:"elm.dragable2.slider", "default", 0.0); + set_state(PART:"knob2", "default", 0.0); + set_state(PART:"slideevent2", "default", 0.0); + set_state(PART:"elm.track2.slider", "default", 0.0); + set_state(PART:"glow", "default", 0.0); + new m = get_int(slmode); + eval_mode(m); + } + } + program { + signal: "drag"; + source: "elm.dragable*"; + script { + new r; + r = get_int(range); + if (r) + update_glow(); + } + } program { signal: "elm,state,indicator,show"; source: "elm"; action: SIGNAL_EMIT "elm,popup,show" "elm"; @@ -489,6 +678,24 @@ group { name: "elm/slider/horizontal/default"; program { name: "popup_hide2"; action: STATE_SET "default" 0.0; target: "button"; + } + program { + signal: "mouse,down,1"; source: "slideevent2"; + action: SIGNAL_EMIT "elm,popup,show" "elm"; + after: "popup2_show2"; + } + program { name: "popup2_show2"; + action: STATE_SET "show" 0.0; + target: "button2"; + } + program { + signal: "mouse,up,1"; source: "slideevent2"; + action: SIGNAL_EMIT "elm,popup,hide" "elm"; + after: "popup2_hide2"; + } + program { name: "popup2_hide2"; + action: STATE_SET "hidden" 0.0; + target: "button2"; } program { signal: "elm,state,text,visible"; source: "elm"; @@ -622,6 +829,9 @@ group { name: "elm/slider/horizontal/indicator/default"; fixed: 1 1; min: 16 16; } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } } part { name: "clip"; type: RECT; description { state: "default" 0.0; @@ -745,6 +955,7 @@ group { name: "elm/slider/vertical/default"; images.image: "slider_run_bevel_vert.png" COMP; images.image: "slider_run_base_light_vert.png" COMP; images.image: "vert_glow_run.png" COMP; + images.image: "vert_glow_range.png" COMP; images.image: "vert_glow_run_rev.png" COMP; images.image: "knob_round_small_normal.png" COMP; images.image: "knob_round_small_selected.png" COMP; @@ -771,6 +982,19 @@ group { name: "elm/slider/vertical/default"; #define DISABLE 32 script { public slmode; + public range; + public g_timer_id; + public update_glow() + { + new x1,y1,w1,h1; + new x2,y2,w2,h2; + get_geometry(PART:"knob", x1, y1, w1, h1); + get_geometry(PART:"knob2", x2, y2, w2, h2); + if(y2 < y1) + set_state(PART:"glow", "range_reverse", 0.0); + else + set_state(PART:"glow", "range", 0.0); + } public eval_mode(m) { new ic = m & ICON; new l = m & LABEL; @@ -778,22 +1002,35 @@ group { name: "elm/slider/vertical/default"; new u = m & UNITS; new d = m & DISABLE; new i = m & INVERT; - if (i) { - if (!d) { - set_state(PART:"base", "default", 0.0); - set_state(PART:"glow", "inverted", 0.0); + new r = get_int(range); + if (!r) { + if (i) { + if (!d) { + set_state(PART:"base", "default", 0.0); + set_state(PART:"glow", "inverted", 0.0); + } else { + set_state(PART:"base", "disabled", 0.0); + set_state(PART:"glow", "disabled_inverted", 0.0); + } } else { - set_state(PART:"base", "disabled", 0.0); - set_state(PART:"glow", "disabled_inverted", 0.0); - } - } else { - if (!d) { - set_state(PART:"base", "default", 0.0); - set_state(PART:"glow", "default", 0.0); - } else { - set_state(PART:"base", "disabled", 0.0); - set_state(PART:"glow", "disabled", 0.0); + if (!d) { + set_state(PART:"base", "default", 0.0); + set_state(PART:"glow", "default", 0.0); + } else { + set_state(PART:"base", "disabled", 0.0); + set_state(PART:"glow", "disabled", 0.0); + } } + } else if (d) { + new x1,y1,w1,h1; + new x2,y2,w2,h2; + get_geometry(PART:"knob", x1, y1, w1, h1); + get_geometry(PART:"knob2", x2, y2, w2, h2); + set_state(PART:"base", "disabled", 0.0); + if(y2 < y1) + set_state(PART:"glow", "disabled_range_reverse", 0.0); + else + set_state(PART:"glow", "disabled_range", 0.0); } if (l) { if (!d) { @@ -895,6 +1132,32 @@ group { name: "elm/slider/vertical/default"; rel2.to: "base"; image.border: 0 0 4 0; } + description { state: "range" 0.0; + image.normal: "vert_glow_range.png"; + rel1.relative: 0.5 1.0; + rel1.offset: -1 -2; + rel1.to_x: "base"; + rel1.to_y: "button"; + rel2.relative: 0.5 1.0; + rel2.offset: -1 -2; + rel2.to_x: "base"; + rel2.to_y: "button2"; + fixed: 1 0; + image.border: 0 4 0 0; + } + description { state: "disabled_range" 0.0; + inherit: "range" 0.0; + color: 255 255 255 64; + } + description { state: "range_reverse" 0.0; + inherit: "range" 0.0; + rel1.to_y: "button2"; + rel2.to_y: "button"; + } + description { state: "disabled_range_reverse" 0.0; + inherit: "range_reverse" 0.0; + color: 255 255 255 64; + } description { state: "disabled_inverted" 0.0; inherit: "inverted" 0.0; color: 255 255 255 64; @@ -929,6 +1192,7 @@ group { name: "elm/slider/vertical/default"; rel2.offset: -3 -1; rel2.relative: 1.0 0.0; rel2.to_x: "elm.swallow.bar"; + fixed: 0 1; } description { state: "visible" 0.0; inherit: "default" 0.0; @@ -1004,6 +1268,7 @@ group { name: "elm/slider/vertical/default"; rel1.offset: 2 0; rel1.relative: 0.0 1.0; rel2.offset: -3 -1; + fixed: 0 1; } description { state: "visible" 0.0; inherit: "default" 0.0; @@ -1149,6 +1414,93 @@ group { name: "elm/slider/vertical/default"; rel2.to: "elm.dragable.slider"; } } + part { name: "button2"; type: GROUP; mouse_events: 0; + source: "elm/slider/vertical/indicator/default"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "elm.dragable2.slider"; + rel2.to: "elm.dragable2.slider"; + visible: 0; + } + description { state: "hidden" 0.0; + inherit: "default" 0.0; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.dragable2.slider"; type: RECT; + scale: 1; + dragable.x: 0 0 0; + dragable.y: 1 1 0; + dragable.confine: "elm.swallow.bar"; + description { state: "default" 0.0; + color: 0 0 0 0; + min: 16 16; + max: 16 16; + fixed: 1 1; + rel1.relative: 0.0 0.5; + rel1.to_x: "elm.swallow.bar"; + rel2.relative: 1.0 0.5; + rel2.to_x: "elm.swallow.bar"; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "knob2"; + description { state: "default" 0.0; + image.normal: "knob"; + fixed: 1 1; + min: 12 12; + step: 2 2; + max: 32 32; // XXX allow bigger sizes with more knob images + rel1.to: "elm.dragable2.slider"; + rel1.offset: -4 -4; + rel2.to: "elm.dragable2.slider"; + rel2.offset: 3 3; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + description { state: "clicked" 0.0; + inherit: "default" 0.0; + } + } + part { name: "slideevent2"; type: RECT; repeat_events: 1; + scale: 1; + ignore_flags: ON_HOLD; + dragable.events: "elm.dragable2.slider"; + description { state: "default" 0.0; + fixed: 1 1; + rel1.to: "elm.dragable2.slider"; + rel2.to: "elm.dragable2.slider"; + color: 0 0 0 0; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } + part { name: "elm.track2.slider"; type: SWALLOW; mouse_events: 0; + description { state: "default" 0.0; + max: 0 0; + rel1.to: "elm.dragable2.slider"; + rel2.to: "elm.dragable2.slider"; + visible: 0; + } + description { state: "show" 0.0; + inherit: "default" 0.0; + visible: 1; + } + } part { name: "event"; type: RECT; description { state: "default" 0.0; color: 0 0 0 0; @@ -1171,6 +1523,46 @@ group { name: "elm/slider/vertical/default"; action: STATE_SET "default" 0.0; target: "knob"; } + program { + signal: "elm,slider,range,enable"; + source: "elm"; + script { + set_int(range, 1); + set_state(PART:"button2", "show", 0.0); + set_state(PART:"elm.dragable2.slider", "show", 0.0); + set_state(PART:"knob2", "show", 0.0); + set_state(PART:"slideevent2", "show", 0.0); + set_state(PART:"elm.track2.slider", "show", 0.0); + update_glow(); + new m = get_int(slmode); + eval_mode(m); + } + } + program { + signal: "elm,slider,range,disable"; + source: "elm"; + script { + set_int(range, 0); + set_state(PART:"button2", "default", 0.0); + set_state(PART:"elm.dragable2.slider", "default", 0.0); + set_state(PART:"knob2", "default", 0.0); + set_state(PART:"slideevent2", "default", 0.0); + set_state(PART:"elm.track2.slider", "default", 0.0); + set_state(PART:"glow", "default", 0.0); + new m = get_int(slmode); + eval_mode(m); + } + } + program { + signal: "drag"; + source: "elm.dragable*"; + script { + new r; + r = get_int(range); + if (r) + update_glow(); + } + } program { signal: "elm,state,indicator,show"; source: "elm"; action: SIGNAL_EMIT "elm,popup,show" "elm"; @@ -1199,6 +1591,24 @@ group { name: "elm/slider/vertical/default"; action: STATE_SET "default" 0.0; target: "button"; } + program { + signal: "mouse,down,1"; source: "slideevent2"; + action: SIGNAL_EMIT "elm,popup,show" "elm"; + after: "popup2_show2"; + } + program { name: "popup2_show2"; + action: STATE_SET "show" 0.0; + target: "button2"; + } + program { + signal: "mouse,up,1"; source: "slideevent2"; + action: SIGNAL_EMIT "elm,popup,hide" "elm"; + after: "popup2_hide2"; + } + program { name: "popup2_hide2"; + action: STATE_SET "hidden" 0.0; + target: "button2"; + } program { signal: "elm,state,text,visible"; source: "elm"; script { @@ -1329,6 +1739,9 @@ group { name: "elm/slider/vertical/indicator/default"; fixed: 1 1; min: 16 16; } + description { state: "disabled" 0.0; + inherit: "default" 0.0; + } } part { name: "clip"; type: RECT; description { state: "default" 0.0; diff --git a/data/elementary/themes/img/horiz_glow_range.png b/data/elementary/themes/img/horiz_glow_range.png new file mode 100755 index 0000000000000000000000000000000000000000..63b0e6c65e1c476e32c7028657311c1eca190b8d GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^>OjoQ!2~4d|7mmrQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtTyl7sn8d;N*meFG&mnR`cyR=K8a5dBMsc XFR(@Uz+{UEpc)2GS3j3^P6anMprDASi(`mJaB@P#7p5+^NaiC^Uziw9>TD4X T*uHxLP@cil)z4*}Q$iB}zPBJI literal 0 HcmV?d00001