[Scheduler] Add "delete timer at expiration" option

master
Alessandro Cocco 2022-06-11 15:36:48 +02:00
parent f5f1cc7523
commit a8116f3e49
4 changed files with 30 additions and 21 deletions

View File

@ -50,6 +50,7 @@ Alarms are stored in an array in `sched.json`, and take the form:
hidden : false, // OPTIONAL if false, the widget should not show an icon for this alarm hidden : false, // OPTIONAL if false, the widget should not show an icon for this alarm
as : false, // auto snooze as : false, // auto snooze
timer : 5*60*1000, // OPTIONAL - if set, this is a timer and it's the time in ms timer : 5*60*1000, // OPTIONAL - if set, this is a timer and it's the time in ms
del : false, // OPTIONAL - if true, delete the timer after expiration
js : "load('myapp.js')" // OPTIONAL - a JS command to execute when the alarm activates (*instead* of loading 'sched.js') js : "load('myapp.js')" // OPTIONAL - a JS command to execute when the alarm activates (*instead* of loading 'sched.js')
// when this code is run, you're responsible for setting alarm.on=false (or removing the alarm) // when this code is run, you're responsible for setting alarm.on=false (or removing the alarm)
data : { ... } // OPTIONAL - your app can store custom data in here if needed (don't store a lot of data here) data : { ... } // OPTIONAL - your app can store custom data in here if needed (don't store a lot of data here)

View File

@ -66,8 +66,9 @@ exports.newDefaultAlarm = function () {
var alarm = { var alarm = {
t: 12 * 3600000, // Default to 12:00 t: 12 * 3600000, // Default to 12:00
del: false, // Never delete an alarm when it expires
on: true, on: true,
rp: settings.defaultRepeat, rp: false,
as: settings.defaultAutoSnooze, as: settings.defaultAutoSnooze,
dow: 0b1111111, dow: 0b1111111,
last: 0, last: 0,
@ -84,6 +85,7 @@ exports.newDefaultTimer = function () {
var timer = { var timer = {
timer: 5 * 60 * 1000, // 5 minutes timer: 5 * 60 * 1000, // 5 minutes
del: settings.defaultDeleteExpiredTimers,
on: true, on: true,
rp: false, rp: false,
as: false, as: false,
@ -103,7 +105,7 @@ exports.getSettings = function () {
unlockAtBuzz: false, unlockAtBuzz: false,
defaultSnoozeMillis: 600000, // 10 minutes defaultSnoozeMillis: 600000, // 10 minutes
defaultAutoSnooze: false, defaultAutoSnooze: false,
defaultRepeat: false, defaultDeleteExpiredTimers: true, // Always
buzzCount: 10, buzzCount: 10,
buzzIntervalMillis: 3000, // 3 seconds buzzIntervalMillis: 3000, // 3 seconds
defaultAlarmPattern: "::", defaultAlarmPattern: "::",

View File

@ -6,6 +6,7 @@ if (Bangle.SCHED) {
} }
function showAlarm(alarm) { function showAlarm(alarm) {
const alarmIndex = alarms.indexOf(alarm);
const settings = require("sched").getSettings(); const settings = require("sched").getSettings();
let message = ""; let message = "";
@ -36,19 +37,25 @@ function showAlarm(alarm) {
} }
alarm.t += settings.defaultSnoozeMillis; alarm.t += settings.defaultSnoozeMillis;
} else { } else {
if (!alarm.timer) { let del = alarm.del === undefined ? settings.defaultDeleteExpiredTimers : alarm.del;
alarm.last = new Date().getDate(); if (del) {
} alarms.splice(alarmIndex, 1);
if (alarm.ot !== undefined) { } else {
alarm.t = alarm.ot; if (!alarm.timer) {
delete alarm.ot; alarm.last = new Date().getDate();
} }
if (!alarm.rp) { if (alarm.ot !== undefined) {
alarm.on = false; alarm.t = alarm.ot;
delete alarm.ot;
}
if (!alarm.rp) {
alarm.on = false;
}
} }
} }
// alarm is still a member of 'alarms', so writing to array writes changes back directly // The updated alarm is still a member of 'alarms'
// so writing to array writes changes back directly
require("sched").setAlarms(alarms); require("sched").setAlarms(alarms);
load(); load();
}); });
@ -75,7 +82,6 @@ function showAlarm(alarm) {
buzz(); buzz();
} }
// Check for alarms
let alarms = require("sched").getAlarms(); let alarms = require("sched").getAlarms();
let active = require("sched").getActiveAlarms(alarms); let active = require("sched").getActiveAlarms(alarms);
if (active.length) { if (active.length) {

View File

@ -14,6 +14,14 @@
} }
}, },
/*LANG*/"Delete Expired Timers": {
value: settings.defaultDeleteExpiredTimers,
onchange: v => {
settings.defaultDeleteExpiredTimers = v;
require("sched").setSettings(settings);
}
},
/*LANG*/"Default Auto Snooze": { /*LANG*/"Default Auto Snooze": {
value: settings.defaultAutoSnooze, value: settings.defaultAutoSnooze,
onchange: v => { onchange: v => {
@ -34,14 +42,6 @@
} }
}, },
/*LANG*/"Default Repeat": {
value: settings.defaultRepeat,
onchange: v => {
settings.defaultRepeat = v;
require("sched").setSettings(settings);
}
},
/*LANG*/"Buzz Count": { /*LANG*/"Buzz Count": {
value: settings.buzzCount, value: settings.buzzCount,
min: 5, min: 5,