diff --git a/apps/powermanager/metadata.json b/apps/powermanager/metadata.json index 509dff040..de65aa4d6 100644 --- a/apps/powermanager/metadata.json +++ b/apps/powermanager/metadata.json @@ -13,6 +13,7 @@ "storage": [ {"name":"powermanager.boot.js","url":"boot.js"}, {"name":"powermanager.settings.js","url":"settings.js"}, + {"name":"powermanager.wid.js","url":"settings.js"}, {"name":"powermanager","url":"lib.js"}, {"name":"powermanager.default.json","url":"default.json"} ], diff --git a/apps/powermanager/widget.js b/apps/powermanager/widget.js new file mode 100644 index 000000000..2f60892b4 --- /dev/null +++ b/apps/powermanager/widget.js @@ -0,0 +1,48 @@ +/* run widgets in their own function scope so they don't interfere with +currently-running apps */ +(() => { + + const APPROX_IDLE = 0.3; + const APPROX_HIGH_BW_BLE = 0.5; + const APPROX_COMPASS = process.HWVERSION == 2 ? 5.5 : 2; + const APPROX_HRM = process.HWVERSION == 2 ? 1 : 2.5; + const APPROX_CPU = 3; + const APPROX_GPS = process.HWVERSION == 2 ? 25 : 30; + const APPROX_TOUCH = 2.5; + const APPROX_BACKLIGHT = process.HWVERSION == 2 ? 16 : 40; + const MAX = APPROX_IDLE + APPROX_HIGH_BW_BLE + APPROX_COMPASS + APPROX_HRM + APPROX_CPU + APPROX_GPS + APPROX_TOUCH + APPROX_BACKLIGHT; + + function draw() { + g.reset(); // reset the graphics context to defaults (color/font/etc) + // add your code + + let current = APPROX_IDLE; + if (Bangle.isGPSOn()) current += APPROX_GPS; + if (Bangle.isHRMOn()) current += APPROX_HRM; + if (Bangle.isLocked()) current += APPROX_TOUCH + APPROX_BACKLIGHT; + if (Bangle.isCompassOn()) current += APPROX_COMPASS; + g.setColor(g.theme.fg); + g.setFont6x15(); + g.setFontAlign(1,-1); + g.drawString("mA", this.x + 14, this.y+13); + g.setFont6x15(); + g.setFontAlign(1,-1); + g.drawString(current.toFixed(0), this.x + 14, this.y); + + timeout = 5000; + if (this.timeoutId !== undefined) { + clearTimeout(this.timeoutId); + } + this.timeoutId = setTimeout(()=>{ + this.timeoutId = undefined; + this.draw(); + }, timeout); + } + + // add your widget + WIDGETS.powermanager={ + area:"tl", + width: 14, + draw:draw + }; +})()