Espruino/libs/js/banglejs/E_showMenu_F18.min.js

8 lines
3.5 KiB
JavaScript

(function(e){function t(){if(d.main)c.selected=d.main.selected,c.title=d.main.title,e=d.main.items,f=d.main.menuItems,delete d.main,g.reset().clearRect(Bangle.appRect),d.draw();else if(e["< Back"])e["< Back"]()}g.reset().clearRect(Bangle.appRect);Bangle.setLCDPower(1);if(e){var c=e[""],f=Object.keys(e);c&&(f.splice(f.indexOf(""),1),c.back&&!e["< Back"]&&(e=Object.assign({"< Back":c.back},e),f.unshift("< Back")));f.forEach(a=>{a=e[a];"object"!=typeof a||"boolean"!=typeof a.value||
a.format||(a.format=b=>atob(b?"AAwMggC///7//////////8///w///D/y8P/4A//8D/////////+///4=":"AAwMgQD/+AGAGAGAGAGAGAGAGAGAH/8="))});c instanceof Object||(c={});c.fontHeight=c.fontHeight||16;void 0===c.selected&&(c.selected=0);c.fontHeight||(c.fontHeight=6);Bangle.setUI({mode:"updown",back:e["< Back"]?t:void 0,remove:c.remove,redraw:()=>d.draw()},a=>{a?d.move(a):d.select()});var u=()=>{};Bangle.touchHandler=u;var q=Bangle.appRect,r=q.x,l=q.x2-11,n=q.y,v=q.y2-20;c.title&&(n+=c.fontHeight+2);var d={lastIdx:0,
draw:function(a,b){var p=0|Math.min((v-n)/c.fontHeight,f.length),h=E.clip(c.selected-(p>>1),0,f.length-p);h!=d.lastIdx&&(a=void 0);d.lastIdx=h;var w=h+p<f.length,k=n;g.reset().setFont("6x8",2).setFontAlign(0,-1,0);c.predraw&&c.predraw(g);void 0===a&&c.title&&g.drawString(c.title,(r+l)/2,n-c.fontHeight-2).drawLine(r,n-2,l,n-2);void 0!==a&&(h<a&&(k+=c.fontHeight*(a-h),h=a),h+p>b&&(p=1+b-a));for(;p--;){b=f[h];a=e[b];a.title&&(b=a.title);var m=h==c.selected&&!d.selectEdit;g.setColor(m?g.theme.bgH:g.theme.bg).fillRect(r,
k,l,k+c.fontHeight-1).setColor(m?g.theme.fgH:g.theme.fg).setFontAlign(-1,-1).drawString(b,r,k);"object"==typeof a?(b=l,m=a.value,a.format&&(m=a.format(m)),d.selectEdit&&h==c.selected&&(b-=25,g.setColor(g.theme.bgH).fillRect(b-(g.stringWidth(m)+4),k,l,k+c.fontHeight-1).setColor(g.theme.fgH).drawImage("\f\x05\x81\x00 \x07\x00\xf9\xf0\x0e\x00@",b,k+(c.fontHeight-10)/2,{scale:2})),g.setFontAlign(1,-1),void 0!==m&&g.drawString(m,b-2,k)):d.main&&g.setFontAlign(1,-1).drawString(atob(d.main.value==
a?"AAoKgQAeH+f7//////3+f4eA":"AAoKgQAeH+YbA8DwPA2Gf4eA"),l,k);g.setColor(g.theme.fg);k+=c.fontHeight;h++}g.setFontAlign(-1,-1);g.drawImage("\b\b\x01\x108|\xfe\x10\x10\x10\x10",l+2,40).drawImage("\b\b\x01\x10\x10\x10\x10\xfe|8\x10",l+2,194).drawImage("\b\b\x01\x00\b\f\x0e\xff\x0e\f\b",l+2,116);g.setColor(w?g.theme.fg:g.theme.bg).fillPoly([104,220,136,220,120,228]);g.flip()},select:function(){var a=e[f[c.selected]];if(d.main){var b=a;a=d.main.items[d.main.menuItems[d.main.selected]];
a.value=b;d.back();a.onchange&&(a.onchange(a.value),d.draw(c.selected,c.selected))}else if("function"==typeof a)a(d);else if("object"==typeof a){if("number"==typeof a.value)if(!a.noList&&a.format&&1===(a.step||1)&&0===a.min&&20>a.max){d.main={items:e,menuItems:f,selected:c.selected,title:c.title,value:a.value};c.title=f[c.selected];c.selected=0;e={};for(b=a.min;b<=a.max;b++)e[a.format(b)]=b,b==a.value&&(c.selected=Object.keys(e).length-1);f=Object.keys(e);g.reset().clearRect(Bangle.appRect);d.draw()}else d.selectEdit=
d.selectEdit?void 0:a;else if("boolean"==typeof a.value&&(a.value=!a.value),a.onchange)a.onchange(a.value);Bangle.touchHandler==u&&d.draw()}},move:function(a){var b=d.selectEdit;if(b){b=d.selectEdit;b.value-=(a||1)*(b.step||1);void 0!==b.min&&b.value<b.min&&(b.value=b.wrap?b.max:b.min);void 0!==b.max&&b.value>b.max&&(b.value=b.wrap?b.min:b.max);if(b.onchange)b.onchange(b.value);d.draw(c.selected,c.selected)}else b=c.selected,c.selected=(a+c.selected+f.length)%f.length,d.draw(Math.min(b,c.selected),
Math.max(b,c.selected))},back:t};d.draw();return d}Bangle.setUI()})