Espruino/libs/js/banglejs/E_showPrompt.min.js
Gordon Williams 529fb0779e Bangle.js: setUI now has a 'redraw' argument to allow apps to provide a way to redraw themselves
Also fixes for scroller.isActive (and redraw checks) that break if there is a back icon
2023-06-20 11:00:23 +01:00

3 lines
1.5 KiB
JavaScript

(function(v,a){function n(){g.reset().setFont("6x8",2).setFontAlign(0,-1);var h=Bangle.appRect.y,e=g.getWidth(),k=g.getHeight()-h,q=g.getFontHeight(),p=g.wrapString(a.title,e-2),r=g.wrapString(v||"",e-2),b=h+(k+(p.length-r.length)*q)/2-24;a.img&&(k=g.imageMetrics(a.img),g.drawImage(a.img,(e-k.width)/2,b-k.height/2),b+=4+k.height/2);p&&g.setColor(g.theme.fgH).setBgColor(g.theme.bgH).clearRect(0,h,e-1,h+4+p.length*q).drawString(p.join("\n"),e/2,h+2);g.setColor(g.theme.fg).setBgColor(g.theme.bg).drawString(r.join("\n"),
e/2,b);b+=r.length*q+32;var l=0;g.setFontAlign(0,0);m.forEach(f=>l+=16+g.stringWidth(t.translate(f)));l>e&&(g.setFont("6x8"),l=0,m.forEach(f=>l+=16+g.stringWidth(t.translate(f))));var c=(e-l)/2;m.forEach((f,w)=>{f=t.translate(f);var u=g.stringWidth(f);c+=(16+u)/2;var d=2+u/2;d=[c-d,b-12,c+d,b-12,c+d+4,b-8,c+d+4,b+8,c+d,b+12,c-d,b+12,c-d-4,b+8,c-d-4,b-8,c-d,b-12];g.setColor(w==a.selected?g.theme.bgH:g.theme.bg).fillPoly(d).setColor(w==a.selected?g.theme.fgH:g.theme.fg).drawPoly(d).drawString(f,c,b+
1);c+=(16+u)/2});Bangle.setLCDPower(1)}a||(a={});a.buttons||(a.buttons={Yes:!0,No:!1});var t=require("locale"),m=Object.keys(a.buttons);a.selected||(a.selected=0);g.reset().clearRect(Bangle.appRect);if(!v)return Bangle.setUI(),Promise.resolve();n();return new Promise(h=>{Bangle.setUI({mode:"leftright",remove:a.remove,redraw:n,back:a.back},e=>{0>e?0<a.selected&&(a.selected--,n()):0<e?a.selected<m.length-1&&(a.selected++,n()):(E.showPrompt(),h(a.buttons[m[a.selected]]))})})})