Espruino/libs/js/banglejs/E_showMenu_Q3.min.js
Richard de Boer 2cece5275d
Bangle.js2: fix E.showMenu redraw
2cd16032c37a0004f92be8d817502e198c0ebde5 missed updating a `s` to `l.scroller`
2022-05-08 15:21:53 +02:00

7 lines
3.4 KiB
JavaScript

(function(k){function v(a,b){var h=a.step||1;if(!a.noList&&void 0!==a.min&&void 0!==a.max&&20>(a.max-a.min)/h)E.showScroller({h:40,c:(a.max+h-a.min)/h,back:p,scrollMin:-24,scroll:-24,draw:(f,c)=>{if(0>f)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+b,c.x+12,c.y+40-12);g.setColor(g.theme.bg2).fillRect({x:c.x+4,y:c.y+2,w:c.w-8,h:c.h-4,r:5});f=f*h+a.min;
g.setColor(g.theme.fg2).setFont("12x20").setFontAlign(-1,0).drawString(a.format?a.format(f,1):f,c.x+12,c.y+20);g.drawImage(atob(f==a.value?"FBSBAAH4AH/gHgeDgBww8MY/xmf+bH/jz/88//PP/zz/88f+Nn/mY/xjDww4AcHgeAf+AB+A":"FBSBAAH4AH/gHgeDgBwwAMYABmAAbAADwAA8AAPAADwAA8AANgAGYABjAAw4AcHgeAf+AB+A"),c.x+c.w-32,c.y+20-10)},select:function(f){if(!(0>f)){Bangle.buzz(20);a.value=a.min+f*h;if(a.onchange)a.onchange(a.value);r.scroll=s.scroll;p()}}});else{var d=Bangle.appRect,e=a.value;g.reset().clearRect(Bangle.appRect);
g.setFont("12x20").setFontAlign(0,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+b,d.x+d.w/2,d.y+12);function f(){var c=d.x+d.w/2,l=12+d.y+d.h/2,u=a.format?a.format(e,2):e;g.reset().setColor(g.theme.bg2).fillRect({x:d.x+24,y:d.y+36,w:d.w-48,h:d.h-48,r:5});g.setColor(g.theme.fg2).setFontVector(Math.min(30,100*(d.w-52)/g.setFontVector(100).stringWidth(u))).setFontAlign(0,0).drawString(u,c,l);g.fillPoly([c,l-45,c+15,l-30,
c-15,l-30]).fillPoly([c,l+45,c+15,l+30,c-15,l+30])}f();Bangle.setUI({mode:"updown",back:p},c=>{if(c)e-=(c||1)*(a.step||1),void 0!==a.min&&e<a.min&&(e=a.wrap?a.max:a.min),void 0!==a.max&&e>a.max&&(e=a.wrap?a.min:a.max),f();else{a.value=e;if(a.onchange)a.onchange(a.value);r.scroll=s.scroll;p()}})}}function p(){q.scroller=E.showScroller(r)}if(void 0===k)return g.clearRect(Bangle.appRect),Bangle.setUI();var n=k[""]||{};n.title||(n.title="Menu");var t=n.back||k["< Back"],m=Object.keys(k).filter(a=>""!=
a&&"< Back"!=a);m.forEach(a=>{a=k[a];"object"!=typeof a||"boolean"!=typeof a.value||a.format||(a.format=b=>"\x00"+atob(b?"EhKBAH//v/////////////5//x//j//H+eP+Mf/A//h//z//////////3//g":"EhKBAH//v//8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA///3//g"))});var q={draw:()=>q.scroller.draw(),scroller:void 0},r={h:40,c:m.length,scrollMin:-24,scroll:void 0===n.scroll?-24:n.scroll,back:t,draw:(a,b)=>{if(0>a)return g.setColor(g.theme.fg).setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+
n.title,b.x+12,b.y+40-12);g.setColor(g.theme.bg2).fillRect({x:b.x+4,y:b.y+2,w:b.w-8,h:b.h-4,r:5});g.setColor(g.theme.fg2).setFont("12x20");var h=24,d=k[m[a]];if("object"==typeof d){var e=d.value;d.format&&(e=d.format(e));g.stringMetrics(e).width>b.w/2&&(e=g.wrapString(e,b.w/2).join("\n"));g.setFontAlign(1,0).drawString(e,b.x+b.w-8,b.y+20);h+=g.stringWidth(e)}else"function"==typeof d&&(g.drawImage(atob("CRKBAGA4Hg8DwPB4HgcDg8PB4eHg8HAwAA=="),b.x+b.w-21,b.y+20-9),h+=16);d=g.wrapString(m[a],b.w-h);1<
d.length&&(g.setFont("6x15"),d=g.wrapString(m[a],b.w-h));g.setFontAlign(-1,0).drawString(d.join("\n"),b.x+12,b.y+20)},select:function(a){if(0>a)return t&&t();var b=k[m[a]];Bangle.buzz(20);if("function"==typeof b)b(q);else if("object"==typeof b)if("number"==typeof b.value)v(b,m[a]);else{"boolean"==typeof b.value&&(b.value=!b.value);if(b.onchange)b.onchange(b.value);q.scroller.drawItem(a)}}};p();return q})