From 4f47636195ab531ceeef2d1f6665ef9b2299808b Mon Sep 17 00:00:00 2001 From: Erik Andresen Date: Sat, 14 Oct 2023 09:23:49 +0200 Subject: [PATCH 1/3] alarm: auto expiration for events - Set default value - Add "delete timer after expiration" setting to events. --- apps/alarm/ChangeLog | 1 + apps/alarm/app.js | 11 +++++++++++ apps/alarm/metadata.json | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/alarm/ChangeLog b/apps/alarm/ChangeLog index 7d4d23f57..a41167e76 100644 --- a/apps/alarm/ChangeLog +++ b/apps/alarm/ChangeLog @@ -46,3 +46,4 @@ 0.41: Fix a menu bug affecting alarms with empty messages. 0.42: Fix date not getting saved in event edit menu when tapping Confirm 0.43: New settings: Show confirm, Show Overflow, Show Type. +0.44: Add "delete timer after expiration" setting to events. diff --git a/apps/alarm/app.js b/apps/alarm/app.js index f8dcdbfed..5acbf6f54 100644 --- a/apps/alarm/app.js +++ b/apps/alarm/app.js @@ -106,6 +106,9 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) { var isNew = alarmIndex === undefined; var alarm = require("sched").newDefaultAlarm(); + if (withDate) { + alarm.del = require("sched").getSettings().defaultDeleteExpiredTimers; + } alarm.dow = handleFirstDayOfWeek(alarm.dow); if (selectedAlarm) { @@ -193,6 +196,9 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) { /*LANG*/"Repeat": { value: decodeRepeat(alarm), onchange: () => setTimeout(showEditRepeatMenu, 100, alarm.rp, date || alarm.dow, (repeat, dow) => { + if (repeat) { + alarm.del = false; // do not auto delete a repeated alarm + } alarm.rp = repeat; alarm.dow = dow; prepareAlarmForSave(alarm, alarmIndex, time, date, true); @@ -204,6 +210,10 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) { value: alarm.as, onchange: v => alarm.as = v }, + /*LANG*/"Delete After Expiration": { + value: alarm.del, + onchange: v => alarm.del = v + }, /*LANG*/"Hidden": { value: alarm.hidden || false, onchange: v => alarm.hidden = v @@ -225,6 +235,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) { delete menu[/*LANG*/"Day"]; delete menu[/*LANG*/"Month"]; delete menu[/*LANG*/"Year"]; + delete menu[/*LANG*/"Delete After Expiration"]; } if (!isNew) { diff --git a/apps/alarm/metadata.json b/apps/alarm/metadata.json index bcd60a376..31a3e5bf0 100644 --- a/apps/alarm/metadata.json +++ b/apps/alarm/metadata.json @@ -2,7 +2,7 @@ "id": "alarm", "name": "Alarms & Timers", "shortName": "Alarms", - "version": "0.43", + "version": "0.44", "description": "Set alarms and timers on your Bangle", "icon": "app.png", "tags": "tool,alarm", From 927306cf8a6d3e619d2aea8fac4eec14d5d1b113 Mon Sep 17 00:00:00 2001 From: Erik Andresen Date: Sat, 14 Oct 2023 09:25:39 +0200 Subject: [PATCH 2/3] alarm repeat menu: Do not change value on back Instead of saving repeat to originalRepeat create a new repeatObj --- apps/alarm/app.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/apps/alarm/app.js b/apps/alarm/app.js index 5acbf6f54..b9f894b6e 100644 --- a/apps/alarm/app.js +++ b/apps/alarm/app.js @@ -294,7 +294,6 @@ function decodeRepeat(alarm) { } function showEditRepeatMenu(repeat, day, dowChangeCallback) { - var originalRepeat = repeat; var dow; const menu = { @@ -327,26 +326,32 @@ function showEditRepeatMenu(repeat, day, dowChangeCallback) { }, /*LANG*/"Custom": { value: isCustom ? decodeRepeat({ rp: true, dow: dow }) : false, - onchange: () => setTimeout(showCustomDaysMenu, 10, dow, dowChangeCallback, originalRepeat, originalDow) + onchange: () => setTimeout(showCustomDaysMenu, 10, dow, dowChangeCallback, repeat, originalDow) } }; } else { // var date = day; // eventually: detect day of date and configure a repeat e.g. 3rd Monday of Month dow = EVERY_DAY; - repeat = repeat || {interval: "month", num: 1}; + const repeatObj = repeat || {interval: "month", num: 1}; restOfMenu = { /*LANG*/"Every": { - value: repeat.num, + value: repeatObj.num, min: 1, - onchange: v => repeat.num = v + onchange: v => { + repeat = repeatObj; + repeat.num = v; + } }, /*LANG*/"Interval": { - value: INTERVALS.indexOf(repeat.interval), + value: INTERVALS.indexOf(repeatObj.interval), format: v => INTERVAL_LABELS[v], min: 0, max: INTERVALS.length - 1, - onchange: v => repeat.interval = INTERVALS[v] + onchange: v => { + repeat = repeatObj; + repeat.interval = INTERVALS[v]; + } } }; } From b6fcc5ee4c67c1e7f452be74ca4ae88c823554b1 Mon Sep 17 00:00:00 2001 From: Erik Andresen Date: Sat, 14 Oct 2023 10:04:31 +0200 Subject: [PATCH 3/3] alarm: auto expiration for events --- apps/alarm/app.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/alarm/app.js b/apps/alarm/app.js index b9f894b6e..52dbe40fd 100644 --- a/apps/alarm/app.js +++ b/apps/alarm/app.js @@ -106,7 +106,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) { var isNew = alarmIndex === undefined; var alarm = require("sched").newDefaultAlarm(); - if (withDate) { + if (withDate || selectedAlarm.date) { alarm.del = require("sched").getSettings().defaultDeleteExpiredTimers; } alarm.dow = handleFirstDayOfWeek(alarm.dow);