forked from FOSS/BangleApps
Add Swatch Internet Time widget (widswatchbeats)
parent
57f01d2951
commit
07d8e1078c
|
@ -0,0 +1,18 @@
|
||||||
|
{
|
||||||
|
"id": "widswatchbeats",
|
||||||
|
"name": "Swatch Internet Time",
|
||||||
|
"icon": "widget.png",
|
||||||
|
"version": "0.01",
|
||||||
|
"description": "Displays the current .beat (Swatch Internet Time)",
|
||||||
|
"tags": "time,swatch,internet,beat,.beat,clock",
|
||||||
|
"storage": [{
|
||||||
|
"name": "widswatchbeats.wid.js",
|
||||||
|
"url": "widget.js"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "widswatchbeats.img",
|
||||||
|
"url": "widget-icon.js",
|
||||||
|
"evaluate": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
require("heatshrink").decompress(atob("7FUwcB/4A/AH4A/AH4A/AH4A/AH4A/AAWAgAACj5F/ABP8J4cAgZG/KH4AD+A5Eh5Q/KH5Q/KH5Q/KH5Q/KH5Q/KH5Q/KH5Q/KH5Q/KH5Q18BWNC4p6bKD34AwcBCxAOEAAV/CKAjG4AOGEZhQK/wbFn4VGBwxiKCJEAg4ONKCy/FFgoACwA+NCJkAj5QqgAULCK8DKEaAHPoYAB8AuKCKJQjHxwRRKBZBDKFB9DKBoRRgEPKF/4CRgvDCJpQrDonAKH5QVn//+BQOg4RGKEk/8BQOgI1HHwQROBBBQaGoWAPpoILKBAIJAAKtIABpQGMoRQRHwoIRKEwgIKH5QfdJBQrgYJCI5ApFMQRQ/KDQAIKH5Q/FgpQaEZBQ/AA4aFKGoAIKBXgCJZQ/EA5Q/KBKeGKH4+HTxBQ/Hw+AKH4+OEwpQ/HxSzSKHEAn5QJgPAKH5QG/AKGv5Q6v4lLI4gABBAxQ/KBCqCKH4AGDRBQX5MkyVJAQRQuHYZQ/KH5Q/KCYgCKBI+HKH5QQHZJQrEBBQ/Hw4gIcCJQ/KH4XGwBQWCJYIFKEqqJHxxHLIgpQLBYpQRgEHA4xQCa5BQOgE/YoxQLGQpQSDpRQFHwQyFWZAAIKFcDCYf4MR5Q/KBgRDKHUfFYhiQ4BQSMpBQTjhQZCIhQInBQvFQn/8BQKCAn4KF8fwAbFg5QFCgoRKKA8BBAs/Cgi2HKCnwDYopFAAIOGCJINGh5QLMo5QUX4rLFZxcPCAwmFgZEGMppQC/JQJ/7sEj4pFHw59IIIIAHEwxEFKAxlFKAYAT8AvEABJBDHAwAE4AONAH4A/AH4A/AH4A/AEH4IH5QQA="))
|
|
@ -0,0 +1,41 @@
|
||||||
|
(function() {
|
||||||
|
const WIDTH = 50;
|
||||||
|
const SEC_PER_BEAT = 86.4;
|
||||||
|
|
||||||
|
let drawTimeout;
|
||||||
|
|
||||||
|
function getSecondsSinceMidnight() {
|
||||||
|
const now = new Date();
|
||||||
|
return now.getHours() * 3600 + now.getMinutes() * 60 + now.getSeconds();
|
||||||
|
}
|
||||||
|
|
||||||
|
function queueDraw() {
|
||||||
|
if (drawTimeout) clearTimeout(drawTimeout);
|
||||||
|
const nextSecond = SEC_PER_BEAT - (getSecondsSinceMidnight() % SEC_PER_BEAT);
|
||||||
|
drawTimeout = setTimeout(function() {
|
||||||
|
drawTimeout = undefined;
|
||||||
|
WIDGETS.widswatchbeats.draw();
|
||||||
|
}, nextSecond * 1000 + 1); // Add one ms to ensure we're past the beat
|
||||||
|
}
|
||||||
|
|
||||||
|
function draw() {
|
||||||
|
const now = new Date();
|
||||||
|
const seconds = now.getHours() * 3600 + now.getMinutes() * 60 + now.getSeconds();
|
||||||
|
const beats = Math.floor(seconds / SEC_PER_BEAT);
|
||||||
|
const beatsString = '@' + beats.toString().padStart(3, '0');
|
||||||
|
|
||||||
|
g.reset();
|
||||||
|
g.setFontAlign(0, 0);
|
||||||
|
g.clearRect(this.x, this.y, this.x + WIDTH, this.y+22);
|
||||||
|
g.setFont("6x8", 2);
|
||||||
|
g.drawString(beatsString, this.x+WIDTH/2, this.y+12);
|
||||||
|
queueDraw();
|
||||||
|
}
|
||||||
|
|
||||||
|
WIDGETS.widswatchbeats = {
|
||||||
|
area: "tl",
|
||||||
|
width: WIDTH,
|
||||||
|
draw
|
||||||
|
};
|
||||||
|
|
||||||
|
})();
|
Loading…
Reference in New Issue