Depending on setting, stop or reset timer when alarm dismissed

master
Travis Evans 2025-05-07 19:40:18 -05:00
parent b7ab9da74a
commit 1d1e37acd6
3 changed files with 19 additions and 4 deletions

View File

@ -24,8 +24,9 @@ function showAlarm(alarm) {
// If there's a timer chained from this one, start it (only for // If there's a timer chained from this one, start it (only for
// alarms not in snoozed status) // alarms not in snoozed status)
var isChainedTimer = false; var isChainedTimer = false;
var chainTimer = null;
if (timer.chain_id !== null && alarm.ot === undefined) { if (timer.chain_id !== null && alarm.ot === undefined) {
var chainTimer = tt.TIMERS[tt.find_timer_by_id(timer.chain_id)]; chainTimer = tt.TIMERS[tt.find_timer_by_id(timer.chain_id)];
if (chainTimer !== undefined) { if (chainTimer !== undefined) {
chainTimer.reset(); chainTimer.reset();
chainTimer.start(); chainTimer.start();
@ -84,13 +85,19 @@ function showAlarm(alarm) {
if (index !== -1) { if (index !== -1) {
alarms.splice(index, 1); alarms.splice(index, 1);
} }
if (timer !== chainTimer) {
timer.pause();
if (tt.SETTINGS.auto_reset) {
timer.reset();
}
}
} }
if (action === 'halt') { if (action === 'halt') {
timer.pause();
chainTimer.pause(); chainTimer.pause();
tt.update_system_alarms();
alarms = require("sched").getAlarms();
} }
tt.update_system_alarms();
alarms = require("sched").getAlarms();
Bangle.emit("alarmDismiss", alarm); Bangle.emit("alarmDismiss", alarm);
// The updated alarm is still a member of 'alarms' // The updated alarm is still a member of 'alarms'

View File

@ -1276,6 +1276,13 @@ class AppSettingsMenu {
tt.set_settings_dirty(); tt.set_settings_dirty();
} }
}, },
'Auto reset': {
value: tt.SETTINGS.auto_reset, // boolean
onchange: v => {
tt.SETTINGS.auto_reset = v;
tt.set_settings_dirty();
}
}
}; };
E.showMenu(menu); E.showMenu(menu);

View File

@ -345,6 +345,7 @@ const SETTINGS = Object.assign({
'confirm_reset': 'auto', 'confirm_reset': 'auto',
'confirm_delete': true, 'confirm_delete': true,
'alarm_return': false, 'alarm_return': false,
'auto_reset': false,
}, Storage.readJSON(SETTINGS_FILENAME, true) || {}); }, Storage.readJSON(SETTINGS_FILENAME, true) || {});
var TIMERS = load_timers(); var TIMERS = load_timers();