Espruino/libs/js/banglejs/E_showMenu.min.js

5 lines
2.4 KiB
JavaScript

(function(n){g.clear(1);Bangle.setLCDPower(1);Bangle.drawWidgets();if(n){var q=g.getWidth()-9;g.getHeight();var f=Object.keys(n),a=n[""];a&&f.splice(f.indexOf(""),1);a instanceof Object||(a={});a.fontHeight=16;a.x=0;a.x2=q-2;a.y=24;a.y2=220;void 0===a.selected&&(a.selected=0);a.fontHeight||(a.fontHeight=6);var r=0|a.x,p=a.x2||g.getWidth()-1,m=0|a.y,u=a.y2||g.getHeight()-1;a.title&&(m+=a.fontHeight+2);var t=require("locale"),d={lastIdx:0,draw:function(c,b){var l=0|Math.min((u-
m)/a.fontHeight,f.length),e=E.clip(a.selected-(l>>1),0,f.length-l);e!=d.lastIdx&&(c=void 0);d.lastIdx=e;var h=m;g.reset().setFont("6x8",2).setFontAlign(0,-1,0);void 0===c&&a.title&&(g.drawString(a.title,(r+p)/2,m-a.fontHeight-2),g.drawLine(r,m-2,p,m-2));void 0!==c&&(e<c&&(h+=a.fontHeight*(c-e),e=c),e+l>b&&(l=1+b-c));for(;l--;){b=f[e];c=n[b];var k=e==a.selected&&!d.selectEdit;g.setColor(k?g.theme.bgH:g.theme.bg);g.fillRect(r,h,p,h+a.fontHeight-1);g.setColor(k?g.theme.fgH:g.theme.fg);g.setFontAlign(-1,
-1);g.drawString(t.translate(b),r,h);"object"==typeof c&&(b=p,k=c.value,c.format&&(k=c.format(k)),k=t.translate(""+k),d.selectEdit&&e==a.selected&&(b-=25,g.setColor(g.theme.bgH).fillRect(b-(g.stringWidth(k)+4),h,p,h+a.fontHeight-1),g.setColor(g.theme.fgH).drawImage("\f\u0005\u0081\x00 \u0007\x00\u00f9\u00f0\u000e\x00@",b,h+(a.fontHeight-10)/2,{scale:2})),g.setFontAlign(1,-1),g.drawString(k,b-2,h));g.setColor(g.theme.fg);h+=a.fontHeight;e++}g.setFontAlign(-1,-1);l=e<f.length;g.drawImage("\b\b\u0001\u00108|\u00fe\u0010\u0010\u0010\u0010",
q,40);g.drawImage("\b\b\u0001\u0010\u0010\u0010\u0010\u00fe|8\u0010",q,194);g.drawImage("\b\b\u0001\x00\b\f\u000e\u00ff\u000e\f\b",q,116);g.setColor(l?g.theme.fg:g.theme.bg).fillPoly([104,220,136,220,120,228]);g.flip()},select:function(c){c=n[f[a.selected]];if("function"==typeof c)c(d);else if("object"==typeof c){if("number"==typeof c.value)d.selectEdit=d.selectEdit?void 0:c;else if("boolean"==typeof c.value&&(c.value=!c.value),c.onchange)c.onchange(c.value);d.draw()}},move:function(c){var b=d.selectEdit;
if(b){b=d.selectEdit;b.value-=(c||1)*(b.step||1);void 0!==b.min&&b.value<b.min&&(b.value=b.min);void 0!==b.max&&b.value>b.max&&(b.value=b.max);if(b.onchange)b.onchange(b.value);d.draw(a.selected,a.selected)}else b=a.selected,a.selected=(c+a.selected)%f.length,0>a.selected&&(a.selected+=f.length),d.draw(Math.min(b,a.selected),Math.max(b,a.selected))}};d.draw();Bangle.setUI("updown",c=>{c?d.move(c):d.select()});return d}Bangle.setUI()})