From 1d1e37acd6cb4eedc6287387188dddb8a785dcb0 Mon Sep 17 00:00:00 2001 From: Travis Evans Date: Wed, 7 May 2025 19:40:18 -0500 Subject: [PATCH] Depending on setting, stop or reset timer when alarm dismissed --- apps/tevtimer/alarm.js | 15 +++++++++++---- apps/tevtimer/app.js | 7 +++++++ apps/tevtimer/lib.js | 1 + 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/apps/tevtimer/alarm.js b/apps/tevtimer/alarm.js index 5a65d20a1..5aa9654ff 100644 --- a/apps/tevtimer/alarm.js +++ b/apps/tevtimer/alarm.js @@ -24,8 +24,9 @@ function showAlarm(alarm) { // If there's a timer chained from this one, start it (only for // alarms not in snoozed status) var isChainedTimer = false; + var chainTimer = null; 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) { chainTimer.reset(); chainTimer.start(); @@ -84,13 +85,19 @@ function showAlarm(alarm) { if (index !== -1) { alarms.splice(index, 1); } + if (timer !== chainTimer) { + timer.pause(); + if (tt.SETTINGS.auto_reset) { + timer.reset(); + } + } } if (action === 'halt') { - timer.pause(); chainTimer.pause(); - tt.update_system_alarms(); - alarms = require("sched").getAlarms(); } + tt.update_system_alarms(); + alarms = require("sched").getAlarms(); + Bangle.emit("alarmDismiss", alarm); // The updated alarm is still a member of 'alarms' diff --git a/apps/tevtimer/app.js b/apps/tevtimer/app.js index 220209374..83b2e51fe 100644 --- a/apps/tevtimer/app.js +++ b/apps/tevtimer/app.js @@ -1276,6 +1276,13 @@ class AppSettingsMenu { 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); diff --git a/apps/tevtimer/lib.js b/apps/tevtimer/lib.js index c3686cbaa..5fcaba3d5 100644 --- a/apps/tevtimer/lib.js +++ b/apps/tevtimer/lib.js @@ -345,6 +345,7 @@ const SETTINGS = Object.assign({ 'confirm_reset': 'auto', 'confirm_delete': true, 'alarm_return': false, + 'auto_reset': false, }, Storage.readJSON(SETTINGS_FILENAME, true) || {}); var TIMERS = load_timers();