diff --git a/apps/alarm/ChangeLog b/apps/alarm/ChangeLog index 247e1c63a..57ba2f710 100644 --- a/apps/alarm/ChangeLog +++ b/apps/alarm/ChangeLog @@ -48,4 +48,4 @@ 0.43: New settings: Show confirm, Show Overflow, Show Group. 0.44: Add "delete timer after expiration" setting to events. 0.45: Fix new alarm when selectedAlarm is undefined -0.46: Show alarm groups if the Show Group setting is ON. +0.46: Show alarm groups if the Show Group setting is ON. Scroll alarms menu back to previous position when getting back to it. diff --git a/apps/alarm/app.js b/apps/alarm/app.js index e4a159543..2d963e2aa 100644 --- a/apps/alarm/app.js +++ b/apps/alarm/app.js @@ -73,9 +73,9 @@ function formatAlarmProperty(msg) { } } -function showMainMenu(group) { +function showMainMenu(scroll, group) { const menu = { - "": { "title": group ? group : /*LANG*/"Alarms & Timers" }, + "": { "title": group ? group : /*LANG*/"Alarms & Timers", scroll: scroll }, "< Back": () => !group ? load() : showMainMenu(), /*LANG*/"New...": () => showNewMenu(group) }; @@ -88,7 +88,7 @@ function showMainMenu(group) { if(showAlarm) { menu[trimLabel(getLabel(e),40)] = { value: e.on ? (e.timer ? iconTimerOn : iconAlarmOn) : (e.timer ? iconTimerOff : iconAlarmOff), - onchange: () => setTimeout(e.timer ? showEditTimerMenu : showEditAlarmMenu, 10, e, index, undefined, group) + onchange: () => setTimeout(e.timer ? showEditTimerMenu : showEditAlarmMenu, 10, e, index, undefined, scroller.scroll, group) }; } else if (getGroups) { groups[e.group] = undefined; @@ -96,11 +96,11 @@ function showMainMenu(group) { }); if (!group) { - Object.keys(groups).sort().forEach(g => menu[g] = () => showMainMenu(g)); + Object.keys(groups).sort().forEach(g => menu[g] = () => showMainMenu(null, g)); menu[/*LANG*/"Advanced"] = () => showAdvancedMenu(); } - E.showMenu(menu); + var scroller = E.showMenu(menu).scroller; } function showNewMenu(group) { @@ -116,7 +116,7 @@ function showNewMenu(group) { E.showMenu(newMenu); } -function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate, group) { +function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate, scroll, group) { var isNew = alarmIndex === undefined; var alarm = require("sched").newDefaultAlarm(); @@ -142,7 +142,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate, group) { "< Back": () => { prepareAlarmForSave(alarm, alarmIndex, time, date); saveAndReload(); - showMainMenu(group); + showMainMenu(scroll, group); }, /*LANG*/"Hour": { value: time.h, @@ -233,11 +233,11 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate, group) { value: alarm.hidden || false, onchange: v => alarm.hidden = v }, - /*LANG*/"Cancel": () => showMainMenu(group), + /*LANG*/"Cancel": () => showMainMenu(scroll, group), /*LANG*/"Confirm": () => { prepareAlarmForSave(alarm, alarmIndex, time, date); saveAndReload(); - showMainMenu(group); + showMainMenu(scroll, group); } }; @@ -259,7 +259,7 @@ function showEditAlarmMenu(selectedAlarm, alarmIndex, withDate, group) { if (confirm) { alarms.splice(alarmIndex, 1); saveAndReload(); - showMainMenu(group); + showMainMenu(scroll, group); } else { alarm.t = require("time_utils").encodeTime(time); setTimeout(showEditAlarmMenu, 10, alarm, alarmIndex, withDate, scroll, group);