misc tweaks to menu

This commit is contained in:
Gordon Williams 2022-02-11 11:16:26 +00:00
parent 712cf34ac6
commit 5b97d931e4
2 changed files with 11 additions and 11 deletions

View File

@ -80,7 +80,7 @@
};
var scr = {
h : H, c : keys.length+1/*title*/,
h : H, c : keys.length/*title*/,
scrollMin : -24, scroll : -24, // title is 24px, rendered at -1
draw : (idx, r) => {
if (idx<0) // TITLE
@ -95,15 +95,15 @@
if (item.format) v=item.format(v);
if (g.stringMetrics(v).width > r.w/2) // bodge for broken wrapString with image
v = g.wrapString(v,r.w/2).join("\n");
print(keys[idx],E.toJS(v));
g.setFontAlign(1,0).drawString(v,r.x+r.w-8,r.y+H/2);
pad += g.stringWidth(v);
} else if ("function" == typeof item) {
g.drawImage(/* 9x18 */atob("CRKBAGA4Hg8DwPB4HgcDg8PB4eHg8HAwAA=="), r.x+r.w-21, r.y+H/2-9);
pad += 16;
}
g.setFontAlign(-1,0).drawString(g.wrapString(keys[idx],r.w-pad).join("\n"), r.x+12, r.y+H/2);
var l = g.wrapString(keys[idx],r.w-pad);
if (l.length>1) g.setFont("6x15");
g.setFontAlign(-1,0).drawString(l.join("\n"), r.x+12, r.y+H/2);
},
select : function(idx) {
if (idx<0) return back&&back(); // title

View File

@ -1,8 +1,8 @@
(function(k){function t(a,b){if("number"!=typeof a.value)return console.log("Unhandled item type");if(void 0!==a.min&&void 0!==a.max&&20>a.max-a.min)E.showScroller({h:40,c:a.max+1-a.min,scrollMin:-24,scroll:-24,draw:(d,c)=>{if(0>d)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+b,c.x+12,c.y+40-12);g.setColor(g.theme.bg2).fillRect({x:c.x+4,y:c.y+2,w:c.w-
8,h:c.h-4,r:5});var f=d+a.min;a.format&&(f=a.format(f));g.setColor(g.theme.fg).setFont("12x20").setFontAlign(-1,0).drawString(f,c.x+12,c.y+20);g.drawImage(atob(d==a.value?"FBSBAAH4AH/gHgeDgBww8MY/xmf+bH/jz/88//PP/zz/88f+Nn/mY/xjDww4AcHgeAf+AB+A":"FBSBAAH4AH/gHgeDgBwwAMYABmAAbAADwAA8AAPAADwAA8AANgAGYABjAAw4AcHgeAf+AB+A"),c.x+c.w-32,c.y+20-10)},select:function(d){if(!(0>d)){Bangle.buzz(20);a.value=a.min+d;if(a.onchange)a.onchange(a.value);n.scroll=s.scroll;p()}}});else{var e=Bangle.appRect,h=a.value;
g.reset().clearRect(Bangle.appRect);g.setFont("12x20").setFontAlign(0,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+b,e.x+e.w/2,e.y+12);function d(){var c=e.x+e.w/2,f=12+e.y+e.h/2;g.reset().setColor(g.theme.bg2).fillRect({x:e.x+24,y:e.y+36,w:e.w-48,h:e.h-48,r:5});g.setColor(g.theme.fg).setFontVector(30).setFontAlign(0,0).drawString(a.format?a.format(h):h,c,f);g.fillPoly([c,f-45,c+15,f-30,c-15,f-30]).fillPoly([c,f+45,
c+15,f+30,c-15,f+30])}d();Bangle.setUI("updown",c=>{if(c)h-=(c||1)*(a.step||1),void 0!==a.min&&a.value<a.min&&(a.value=a.wrap?a.max:a.min),void 0!==a.max&&a.value>a.max&&(a.value=a.wrap?a.min:a.max),d();else{a.value=h;if(a.onchange)a.onchange(a.value);n.scroll=s.scroll;p()}})}}function p(){s=E.showScroller(n);if(m){var a=(b,e)=>{24>e.y&&48>e.x&&m()};Bangle.on("touch",a);WIDGETS=Object.assign({back:{area:"tl",width:24,draw:b=>g.reset().setColor("#f00").drawImage(atob("GBiBAAAYAAH/gAf/4A//8B//+D///D///H/P/n+H/n8P/n4f/vwAP/wAP34f/n8P/n+H/n/P/j///D///B//+A//8Af/4AH/gAAYAA=="),
(function(k){function t(a,b){if("number"!=typeof a.value)return console.log("Unhandled item type");if(void 0!==a.min&&void 0!==a.max&&20>a.max-a.min)E.showScroller({h:40,c:a.max+1-a.min,scrollMin:-24,scroll:-24,draw:(e,c)=>{if(0>e)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+b,c.x+12,c.y+40-12);g.setColor(g.theme.bg2).fillRect({x:c.x+4,y:c.y+2,w:c.w-
8,h:c.h-4,r:5});var f=e+a.min;a.format&&(f=a.format(f));g.setColor(g.theme.fg).setFont("12x20").setFontAlign(-1,0).drawString(f,c.x+12,c.y+20);g.drawImage(atob(e==a.value?"FBSBAAH4AH/gHgeDgBww8MY/xmf+bH/jz/88//PP/zz/88f+Nn/mY/xjDww4AcHgeAf+AB+A":"FBSBAAH4AH/gHgeDgBwwAMYABmAAbAADwAA8AAPAADwAA8AANgAGYABjAAw4AcHgeAf+AB+A"),c.x+c.w-32,c.y+20-10)},select:function(e){if(!(0>e)){Bangle.buzz(20);a.value=a.min+e;if(a.onchange)a.onchange(a.value);n.scroll=s.scroll;p()}}});else{var d=Bangle.appRect,h=a.value;
g.reset().clearRect(Bangle.appRect);g.setFont("12x20").setFontAlign(0,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+b,d.x+d.w/2,d.y+12);function e(){var c=d.x+d.w/2,f=12+d.y+d.h/2;g.reset().setColor(g.theme.bg2).fillRect({x:d.x+24,y:d.y+36,w:d.w-48,h:d.h-48,r:5});g.setColor(g.theme.fg).setFontVector(30).setFontAlign(0,0).drawString(a.format?a.format(h):h,c,f);g.fillPoly([c,f-45,c+15,f-30,c-15,f-30]).fillPoly([c,f+45,
c+15,f+30,c-15,f+30])}e();Bangle.setUI("updown",c=>{if(c)h-=(c||1)*(a.step||1),void 0!==a.min&&a.value<a.min&&(a.value=a.wrap?a.max:a.min),void 0!==a.max&&a.value>a.max&&(a.value=a.wrap?a.min:a.max),e();else{a.value=h;if(a.onchange)a.onchange(a.value);n.scroll=s.scroll;p()}})}}function p(){s=E.showScroller(n);if(m){var a=(b,d)=>{24>d.y&&48>d.x&&m()};Bangle.on("touch",a);WIDGETS=Object.assign({back:{area:"tl",width:24,draw:b=>g.reset().setColor("#f00").drawImage(atob("GBiBAAAYAAH/gAf/4A//8B//+D///D///H/P/n+H/n8P/n4f/vwAP/wAP34f/n8P/n+H/n/P/j///D///B//+A//8Af/4AH/gAAYAA=="),
b.x,b.y)}},WIDGETS);Bangle.drawWidgets();Bangle.btnWatches=[setWatch(function(){m()},BTN1,{edge:"falling"})];Bangle.uiRemove=function(){Bangle.removeListener("touch",a);delete WIDGETS.back;Bangle.drawWidgets()}}}if(void 0===k)return g.clearRect(Bangle.appRect),Bangle.setUI();var q=k[""]||{};q.title||(q.title="Menu");var m=k["< Back"],l=Object.keys(k).filter(a=>""!=a&&"< Back"!=a);l.forEach(a=>{a=k[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 r={draw:()=>s.draw()},n={h:40,c:l.length+1,scrollMin:-24,scroll:-24,draw:(a,b)=>{if(0>a)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+q.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.fg).setFont("12x20");var e=24,h=k[l[a]];if("object"==typeof h){var d=
h.value;h.format&&(d=h.format(d));g.stringMetrics(d).width>b.w/2&&(d=g.wrapString(d,b.w/2).join("\n"));print(l[a],E.toJS(d));g.setFontAlign(1,0).drawString(d,b.x+b.w-8,b.y+20);e+=g.stringWidth(d)}else"function"==typeof h&&(g.drawImage(atob("CRKBAGA4Hg8DwPB4HgcDg8PB4eHg8HAwAA=="),b.x+b.w-21,b.y+20-9),e+=16);g.setFontAlign(-1,0).drawString(g.wrapString(l[a],b.w-e).join("\n"),b.x+12,b.y+20)},select:function(a){if(0>a)return m&&m();var b=k[l[a]];Bangle.buzz(20);if("function"==typeof b)b(r);else if("object"==
typeof b)if("boolean"==typeof b.value){b.value=!b.value;if(b.onchange)b.onchange(b.value);s.drawItem(a)}else t(b,l[a])}};p();return r})
"EhKBAH//v//8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA8AA///3//g"))});var r={draw:()=>s.draw()},n={h:40,c:l.length,scrollMin:-24,scroll:-24,draw:(a,b)=>{if(0>a)return g.setFont("12x20").setFontAlign(-1,0).drawString("\x00\f\f\u0081\x00\u00ff\u00ff\u00ff\x00\x00\x00\x00\u000f\u00ff\u00ff\u00f0\x00\x00\x00\x00\u00ff\u00ff\u00ff "+q.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.fg).setFont("12x20");var d=24,h=k[l[a]];if("object"==typeof h){var e=
h.value;h.format&&(e=h.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);d+=g.stringWidth(e)}else"function"==typeof h&&(g.drawImage(atob("CRKBAGA4Hg8DwPB4HgcDg8PB4eHg8HAwAA=="),b.x+b.w-21,b.y+20-9),d+=16);a=g.wrapString(l[a],b.w-d);1<a.length&&g.setFont("6x15");g.setFontAlign(-1,0).drawString(a.join("\n"),b.x+12,b.y+20)},select:function(a){if(0>a)return m&&m();var b=k[l[a]];Bangle.buzz(20);if("function"==typeof b)b(r);
else if("object"==typeof b)if("boolean"==typeof b.value){b.value=!b.value;if(b.onchange)b.onchange(b.value);s.drawItem(a)}else t(b,l[a])}};p();return r})