mirror of https://github.com/espruino/BangleApps
Change icon, rename internal timer, display running timer on app restart
Start timer on button press Invert icon, update metadata Update ChangeLogpull/3691/head
parent
ad24e33a81
commit
80173b9851
|
@ -1 +1,2 @@
|
|||
0.01: First release
|
||||
0.01: First release
|
||||
0.02: Fix icon, utilize sched, show running timer on app relaunch
|
|
@ -1 +1 @@
|
|||
atob("LjCI/hsbGxsbGxsbGxsbGxsbGwcHBwccHBwcHBwcHBwHBxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsHBwccHR0eHh4PDw8PDx4eHh0cBwcHGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsHBxwdHg8PDw8PDw8eHg8PDw8PDx4dHAcbGxsHGxsbGxsbGxsbGxsbGxsbGxsHHB0eDw8PHh0cGxoaGhoaGxwdHg8PDx4dHAcbGxsbGxsbGxsbGxsbGxsbGwcHHR4PDx4dGxkZGRkZGRkZGRkYGRkbHR4PDx4dBxsbGxsbGwcbGxsbGxsbGwccHQ8PHh0bGRkaGhsbGxoaGhoaGRkZGRkaHB4PDx0cBxsbGxsHGxsbGxsbGwccHg8PHhsZGRsHBxsbGhoaGhkZGRkZGRkZGRkaHg8PHhwHBwcbGxsbGxsbGwccHg8eHBkZGxwHGxoaGxoZBx4aGRsbGRkZGRkZGRkcHg8eHAcbGxsHGxsbGwccHg8eHBkaBxwHGxoZGx4bGR0dGRkdBxkZGRkZGRkZGQceHh4cBxsbBwcbGxscHg8PHBkaBwcbGhkZGRseGhkcHhkZHgcZGRkZGRkZGRkZBx4eHQcbBwcbGxsHHQ8PHBkaBwcaGRkZGRkZHR0ZGR0cGBseGRkZGRkZGRkZGRkcHh4dBwcHGxsHHA8PHRkaBxsaGRkZGRkZGQcdGRkdHBgbHhoZGRkZGRkZGRkZGh0eHhwHBxsbBx4PHhoZGxsaGRkZGRkZGRkcBxkaHBoZBxwZGRkZGRkZGRkZGRkaHR4dBwcbBx0PDxwZGwcaGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQceHhwbGwceDx4ZGhsbGhkZGhoaGxoaGhoaGhoaGhoaGhoaGhoaGRkZGRkZGRkaHR4dBwcdHg8HGRobGhkZGRsdHh4eHh4eHh4eHh4eHh4eHh4eHh0aGRkZGRkZGQceHhwHHQ8eGRkaGhkZGRodDw8PDw8PHg8PHBkeDx4eDw8PDw8PGxkZGRkZGRkaHh4cHB4PHBgaGhkZGRkaHQ8PDw8PHZQcDxr0HR4YGA8PDw8PDwcZGRkZGRkZGRweHRwPDxsZGhkZGRkZGh0PDw8PDx4HHg8a9B0PHBwPDw8PDw8dHAcaGRkZGRkbHh4dDx4aGRkZGRkZGRodDw8PBxwPDw8PGvQdDw8PHgcdDw8PDw8eHRsZGRkZGh4eHQ8dGRkZGRkZGRkaHQ8PHqwZHg8PDxr0HQ8PDx2rBw8PDx0dHg8eGhkZGRodHh4PHRkZGRkZGRkZGh0PDw8eHg8PDw8a3B0PDw8eHh4PDw8HGRodDxwZGRkaHR4eDxwZGRkZGRkZGRodDw8PDw8PDw8erNwaHh4eHh4eDw8PBxkZBx4dGRkZGRweHg8cGRkZGRkZGRkaHQ8PGxsPDw8PG5YY3KysrKwYGB0PDxsZGRseHhkZGRkcHh4eHBkZGRkZGRkZGh0PDxoaHg8PDxv0rNyVlZOrrKwcDx4bGRkdDx0ZGRkZHB4eHhwZGRkZGRkZGRkcDw8eHg8PDw8dGJMaHR4eHh4eDw8eBwcdHg8bGRkZGRweHR4cGRkZGRkZGRkZBx4PDx4eDw8PDx4dHg8PDw8eHg8PHh4eDx4cGRkZGRodHh0eHRkZGRkZGRkZGRoeDx4ZGh4PDw8PDw8PDw8drAcPHh4eHh0HGRkZGRkaHR4cHh4aGRkZGRkZGRkZHA8PHB0PDw8PDw8PDw8PHgcdDx0bGRkZGRkZGRkZGx4eHB4eGxkZGRkZGRkZGRoeDw8PHgceDw8PDw8dHQ8PDx4cGRkZGRkZGRkZGQceHgceHhwZGRkZGRkZGRkZGx4PDx2sHA8dGg8eGRkPDx4dGhgZGRkZGRkZGRkdHh0HHR4eGhkZGRkZGRkZGRkbHh4PHg8PG5MeDx4eDx4dGhkZGRkZGRkZGRkaHh4HBxweHhwZGRkZGRkZGRkZGRsdHh4PDx4cDw8PHh0HGRkZGRkZGRkZGRkZHA8eGgcHHR4dGhkZGRkZGRkZGRkZGhscHh4eHh4eHQcaGRkZGRkZGRkZGRkZGx4PHBkHBxweHhwaGRkZGhwdHR0dHR0dHR4eHh4eHh4dHR0dHR0dHRwZGRkZGh0PHhoYGxsHHR4eBxkZGRodDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8dGRkZGRweDxwYGRsbBwceHh0aGRkZGx4eHh4eHh4eHh4eHh4eHh4eHh4eHh4dGhkZGRseDx4ZGBkHBwcHHB4eHRoZGRkaBwcHBwcHBwcHBwcHBwcHBwcHBwcbGhkZGRoeHh4aGBkZBwcHGxscHh4dGhkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRodHh4bGBgZGQcHBwcbGxweHh0bGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRsdHh4HGBgZGRoHBwcHGxsbHB4eHRsZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGQceHh4HGBgZGRoaBwcHBxsbGxsHHR4eHBoZGRkZGRkZGRkZGRkZGRkZGRkZGx0eHh0bGBgZGRoaGgcHBwcHGxsbGhsdHh4dHBsZGRkZGRkZGRkZGRkZGRobHB4eHh0aGBgZGRkaGhoHBwcHBwcHGxsaGgcdHh4dHQcbGhkZGRkZGRkaGxwdHh4eHRsZGBgZGRkaGhobGxsHGxsHBwcbGxoaGgcdHh4eHh0dHRwcHB0dHh4eHh4dGxkYGBgZGRkaGhobGxsbGxsbBwcHGxsbGhoZGRscHR0eHh4eHh4eHh4dHRwaGBgYGBkZGRoaGhobGxsbGxsbGwcHBwcbGxsaGhoZGRkaGwcHHBwcBxsaGRkYGBgYGRkZGhoaGhobGxsbGxsHBwcHBwcHBxsbGxsaGhoZGRkZGRgYGBgYGBgYGBkZGRkZGhoaGhsbGxsbGw==")
|
||||
require("heatshrink").decompress(atob("mEwgIKHgwFKo0gAofmsALEGR0H/+f//+gEP/4ACAoXAn4FDAQn8g0DAoX4g0BAoXx4E4AoXhAoN/8EP4AzBn/4h/IC4M//kPzgjBz/+h+MAoMfj0PNYUfh4FDh8HAo0wg/454RBmBDBAoRnBCIIjCAAMPF4IFDHYOIgEBj5HBzkAIIPAIIIFBn4hBLIU+AoPgwEQvwFBOIX8CgP5w0RAoSJC/AsB/0EJwIgB/+Aj/wAoN/VgPgQwQFBwBKCXAQWBAAfgAoocCAoQcCAAPAj7XEcYIABcYLIBAAJBBA=="))
|
|
@ -44,14 +44,21 @@ function drawTime() {
|
|||
|
||||
function startTimer() {
|
||||
if (timerRunning) return;
|
||||
if (timeRemaining == 0) return;
|
||||
timerRunning = true;
|
||||
|
||||
// Save the default duration on timer start
|
||||
timerDuration = timeRemaining;
|
||||
saveDefaultDuration();
|
||||
scheduleTimer();
|
||||
|
||||
// Start the secondary timer to update the display
|
||||
setInterval(updateDisplay, 1000);
|
||||
}
|
||||
|
||||
function scheduleTimer() {
|
||||
// Schedule a new timer using the sched library
|
||||
require("sched").setAlarm("mytimer", {
|
||||
require("sched").setAlarm("ateatimer", {
|
||||
msg: "Tea is ready!",
|
||||
timer: timeRemaining * 1000, // Convert to milliseconds
|
||||
vibrate: ".." // Default vibration pattern
|
||||
|
@ -59,14 +66,11 @@ function startTimer() {
|
|||
|
||||
// Ensure the scheduler updates
|
||||
require("sched").reload();
|
||||
|
||||
// Start the secondary timer to update the display
|
||||
setInterval(updateDisplay, 1000);
|
||||
}
|
||||
|
||||
function resetTimer() {
|
||||
// Cancel the existing timer
|
||||
require("sched").setAlarm("mytimer", undefined);
|
||||
require("sched").setAlarm("ateatimer", undefined);
|
||||
require("sched").reload();
|
||||
|
||||
timerRunning = false;
|
||||
|
@ -75,25 +79,21 @@ function resetTimer() {
|
|||
}
|
||||
|
||||
function adjustTime(amount) {
|
||||
if (-amount > timeRemaining) {
|
||||
// Return if result will be negative
|
||||
return;
|
||||
}
|
||||
timeRemaining += amount;
|
||||
timeRemaining = Math.max(1, timeRemaining); // Ensure time doesn't go negative
|
||||
print(timeRemaining);
|
||||
timeRemaining = Math.max(0, timeRemaining); // Ensure time doesn't go negative
|
||||
if (timerRunning) {
|
||||
// Update the existing timer with the new remaining time
|
||||
let alarm = require("sched").getAlarm("mytimer");
|
||||
let alarm = require("sched").getAlarm("ateatimer");
|
||||
if (alarm) {
|
||||
// Cancel the current alarm
|
||||
require("sched").setAlarm("mytimer", undefined);
|
||||
require("sched").setAlarm("ateatimer", undefined);
|
||||
|
||||
// Set a new alarm with the updated time
|
||||
require("sched").setAlarm("mytimer", {
|
||||
msg: "Tea is ready!",
|
||||
timer: timeRemaining * 1000, // Convert to milliseconds
|
||||
vibrate: ".." // Default vibration pattern
|
||||
});
|
||||
|
||||
// Reload the scheduler to apply changes
|
||||
require("sched").reload();
|
||||
scheduleTimer();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -120,13 +120,11 @@ function handleTouch(x, y) {
|
|||
// Function to update the display every second
|
||||
function updateDisplay() {
|
||||
if (timerRunning) {
|
||||
let alarm = require("sched").getAlarm("mytimer");
|
||||
if (alarm) {
|
||||
timeRemaining = Math.ceil(require("sched").getTimeToAlarm(alarm) / 1000);
|
||||
}
|
||||
let alarm = require("sched").getAlarm("ateatimer");
|
||||
timeRemaining = Math.floor(require("sched").getTimeToAlarm(alarm) / 1000);
|
||||
drawTime();
|
||||
if (timeRemaining <= 0) {
|
||||
timeRemaining = 0
|
||||
timeRemaining = 0;
|
||||
clearInterval(updateDisplay);
|
||||
timerRunning = false;
|
||||
}
|
||||
|
@ -135,7 +133,11 @@ function updateDisplay() {
|
|||
|
||||
// Handle physical button press for resetting timer
|
||||
setWatch(() => {
|
||||
resetTimer();
|
||||
if (timerRunning) {
|
||||
resetTimer();
|
||||
} else {
|
||||
startTimer();
|
||||
}
|
||||
}, BTN1, { repeat: true, edge: "falling" });
|
||||
|
||||
// Handle touch
|
||||
|
@ -143,5 +145,12 @@ Bangle.on("touch", (zone, xy) => {
|
|||
handleTouch(xy.x, xy.y, false);
|
||||
});
|
||||
|
||||
// Draw the initial timer display
|
||||
drawTime();
|
||||
let isRunning = require("sched").getAlarm("ateatimer");
|
||||
if (isRunning) {
|
||||
timerRunning = true;
|
||||
// Start the timer to update the display
|
||||
setInterval(updateDisplay, 1000);
|
||||
} else {
|
||||
// Draw the initial timer display
|
||||
drawTime();
|
||||
}
|
|
@ -2,8 +2,8 @@
|
|||
"name": "A Tea Timer",
|
||||
"shortName":"A Tea Timer",
|
||||
"icon": "app.png",
|
||||
"version":"0.01",
|
||||
"description": "Simple app for setting countdown timers for tea. Press up and down to change time, and touch time to start counting. Button will stop countdown and reset counter to last used value.",
|
||||
"version":"0.02",
|
||||
"description": "Simple app for setting timers for tea. Touch up and down to change time, and time or button to start counting. When timer is running, button will stop timer and reset counter to last used value.",
|
||||
"tags": "timer",
|
||||
"supports": ["BANGLEJS2"],
|
||||
"storage": [
|
||||
|
|
Loading…
Reference in New Issue