Merge pull request #3046 from nxdefiant/master

alarm auto expiration for events + fix repeat back
master
Gordon Williams 2023-10-16 10:28:31 +01:00 committed by GitHub
commit 07fa23ee25
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 8 deletions

View File

@ -46,3 +46,4 @@
0.41: Fix a menu bug affecting alarms with empty messages. 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.42: Fix date not getting saved in event edit menu when tapping Confirm
0.43: New settings: Show confirm, Show Overflow, Show Type. 0.43: New settings: Show confirm, Show Overflow, Show Type.
0.44: Add "delete timer after expiration" setting to events.

View File

@ -106,6 +106,9 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
var isNew = alarmIndex === undefined; var isNew = alarmIndex === undefined;
var alarm = require("sched").newDefaultAlarm(); var alarm = require("sched").newDefaultAlarm();
if (withDate || selectedAlarm.date) {
alarm.del = require("sched").getSettings().defaultDeleteExpiredTimers;
}
alarm.dow = handleFirstDayOfWeek(alarm.dow); alarm.dow = handleFirstDayOfWeek(alarm.dow);
if (selectedAlarm) { if (selectedAlarm) {
@ -193,6 +196,9 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
/*LANG*/"Repeat": { /*LANG*/"Repeat": {
value: decodeRepeat(alarm), value: decodeRepeat(alarm),
onchange: () => setTimeout(showEditRepeatMenu, 100, alarm.rp, date || alarm.dow, (repeat, dow) => { 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.rp = repeat;
alarm.dow = dow; alarm.dow = dow;
prepareAlarmForSave(alarm, alarmIndex, time, date, true); prepareAlarmForSave(alarm, alarmIndex, time, date, true);
@ -204,6 +210,10 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
value: alarm.as, value: alarm.as,
onchange: v => alarm.as = v onchange: v => alarm.as = v
}, },
/*LANG*/"Delete After Expiration": {
value: alarm.del,
onchange: v => alarm.del = v
},
/*LANG*/"Hidden": { /*LANG*/"Hidden": {
value: alarm.hidden || false, value: alarm.hidden || false,
onchange: v => alarm.hidden = v onchange: v => alarm.hidden = v
@ -225,6 +235,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate) {
delete menu[/*LANG*/"Day"]; delete menu[/*LANG*/"Day"];
delete menu[/*LANG*/"Month"]; delete menu[/*LANG*/"Month"];
delete menu[/*LANG*/"Year"]; delete menu[/*LANG*/"Year"];
delete menu[/*LANG*/"Delete After Expiration"];
} }
if (!isNew) { if (!isNew) {
@ -283,7 +294,6 @@ function decodeRepeat(alarm) {
} }
function showEditRepeatMenu(repeat, day, dowChangeCallback) { function showEditRepeatMenu(repeat, day, dowChangeCallback) {
var originalRepeat = repeat;
var dow; var dow;
const menu = { const menu = {
@ -316,26 +326,32 @@ function showEditRepeatMenu(repeat, day, dowChangeCallback) {
}, },
/*LANG*/"Custom": { /*LANG*/"Custom": {
value: isCustom ? decodeRepeat({ rp: true, dow: dow }) : false, 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 { } else {
// var date = day; // eventually: detect day of date and configure a repeat e.g. 3rd Monday of Month // var date = day; // eventually: detect day of date and configure a repeat e.g. 3rd Monday of Month
dow = EVERY_DAY; dow = EVERY_DAY;
repeat = repeat || {interval: "month", num: 1}; const repeatObj = repeat || {interval: "month", num: 1};
restOfMenu = { restOfMenu = {
/*LANG*/"Every": { /*LANG*/"Every": {
value: repeat.num, value: repeatObj.num,
min: 1, min: 1,
onchange: v => repeat.num = v onchange: v => {
repeat = repeatObj;
repeat.num = v;
}
}, },
/*LANG*/"Interval": { /*LANG*/"Interval": {
value: INTERVALS.indexOf(repeat.interval), value: INTERVALS.indexOf(repeatObj.interval),
format: v => INTERVAL_LABELS[v], format: v => INTERVAL_LABELS[v],
min: 0, min: 0,
max: INTERVALS.length - 1, max: INTERVALS.length - 1,
onchange: v => repeat.interval = INTERVALS[v] onchange: v => {
repeat = repeatObj;
repeat.interval = INTERVALS[v];
}
} }
}; };
} }

View File

@ -2,7 +2,7 @@
"id": "alarm", "id": "alarm",
"name": "Alarms & Timers", "name": "Alarms & Timers",
"shortName": "Alarms", "shortName": "Alarms",
"version": "0.43", "version": "0.44",
"description": "Set alarms and timers on your Bangle", "description": "Set alarms and timers on your Bangle",
"icon": "app.png", "icon": "app.png",
"tags": "tool,alarm", "tags": "tool,alarm",