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