BangleApps/apps/hwid_a_battery_widget/widget.js

57 lines
1.4 KiB
JavaScript
Raw Normal View History

2022-06-11 13:23:47 +00:00
(function(){
2022-06-23 14:53:06 +00:00
const intervalLow = 60000; // update time when not charging
2022-06-11 15:46:36 +00:00
const intervalHigh = 2000; // update time when charging
2022-06-23 14:53:06 +00:00
var old_x = this.x;
var old_y = this.y;
2022-06-23 13:49:09 +00:00
2022-06-11 15:46:36 +00:00
let COLORS = {
'white': g.theme.dark ? "#000" : "#fff",
'black': g.theme.dark ? "#fff" : "#000",
'charging': "#08f",
'high': g.theme.dark ? "#fff" : "#000",
'low': "#f00",
};
const levelColor = (l) => {
if (Bangle.isCharging()) return COLORS.charging;
if (l >= 30) return COLORS.high;
return COLORS.low;
};
function draw() {
2023-06-11 11:40:36 +00:00
var s = width - 1;
2022-06-23 13:49:09 +00:00
var x = this.x;
var y = this.y;
2024-02-26 14:03:50 +00:00
if (x !== undefined && y !== undefined) {
g.setBgColor(COLORS.white);
g.clearRect(old_x, old_y, old_x + width, old_y + height);
2022-08-11 12:56:37 +00:00
const l = E.getBattery(); // debug: Math.floor(Math.random() * 101);
2022-06-23 15:05:08 +00:00
let xl = x+4+l*(s-12)/100;
2022-06-23 13:49:09 +00:00
2022-06-23 15:05:08 +00:00
g.setColor(levelColor(l));
g.fillRect(x+4,y+14+3,xl,y+16+3); // charging bar
// Show percentage
g.setColor(COLORS.black);
2022-06-11 15:46:36 +00:00
g.setFontAlign(0,0);
g.setFont('Vector',16);
2022-06-23 15:05:08 +00:00
g.drawString(l, x + 14, y + 10);
2023-06-11 11:40:11 +00:00
2022-06-11 15:46:36 +00:00
}
2022-06-23 15:05:08 +00:00
old_x = this.x;
2023-06-11 11:40:11 +00:00
old_y = this.y;
2022-06-11 15:46:36 +00:00
if (Bangle.isCharging()) changeInterval(id, intervalHigh);
else changeInterval(id, intervalLow);
}
Bangle.on('charging',function(charging) { draw(); });
2022-08-11 12:56:37 +00:00
var id = setInterval(()=>WIDGETS["hwid_a_battery_widget"].draw(), intervalLow);
2023-06-11 11:40:36 +00:00
var width = 30;
var height = 19;
2022-06-11 15:46:36 +00:00
2023-06-11 11:40:36 +00:00
WIDGETS["hwid_a_battery_widget"]={area:"tr",width,draw:draw};
2022-06-11 13:23:47 +00:00
})();