BangleApps/apps/drained/app.ts

79 lines
1.7 KiB
TypeScript
Raw Normal View History

2023-04-07 20:27:15 +00:00
const app = "drained";
2023-03-10 23:20:28 +00:00
// from boot.js
2023-04-13 16:51:04 +00:00
declare var drainedInterval: number | undefined;
2023-04-07 16:52:54 +00:00
if(typeof drainedInterval !== "undefined")
drainedInterval = clearInterval(drainedInterval) as undefined;
2023-03-10 23:20:28 +00:00
// backlight
Bangle.setLCDBrightness(0);
// peripherals
2023-04-07 20:27:15 +00:00
const powerNoop = () => false;
const forceOff = (name: "GPS" | "HRM" | "Compass" /*| "Barom"*/) => {
2023-04-07 21:32:26 +00:00
if ((Bangle as any)._PWR?.[name])
(Bangle as any)._PWR[name] = [];
2023-04-07 20:27:15 +00:00
// if(name === "Barom"){ setBarometerPower(...) }
// ^^^^
2023-04-11 17:15:25 +00:00
Bangle[`set${name}Power`](0, app);
2023-04-07 20:27:15 +00:00
Bangle[`set${name}Power`] = powerNoop;
};
forceOff("GPS");
forceOff("HRM");
NRF.disconnect();
NRF.sleep();
2023-03-10 23:20:28 +00:00
// events
Bangle.removeAllListeners();
clearWatch();
2023-03-10 23:20:28 +00:00
2023-04-07 20:27:46 +00:00
// UI
Bangle.setOptions({
2023-04-11 17:15:25 +00:00
wakeOnFaceUp: 0,
wakeOnTouch: 0,
wakeOnTwist: 0,
2023-04-07 20:27:46 +00:00
});
2023-03-10 23:20:28 +00:00
// clock
let nextDraw: number | undefined;
const draw = () => {
const x = g.getWidth() / 2;
const y = g.getHeight() / 2 - 48;
const date = new Date();
const timeStr = require("locale").time(date, 1);
const dateStr = require("locale").date(date, 0).toUpperCase() +
"\n" +
require("locale").dow(date, 0).toUpperCase();
g.reset()
.clearRect(Bangle.appRect)
2023-04-07 21:32:38 +00:00
.setFont("Vector", 55)
2023-03-10 23:20:28 +00:00
.setFontAlign(0, 0)
.drawString(timeStr, x, y)
.setFont("Vector", 24)
.drawString(dateStr, x, y + 56)
.drawString(`${E.getBattery()}%`, x, y + 104);
if(nextDraw) clearTimeout(nextDraw);
nextDraw = setTimeout(() => {
nextDraw = undefined;
draw();
}, 60000 - (date.getTime() % 60000));
};
Bangle.setUI({
mode: "custom",
2023-03-10 23:20:28 +00:00
remove: () => {
if (nextDraw) clearTimeout(nextDraw);
nextDraw = undefined;
},
});
Bangle.CLOCK=1;
2023-03-10 23:20:28 +00:00
g.clear();
draw();