mirror of
https://github.com/espruino/Espruino.git
synced 2025-12-08 19:06:15 +00:00
Bangle.js2: Fix text size on buttons when they are tapped in E.showPrompt
This commit is contained in:
parent
b84fd88ab3
commit
8458dfde3c
@ -10,6 +10,7 @@
|
||||
Puck.js: Immediately after flashing new firmware, Puck.js now does a self-test and sets its BLE to PASS or FAIL
|
||||
nRF52: Fix recent regression which stopped reconnection after a bluetooth disconnect (fix #2226)
|
||||
Bangle.js: Include the 'sched' library in installed apps (needed for alarm) (fix #2229)
|
||||
Bangle.js2: Fix text size on buttons when they are tapped in E.showPrompt
|
||||
|
||||
2v14 : Bangle.js2: Fix issue with E.showMenu creating a global `s` variable
|
||||
Bangle.js2: Recheck string wrapping after font change inside E.showMenu
|
||||
|
||||
@ -4,9 +4,9 @@
|
||||
options.buttons = {"Yes":true,"No":false};
|
||||
var loc = require("locale");
|
||||
var btns = Object.keys(options.buttons);
|
||||
var btnPos = [];
|
||||
function draw() {
|
||||
g.reset().setFont("6x8",2).setFontAlign(0,-1);
|
||||
var btnPos;
|
||||
function draw(highlightedButton) {
|
||||
g.reset().setFont("6x8:2").setFontAlign(0,-1);
|
||||
var Y = Bangle.appRect.y;
|
||||
var W = g.getWidth(), H = g.getHeight()-Y, FH=g.getFontHeight();
|
||||
var titleLines = g.wrapString(options.title, W-2);
|
||||
@ -35,6 +35,7 @@
|
||||
btns.forEach(btn=>buttonWidths += buttonPadding+g.stringWidth(loc.translate(btn)));
|
||||
}
|
||||
var x = (W-buttonWidths)/2;
|
||||
btnPos = [];
|
||||
btns.forEach((btn,idx)=>{
|
||||
btn = loc.translate(btn);
|
||||
var w = g.stringWidth(btn);
|
||||
@ -52,7 +53,8 @@
|
||||
btnPos.push({x1:x-bw-buttonPadding/2, x2:x+bw+buttonPadding/2,
|
||||
y1:y-30, y2:y+30,
|
||||
poly: poly});
|
||||
g.setColor(g.theme.bg2).fillPoly(poly).setColor(g.theme.fg2).drawPoly(poly).drawString(btn,x,y+1);
|
||||
g.setColor(idx===highlightedButton ? g.theme.bgH : g.theme.bg2).fillPoly(poly).
|
||||
setColor(idx===highlightedButton ? g.theme.fgH : g.theme.fg2).drawPoly(poly).drawString(btn,x,y+1);
|
||||
x += (buttonPadding+w)/2;
|
||||
});
|
||||
Bangle.setLCDPower(1); // ensure screen is on
|
||||
@ -68,7 +70,8 @@
|
||||
btnPos.forEach((b,i)=>{
|
||||
if (e.x > b.x1 && e.x < b.x2 &&
|
||||
e.y > b.y1 && e.y < b.y2) {
|
||||
g.setColor(g.theme.bgH).fillPoly(b.poly).setColor(g.theme.fgH).drawPoly(b.poly).drawString(btns[i],(b.x1+b.x2)/2,((b.y1+b.y2)/2)+1).flip();
|
||||
draw(i); // highlighted button
|
||||
g.flip(); // write to screen
|
||||
E.showPrompt(); // remove
|
||||
resolve(options.buttons[btns[i]]);
|
||||
}
|
||||
|
||||
7
libs/js/banglejs/E_showPrompt_Q3.min.js
vendored
7
libs/js/banglejs/E_showPrompt_Q3.min.js
vendored
@ -1,4 +1,3 @@
|
||||
(function(v,f){f||(f={});f.buttons||(f.buttons={Yes:!0,No:!1});var r=require("locale"),m=Object.keys(f.buttons),w=[];g.clearRect(Bangle.appRect);if(!v)return Bangle.setUI(),Promise.resolve();(function(){g.reset().setFont("6x8",2).setFontAlign(0,-1);var k=Bangle.appRect.y,d=g.getWidth(),a=g.getHeight()-k,l=g.getFontHeight(),p=g.wrapString(f.title,d-2),t=g.wrapString(v||"",d-2),b=k+(a+(p.length-t.length)*l)/2-24;f.img&&(a=g.imageMetrics(f.img),g.drawImage(f.img,(d-a.width)/
|
||||
2,b-a.height/2),b+=4+a.height/2);p&&g.setColor(g.theme.fgH).setBgColor(g.theme.bgH).clearRect(0,k,d-1,k+4+p.length*l).drawString(p.join("\n"),d/2,k+2);g.setColor(g.theme.fg).setBgColor(g.theme.bg).drawString(t.join("\n"),d/2,b);b+=t.length*l+32;var n=0;g.setFontAlign(0,0);m.forEach(h=>n+=24+g.stringWidth(r.translate(h)));n>d&&(g.setFont("6x8"),n=0,m.forEach(h=>n+=24+g.stringWidth(r.translate(h))));var c=(d-n)/2;m.forEach((h,q)=>{h=r.translate(h);q=g.stringWidth(h);c+=(24+q)/2;var e=6+q/2,u=[c-e,b-
|
||||
16,c+e,b-16,c+e+4,b-12,c+e+4,b+12,c+e,b+16,c-e,b+16,c-e-4,b+12,c-e-4,b-12,c-e,b-16];w.push({x1:c-e-12,x2:c+e+12,y1:b-30,y2:b+30,poly:u});g.setColor(g.theme.bg2).fillPoly(u).setColor(g.theme.fg2).drawPoly(u).drawString(h,c,b+1);c+=(24+q)/2});Bangle.setLCDPower(1)})();return new Promise(k=>{Bangle.setUI("touch",d=>{w.forEach((a,l)=>{d.x>a.x1&&d.x<a.x2&&d.y>a.y1&&d.y<a.y2&&(g.setColor(g.theme.bgH).fillPoly(a.poly).setColor(g.theme.fgH).drawPoly(a.poly).drawString(m[l],(a.x1+a.x2)/2,(a.y1+a.y2)/2+1).flip(),
|
||||
E.showPrompt(),k(f.buttons[m[l]]))})})})})
|
||||
(function(x,e){function y(m){g.reset().setFont("6x8:2").setFontAlign(0,-1);var f=Bangle.appRect.y,c=g.getWidth(),h=g.getHeight()-f,q=g.getFontHeight(),n=g.wrapString(e.title,c-2),r=g.wrapString(x||"",c-2),a=f+(h+(n.length-r.length)*q)/2-24;e.img&&(h=g.imageMetrics(e.img),g.drawImage(e.img,(c-h.width)/2,a-h.height/2),a+=4+h.height/2);n&&g.setColor(g.theme.fgH).setBgColor(g.theme.bgH).clearRect(0,f,c-1,f+4+n.length*q).drawString(n.join("\n"),c/2,f+2);g.setColor(g.theme.fg).setBgColor(g.theme.bg).drawString(r.join("\n"),
|
||||
c/2,a);a+=r.length*q+32;var l=0;g.setFontAlign(0,0);p.forEach(k=>l+=24+g.stringWidth(t.translate(k)));l>c&&(g.setFont("6x8"),l=0,p.forEach(k=>l+=24+g.stringWidth(t.translate(k))));var b=(c-l)/2;u=[];p.forEach((k,z)=>{k=t.translate(k);var v=g.stringWidth(k);b+=(24+v)/2;var d=6+v/2,w=[b-d,a-16,b+d,a-16,b+d+4,a-12,b+d+4,a+12,b+d,a+16,b-d,a+16,b-d-4,a+12,b-d-4,a-12,b-d,a-16];u.push({x1:b-d-12,x2:b+d+12,y1:a-30,y2:a+30,poly:w});g.setColor(z===m?g.theme.bgH:g.theme.bg2).fillPoly(w).setColor(z===m?g.theme.fgH:
|
||||
g.theme.fg2).drawPoly(w).drawString(k,b,a+1);b+=(24+v)/2});Bangle.setLCDPower(1)}e||(e={});e.buttons||(e.buttons={Yes:!0,No:!1});var t=require("locale"),p=Object.keys(e.buttons),u;g.clearRect(Bangle.appRect);if(!x)return Bangle.setUI(),Promise.resolve();y();return new Promise(m=>{Bangle.setUI("touch",f=>{u.forEach((c,h)=>{f.x>c.x1&&f.x<c.x2&&f.y>c.y1&&f.y<c.y2&&(y(h),g.flip(),E.showPrompt(),m(e.buttons[p[h]]))})})})})
|
||||
Loading…
x
Reference in New Issue
Block a user