Espruino/libs/js/banglejs/E_showPrompt.min.js
Gordon Williams bca64ccb1e Graphics: add wrapString to wrap messages to the correct length
Bangle.js: update showMessage and showPrompt with correct wrapping
2021-10-07 10:43:29 +01:00

3 lines
1.3 KiB
JavaScript

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