diff --git a/ChangeLog b/ChangeLog index 4f7c6bae4..97f6c6e20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -38,6 +38,7 @@ removeListener while executing events no longer stops subsequent listeners from executing (#2151) jsvObjectIterator is now safe even if not called on something iterable X.on now always allocates an array - tidies up code (fix #2559) + Bangle.js: E.showMenu no longer sends the internal `l` menu object as argument when running the callback function. 2v24 : Bangle.js2: Add 'Bangle.touchRd()', 'Bangle.touchWr()' Bangle.js2: After Bangle.showTestScreen, put Bangle.js into a hard off state (not soft off) diff --git a/libs/js/banglejs/E_showMenu_F18.js b/libs/js/banglejs/E_showMenu_F18.js index 3f0a80824..3775dba7b 100644 --- a/libs/js/banglejs/E_showMenu_F18.js +++ b/libs/js/banglejs/E_showMenu_F18.js @@ -142,7 +142,7 @@ item.onchange(item.value); l.draw(options.selected, options.selected); } - } else if ("function" == typeof item) item(l); + } else if ("function" == typeof item) item(); else if ("object" == typeof item) { // if a number, go into 'edit mode' if ("number" == typeof item.value) { @@ -198,4 +198,4 @@ }; l.draw(); return l; -}) \ No newline at end of file +}) diff --git a/libs/js/banglejs/E_showMenu_F18.min.js b/libs/js/banglejs/E_showMenu_F18.min.js index 81b64037d..95cf887c7 100644 --- a/libs/js/banglejs/E_showMenu_F18.min.js +++ b/libs/js/banglejs/E_showMenu_F18.min.js @@ -3,6 +3,6 @@ a.format||(a.format=b=>atob(b?"AAwMggC///7//////////8///w///D/y8P/4A//8D//////// 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+pb&&(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= +a.value=b;d.back();a.onchange&&(a.onchange(a.value),d.draw(c.selected,c.selected))}else if("function"==typeof a)a();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.valueb.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()}) \ No newline at end of file diff --git a/libs/js/banglejs/E_showMenu_Q3.js b/libs/js/banglejs/E_showMenu_Q3.js index 96f493656..6bda1fb29 100644 --- a/libs/js/banglejs/E_showMenu_Q3.js +++ b/libs/js/banglejs/E_showMenu_Q3.js @@ -137,7 +137,7 @@ if (idx<0) return back&&back(); // title var item = menu[keys[idx]]; Bangle.buzz(20); - if ("function" == typeof item) item(l); + if ("function" == typeof item) item(); else if ("object" == typeof item) { // if a bool, just toggle it if ("number" == typeof item.value) { diff --git a/libs/js/banglejs/E_showMenu_Q3.min.js b/libs/js/banglejs/E_showMenu_Q3.min.js index d2ddd5094..aade8f6e0 100644 --- a/libs/js/banglejs/E_showMenu_Q3.min.js +++ b/libs/js/banglejs/E_showMenu_Q3.min.js @@ -1,8 +1,8 @@ -(function(q){function y(a,b){var l=a.step||1;if(!a.noList&&void 0!==a.min&&void 0!==a.max&&20>(a.max-a.min)/l)E.showScroller({h:40,c:(a.max+l-a.min)/l,back:t,remove:n.remove,scrollMin:-24,scroll:-24,draw:(h,d)=>{if(0>h)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\x81\x00\xff\xff\xff\x00\x00\x00\x00\x0f\xff\xff\xf0\x00\x00\x00\x00\xff\xff\xff "+b,d.x+12,d.y+40-12);g.setColor(g.theme.bg2).fillRect({x:d.x+4,y:d.y+2,w:d.w-8,h:d.h-4,r:5}); -h=h*l+a.min;g.setColor(g.theme.fg2).setFont("12x20").setFontAlign(-1,0).drawString(a.format?a.format(h,1):h,d.x+12,d.y+20);g.drawImage(atob(h==a.value?"FBSBAAH4AH/gHgeDgBww8MY/xmf+bH/jz/88//PP/zz/88f+Nn/mY/xjDww4AcHgeAf+AB+A":"FBSBAAH4AH/gHgeDgBwwAMYABmAAbAADwAA8AAPAADwAA8AANgAGYABjAAw4AcHgeAf+AB+A"),d.x+d.w-32,d.y+20-10)},select:function(h){if(!(0>h)){Bangle.buzz(20);a.value=a.min+h*l;if(a.onchange)a.onchange(a.value);u.scroll=p.scroller.scroll;t()}}});else{var c=Bangle.appRect,e=a.value;g.reset().clearRect(c); +(function(p){function y(a,b){var l=a.step||1;if(!a.noList&&void 0!==a.min&&void 0!==a.max&&20>(a.max-a.min)/l)E.showScroller({h:40,c:(a.max+l-a.min)/l,back:t,remove:n.remove,scrollMin:-24,scroll:-24,draw:(h,d)=>{if(0>h)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\x81\x00\xff\xff\xff\x00\x00\x00\x00\x0f\xff\xff\xf0\x00\x00\x00\x00\xff\xff\xff "+b,d.x+12,d.y+40-12);g.setColor(g.theme.bg2).fillRect({x:d.x+4,y:d.y+2,w:d.w-8,h:d.h-4,r:5}); +h=h*l+a.min;g.setColor(g.theme.fg2).setFont("12x20").setFontAlign(-1,0).drawString(a.format?a.format(h,1):h,d.x+12,d.y+20);g.drawImage(atob(h==a.value?"FBSBAAH4AH/gHgeDgBww8MY/xmf+bH/jz/88//PP/zz/88f+Nn/mY/xjDww4AcHgeAf+AB+A":"FBSBAAH4AH/gHgeDgBwwAMYABmAAbAADwAA8AAPAADwAA8AANgAGYABjAAw4AcHgeAf+AB+A"),d.x+d.w-32,d.y+20-10)},select:function(h){if(!(0>h)){Bangle.buzz(20);a.value=a.min+h*l;if(a.onchange)a.onchange(a.value);u.scroll=q.scroller.scroll;t()}}});else{var c=Bangle.appRect,e=a.value;g.reset().clearRect(c); g.setFont("12x20").setFontAlign(0,0).drawString("\x00\f\f\x81\x00\xff\xff\xff\x00\x00\x00\x00\x0f\xff\xff\xf0\x00\x00\x00\x00\xff\xff\xff "+b,c.x+c.w/2,c.y+12);function h(){var f=c.x+c.w/2,m=12+c.y+c.h/2,w=a.format?a.format(e,2):e;g.reset().setColor(g.theme.bg2).fillRect({x:c.x+24,y:c.y+36,w:c.w-48,h:c.h-48,r:5});g.setColor(g.theme.fg2).setFontVector(Math.min(30,100*(c.w-52)/g.setFontVector(100).stringWidth(w))).setFontAlign(0,0).drawString(w,f,m);g.fillPoly([f,m-45,f+15,m-30, -f-15,m-30]).fillPoly([f,m+45,f+15,m+30,f-15,m+30])}function d(f){if(f)e-=(f||1)*(a.step||1),void 0!==a.min&&ea.max&&(e=a.wrap?a.min:a.max),h();else{a.value=e;if(a.onchange)a.onchange(a.value);u.scroll=p.scroller.scroll;t()}}h();var k=0;Bangle.setUI({mode:"custom",back:t,remove:n.remove,redraw:h,drag:f=>{k+=f.dy;for(f.b||(k=0);32{Bangle.buzz(20);82>m.y?d(-1):142""!==a&&"< Back"!=a);r.forEach(a=>{a=q[a];"object"!=typeof a||"boolean"!=typeof a.value||a.format||(a.format=b=>"\x00"+atob(b?"EhKBAH//v/////////////5//x//j//H+eP+Mf/A//h//z//////////3//g":"EhKBAH//v//8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA///3//g"))});var p={draw:()=>p.scroller.draw(),scroller:void 0}; -let x;var u={h:40,c:r.length,scrollMin:-24,scroll:null!=(x=n.scroll)?x:-24,back:v,remove:n.remove,draw:(a,b)=>{if(0>a)return g.setColor(g.theme.fg).setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\x81\x00\xff\xff\xff\x00\x00\x00\x00\x0f\xff\xff\xf0\x00\x00\x00\x00\xff\xff\xff "+n.title,b.x+12,b.y+40-12);g.setColor(g.theme.bg2).fillRect({x:b.x+4,y:b.y+2,w:b.w-8,h:b.h-4,r:5});g.setColor(g.theme.fg2).setFont("12x20");var l=24,c=q[r[a]];if("object"==typeof c){var e=c.value; -c.format&&(e=c.format(e));g.stringMetrics(e).width>b.w/2&&(e=g.wrapString(e,b.w/2).join("\n"));g.setFontAlign(1,0).drawString(e,b.x+b.w-8,b.y+20);l+=g.stringWidth(e)}else"function"==typeof c&&(g.drawImage(atob("CRKBAGA4Hg8DwPB4HgcDg8PB4eHg8HAwAA=="),b.x+b.w-21,b.y+20-9),l+=16);var k;a=null!=(k=c&&c.title)?k:r[a];k=g.wrapString(a,b.w-l);1a)return v&&v();var b=q[r[a]]; -Bangle.buzz(20);if("function"==typeof b)b(p);else if("object"==typeof b)if("number"==typeof b.value)y(b,r[a]);else{"boolean"==typeof b.value&&(b.value=!b.value);if(b.onchange)b.onchange(b.value);p.scroller.isActive()&&p.scroller.drawItem(a)}}};t();return p}) \ No newline at end of file +f-15,m-30]).fillPoly([f,m+45,f+15,m+30,f-15,m+30])}function d(f){if(f)e-=(f||1)*(a.step||1),void 0!==a.min&&ea.max&&(e=a.wrap?a.min:a.max),h();else{a.value=e;if(a.onchange)a.onchange(a.value);u.scroll=q.scroller.scroll;t()}}h();var k=0;Bangle.setUI({mode:"custom",back:t,remove:n.remove,redraw:h,drag:f=>{k+=f.dy;for(f.b||(k=0);32{Bangle.buzz(20);82>m.y?d(-1):142""!==a&&"< Back"!=a);r.forEach(a=>{a=p[a];"object"!=typeof a||"boolean"!=typeof a.value||a.format||(a.format=b=>"\x00"+atob(b?"EhKBAH//v/////////////5//x//j//H+eP+Mf/A//h//z//////////3//g":"EhKBAH//v//8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA///3//g"))});var q={draw:()=>q.scroller.draw(),scroller:void 0}; +let x;var u={h:40,c:r.length,scrollMin:-24,scroll:null!=(x=n.scroll)?x:-24,back:v,remove:n.remove,draw:(a,b)=>{if(0>a)return g.setColor(g.theme.fg).setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\x81\x00\xff\xff\xff\x00\x00\x00\x00\x0f\xff\xff\xf0\x00\x00\x00\x00\xff\xff\xff "+n.title,b.x+12,b.y+40-12);g.setColor(g.theme.bg2).fillRect({x:b.x+4,y:b.y+2,w:b.w-8,h:b.h-4,r:5});g.setColor(g.theme.fg2).setFont("12x20");var l=24,c=p[r[a]];if("object"==typeof c){var e=c.value; +c.format&&(e=c.format(e));g.stringMetrics(e).width>b.w/2&&(e=g.wrapString(e,b.w/2).join("\n"));g.setFontAlign(1,0).drawString(e,b.x+b.w-8,b.y+20);l+=g.stringWidth(e)}else"function"==typeof c&&(g.drawImage(atob("CRKBAGA4Hg8DwPB4HgcDg8PB4eHg8HAwAA=="),b.x+b.w-21,b.y+20-9),l+=16);var k;a=null!=(k=c&&c.title)?k:r[a];k=g.wrapString(a,b.w-l);1a)return v&&v();var b=p[r[a]]; +Bangle.buzz(20);if("function"==typeof b)b();else if("object"==typeof b)if("number"==typeof b.value)y(b,r[a]);else{"boolean"==typeof b.value&&(b.value=!b.value);if(b.onchange)b.onchange(b.value);q.scroller.isActive()&&q.scroller.drawItem(a)}}};t();return q}) \ No newline at end of file