mirror of https://github.com/espruino/BangleApps
touchtimer: initial creation
parent
d9d5926416
commit
a382c6bd4f
16
apps.json
16
apps.json
|
@ -5062,5 +5062,21 @@
|
||||||
{"name":"ltherm.app.js","url":"app.js"},
|
{"name":"ltherm.app.js","url":"app.js"},
|
||||||
{"name":"ltherm.img","url":"icon.js","evaluate":true}
|
{"name":"ltherm.img","url":"icon.js","evaluate":true}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "touchtimer",
|
||||||
|
"name": "Touch Timer",
|
||||||
|
"shortName": "Touch Timer",
|
||||||
|
"version": "0.01",
|
||||||
|
"description": "Quickly and easily create a timer touch-only.",
|
||||||
|
"icon": "app.png",
|
||||||
|
"tags": "tools",
|
||||||
|
"supports": ["BANGLEJS2"],
|
||||||
|
"readme": "README.md",
|
||||||
|
"storage": [
|
||||||
|
{ "name": "touchtimer.app.js", "url": "app.js" },
|
||||||
|
{ "name": "touchtimer.boot.js", "url": "boot.js" },
|
||||||
|
{ "name": "touchtimer.img", "url": "app-icon.js", "evaluate": true }
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
0.01: Initial creation of the touch timer app
|
|
@ -0,0 +1,3 @@
|
||||||
|
# Touch Timer
|
||||||
|
|
||||||
|
Quickly and easily create a timer touch-only.
|
|
@ -0,0 +1 @@
|
||||||
|
require("heatshrink").decompress(atob("mEwwkE/4A3mUQIAMRkYWQkBaFiQWQgMjn8zGYUDCxkxFA3zD4MfCxXygECMAURiReCDAM/IpUBFIJ2CAAIeB+ZJKBYI8BCwMBiABBDARSBC5EwFwMwEwUwh5FCEIJhJiEfGIIXC+IQBSwQeBNYR1Gn4xB+MDDYITBiEzFoIOCC4vwEAIxBAwQzBAoQtCBgaNEh4iEAwMwRQXxHgRnBLwsvFQJdCFoIGBl55DH4QAEEIK/BC4KjBC4RECiED+RnBXooxCn4uBKwPwgIiB+fxgQQCRwgeBLwRbBkAXBh5yCBwoACEAoVBC4fwJ4I+DC5EjJQQXDBYP/kJWDC4qmBBYYXFfIQXKiQvUL6AXGR5LzBR4YXIBAS/BC4UCeAQOFC4rvDN4LvCFYMgd4IXJmEABgMxC4bWBiADDC45EBZIRHBMYINCBQQXIIgIkB//wgIFDmBKBC5QNB+UDboU/kEzgCRBC5QTBNwUxLoZRDC5J5EmAqBkEAiYMCC5XzFIMRkECAgILDC5YYDAAUBIoQXNDAMhiMRkYJEC5oAKC7qKBACDfCK4IWRPwjqBkczAB0yGAcQGgYAOmByCfAYAP+MBC4QWR//yC4ciACMhC4YATC4T9BACUSLiQAdA="))
|
|
@ -0,0 +1,92 @@
|
||||||
|
var DEBUG = true;
|
||||||
|
|
||||||
|
var main = () => {
|
||||||
|
var button0 = new Button({ x1: 0, y1: 35, x2: 58, y1: 70 }, 0);
|
||||||
|
|
||||||
|
button0.draw();
|
||||||
|
|
||||||
|
button0.onClick((value) => {
|
||||||
|
log("button with value clicked");
|
||||||
|
log(value);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// lib functions
|
||||||
|
|
||||||
|
var log = (message) => {
|
||||||
|
if (DEBUG) {
|
||||||
|
console.log(JSON.stringify(message));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var touchHandlers = [];
|
||||||
|
|
||||||
|
Bangle.on("touch", (_button, xy) => {
|
||||||
|
touchHandlers.forEach((touchHandler) => {
|
||||||
|
touchHandler(xy);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
var BUTTON_BORDER_WITH = 2;
|
||||||
|
|
||||||
|
class Button {
|
||||||
|
constructor(position, value) {
|
||||||
|
this.position = position;
|
||||||
|
this.value = value;
|
||||||
|
|
||||||
|
this.onClickCallbacks = [];
|
||||||
|
|
||||||
|
touchHandlers.push((xy) => {
|
||||||
|
var x = xy.x;
|
||||||
|
var y = xy.y;
|
||||||
|
|
||||||
|
if (
|
||||||
|
x >= this.position.x1 &&
|
||||||
|
x <= this.position.x2 &&
|
||||||
|
y >= this.position.y1 &&
|
||||||
|
y <= this.position.y2
|
||||||
|
) {
|
||||||
|
this.onClickCallbacks.forEach((onClickCallback) =>
|
||||||
|
onClickCallback(this.value)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
draw() {
|
||||||
|
g.clear();
|
||||||
|
|
||||||
|
g.setColor(g.theme.fg);
|
||||||
|
g.fillRect(
|
||||||
|
this.position.x1,
|
||||||
|
this.position.y1,
|
||||||
|
this.position.x2,
|
||||||
|
this.position.y2
|
||||||
|
);
|
||||||
|
|
||||||
|
g.setColor(g.theme.bg);
|
||||||
|
g.fillRect(
|
||||||
|
this.position.x1 + BUTTON_BORDER_WITH,
|
||||||
|
this.position.y1 + BUTTON_BORDER_WITH,
|
||||||
|
this.position.x2 - BUTTON_BORDER_WITH,
|
||||||
|
this.position.y2 - BUTTON_BORDER_WITH
|
||||||
|
);
|
||||||
|
|
||||||
|
g.setColor(g.theme.fg);
|
||||||
|
g.setFontAlign(0, 0);
|
||||||
|
g.setFont("Vector", 40);
|
||||||
|
g.drawString(
|
||||||
|
this.value,
|
||||||
|
this.position.x2 - this.position.x1,
|
||||||
|
this.position.y2 - this.position.y1
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
onClick(callback) {
|
||||||
|
this.onClickCallbacks.push(callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// start main function
|
||||||
|
|
||||||
|
main();
|
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Loading…
Reference in New Issue