diff --git a/.gitignore b/.gitignore index ac0c049..eb9ea50 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,7 @@ DOC.md .opencode/skills/qmd-port/SKILL.md NOTIFICATION.md SLEEP.md -mods.png \ No newline at end of file +mods.png +SETTINGS.md +SAVE.md +LIGHT.md diff --git a/3.24.0.149/quickSettingsTimer.qmd b/3.24.0.149/quickSettingsTimer.qmd index 5d79679..9c415cf 100644 --- a/3.24.0.149/quickSettingsTimer.qmd +++ b/3.24.0.149/quickSettingsTimer.qmd @@ -1,5 +1,5 @@ -; Quick Settings Timer/Chrono -; Adds a countdown timer and stopwatch to the quick settings panel +; Quick Settings Timer/Chrono/Alarm +; Adds a countdown timer, stopwatch, and alarm system to the quick settings panel ; Timer state lives in Values.timerManager so it persists across menu opens/closes AFFECT [[1658694193319203921]] @@ -18,6 +18,15 @@ AFFECT [[1658694193319203921]] property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~ property ~&197088788&~ presetMs: 60000 property ~&6503679477&~ addMode: ~&6504329801&~ + property ~&6503679477&~ blinkLightOnNotification: ~&214625660372&~ + property ~&197102514&~ _blinkLight: ~&6504117156&~ + + /* Alarm state*/ + property ~&6503679477&~ alarmMode: ~&214625660372&~ + property ~&197102514&~ alarms: [] + property ~&197088788&~ nextAlarmId: 1 + property ~&7083178290016&~ alarmNotificationText: "" + property ~&197088788&~ lastNotifiedMinute: -1 /* absolute epoch-minute of the last fired alarm*/ function fmt(ms) { ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms); @@ -26,7 +35,6 @@ AFFECT [[1658694193319203921]] ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000); ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); - ~&5972376&~ (~&180977&~ > 0) { ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss; } @@ -34,36 +42,122 @@ AFFECT [[1658694193319203921]] } function refresh() { - ~&5972376&~ (timerMode) { - ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0); + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0); } ~&6503784146&~ { - ~&478322454160073828&~ = fmt(totalMs); + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs); } } function go() { - ~&5972376&~ (timerMode) { - ~&5972376&~ (remainMs <= 0) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + ~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~; } - ~&16765420033347753489&~ = ~&214625660372&~; - isRunning = ~&6504329801&~; + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.isRunning = ~&6504329801&~; _tick.~&214641748151&~(); } function ~&6504295855&~() { - isRunning = ~&214625660372&~; + _timerManager.isRunning = ~&214625660372&~; _tick.~&6504295855&~(); } function doReset() { - ~&6504295855&~(); - ~&16765420033347753489&~ = ~&214625660372&~; - ~&5972376&~ (timerMode) { - remainMs = totalMs; + _timerManager.~&6504295855&~(); + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.remainMs = _timerManager.totalMs; } ~&6503784146&~ { - totalMs = 0; + _timerManager.totalMs = 0; + } + _timerManager.refresh(); + } + + /* Alarm management*/ + function addAlarm(~&180977&~, ~&180982&~) { + ~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: ~&180982&~, ~&233726547792244&~: ~&6504329801&~ }; + _timerManager.alarms = _timerManager.alarms.~&7082546043425&~([~&180970&~]); + _timerManager.nextAlarmId++; + _timerManager.saveAlarms(); + } + + function removeAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&7082656280847&~(function(~&180970&~) { + ~&7083121450889&~ ~&180970&~.~&5972374&~ !== ~&5972374&~; + }); + _timerManager.saveAlarms(); + } + + function toggleAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&197092711&~(function(~&180970&~) { + ~&5972376&~ (~&180970&~.~&5972374&~ !== ~&5972374&~) ~&7083121450889&~ ~&180970&~; + ~&7083121450889&~ { ~&5972374&~: ~&180970&~.~&5972374&~, hour: ~&180970&~.hour, minute: ~&180970&~.minute, ~&233726547792244&~: !~&180970&~.~&233726547792244&~ }; + }); + _timerManager.saveAlarms(); + } + + function dismissAlarmNotification() { + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.alarmNotificationText = ""; + } + + function saveAlarms() { + ~&197102514&~ payload = { + alarms: _timerManager.alarms, + nextAlarmId: _timerManager.nextAlarmId, + blinkLightOnNotification: _timerManager.blinkLightOnNotification + }; + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("PUT", "file:///home/root/alarms.json"); + xhr.~&6504279475&~(~&6502785411&~.~&254548178208422824&~(payload)); + } + + function loadAlarms() { + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("GET", "file:///home/root/alarms.json"); + xhr.onreadystatechange = function() { + ~&5972376&~ (xhr.readyState === XMLHttpRequest.DONE) { + try { + ~&197102514&~ ~&6503736259&~ = ~&6502785411&~.parse(xhr.responseText); + _timerManager.alarms = ~&6503736259&~.alarms || []; + _timerManager.nextAlarmId = ~&6503736259&~.nextAlarmId || 1; + _timerManager.blinkLightOnNotification = ~&6503736259&~.blinkLightOnNotification || ~&214625660372&~; + } catch (~&180974&~) { + _timerManager.alarms = []; + _timerManager.nextAlarmId = 1; + } + } + }; + xhr.~&6504279475&~(); + } + + ~&214604601930&~ { + ~&5972374&~: _alarmChecker + ~&7713147298280334&~: 5000 + ~&7083121289162&~: ~&6504329801&~ + ~&233743626668842&~: ~&6504329801&~ + ~&495358363329399331&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + /* Use an absolute epoch-minute (not hour*60+minute) so that a recurring*/ + /* alarm can fire again on the next day instead of being permanently*/ + /* suppressed once it has matched lastNotifiedMinute.*/ + ~&197102514&~ nowMinute = ~&6502909715&~.~&214626058827&~(~&180973&~.getTime() / 60000); + ~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~; + + ~&197102514&~ ~&180977&~ = ~&180973&~.getHours(); + ~&197102514&~ ~&180982&~ = ~&180973&~.getMinutes(); + ~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) { + ~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~]; + ~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === ~&180982&~) { + _timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); + _timerManager.~&16765420033347753489&~ = ~&6504329801&~; + _timerManager.lastNotifiedMinute = nowMinute; + ~&214621519406&~; + } + } } - refresh(); } ~&214604601930&~ { @@ -71,6 +165,7 @@ AFFECT [[1658694193319203921]] ~&7713147298280334&~: 100 ~&7083121289162&~: ~&6504329801&~ ~&495358363329399331&~: { + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; ~&5972376&~ (_timerManager.timerMode) { _timerManager.remainMs -= 100; ~&5972376&~ (_timerManager.remainMs <= 0) { @@ -84,6 +179,10 @@ AFFECT [[1658694193319203921]] _timerManager.refresh(); } } + + ~&254480451320573660&~.~&495334332051582499&~: { + _timerManager.loadAlarms(); + } } } END TRAVERSE @@ -93,212 +192,576 @@ AFFECT [[12542166428983872557]] TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]] LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]] INSERT { - ~&425121728314878811&~.~&15740235808997988493&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - } - - ~&14125623155555875541&~ { - ~&5972374&~: _timerUI + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - /* Mode selector tabs */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: 0 + ~&14125623155555875541&~ { + ~&5972374&~: _timerUI + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ }, - { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ } - ] - ~&7712922269353028&~: ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 68 + ~&425121728314878811&~.~&15740235808997988493&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + } - readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer + /* Mode selector tabs*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: 0 - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ - ~&6503823200&~.~&254543497768871654&~: 24 - ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer; - ~&5972376&~ (!~&254539508423767444&~.isTimer) { - ~&7082020628281&~.timerManager.totalMs = 0; - } - ~&7082020628281&~.timerManager.refresh(); + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ }, + { ~&197101097&~: "Chrono", ~&6504074414&~: "chrono" }, + { ~&197101097&~: "Alarm", ~&6504074414&~: "alarm" } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 68 + + readonly property ~&6503679477&~ ~&7082453764421&~: ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~ ? !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode + : ~&254539508423767444&~.~&6504074414&~ === "chrono" ? !~&7082020628281&~.timerManager.alarmMode && !~&7082020628281&~.timerManager.timerMode + : ~&7082020628281&~.timerManager.alarmMode + + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 24 + ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "alarm") { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.alarmMode = ~&6504329801&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.alarmMode = ~&214625660372&~; + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~; + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "chrono") { + ~&7082020628281&~.timerManager.totalMs = 0; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + ~&254501108490678590&~ { + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&7082729686082&~: 3 + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } - } - ~&254501108490678590&~ { - ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ - ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ - ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ - ~&7082729686082&~: 3 - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } } } - } - /* Time display (fixed width to avoid resizing) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~ - ~&7081629735527&~.~&7797818826744279624&~: 300 - ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ - ~&6503165774&~ { - ~&5972374&~: _display - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ - ~&6503823200&~.~&254543497768871654&~: 56 - ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight - ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ - ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + /* Time display*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + ~&6503165774&~ { + ~&5972374&~: _display + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ + ~&6503823200&~.~&254543497768871654&~: 56 + ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } } - } - /* Preset buttons (timer mode only) */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode + /* Preset buttons (timer mode only)*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, - { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, - { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, - { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, - { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } - ] - ~&7712922269353028&~: ~&6502786168&~ { + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, + { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, + { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, + { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, + { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; + ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { + ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + } + } + + /* Control buttons*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + + /* Add/Set toggle (timer only)*/ + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode ~&254501108490678590&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&7083116119249&~: 8 - ~&214622605608&~: "#EEEEEE" + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; + } + } + } + + /* Reset*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&"6968812144639225076&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() + } + } + + /* Start / Stop*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ } ~&6503165774&~ { ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" ~&6503823200&~.~&254543497768871654&~: 20 ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); + } + } + } + } + + /* Alarm mode*/ + ~&14125623155555875541&~ { + ~&5972374&~: _alarmCol + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmMode + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 80 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _radioIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _radioIcon.~&214640173127&~ + ~&233721384511543&~.~&214640173127&~: _trashIcon.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&490371291080887915&~: 12 + ~&16491662607465103678&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 28 + ~&6503823200&~.~&7083316716977&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&6502673216&~.~&6502529386&~ : ~&6502673216&~.~&7081724354802&~ + ~&214622605608&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _trashIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&6503165774&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarms.~&7082886407723&~ === 0 + ~&6504315758&~: "No alarms set" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&214622605608&~: "#888888" + ~&8400129142283184211&~: 20 + ~&1353514028756047605&~: 20 + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Add alarms" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } ~&254494525842443467&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; - ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { - ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; - } ~&6503784146&~ { - ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; - } - ~&7082020628281&~.timerManager.refresh(); + ~&6504254477&~.~&2766288418351025740&~.~&214622501183&~(); + ~&6504254477&~.~&2766288418351025740&~.~&6504147419&~(~&"3271012201642534810&~); } } } } } - - /* Control buttons */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - - /* Add/Set toggle (timer only) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; - } - } - } - - /* Reset */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&"6968812144639225076&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() - } - } - - /* Start / Stop */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ - } - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" - ~&6503823200&~.~&254543497768871654&~: 20 - ~&6503823200&~.~&6503679370&~: ~&6504329801&~ - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); - } - } - } - } } } END TRAVERSE END AFFECT -; Notification bar when timer finishes - visible in all modes +; Alarm management inside system clock settings (inserted before the info message for more space) +AFFECT /qt/qml/xofm/modules/systemclock/qml/window/SettingsInfoWindow.qml + TRAVERSE [[7711468349764991]]#[[6504254477]] > [[8397788359424131273]] > [[14125623155555875541]]#[[8399784311425937276]] + LOCATE AFTER [[425121728314878811.214599571833]]#[[254526274719339159]] + INSERT { + ~&425121728314878811&~.~&214604609771&~ { + ~&6504315758&~: "Alarms" + ~&6504337259&~: ~&425121728314878811&~.~&214604609771&~.~&214594832564&~ + ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&233748750575870&~ + } + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 56 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _alarmIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 40 + ~&7082729686082&~: 40 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7424604169206955460&~ + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _alarmIcon.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&233721384511543&~.~&1765033595104803723&~: 1 + ~&490371291080887915&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 24 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _toggleAlarmIcon + ~&233721384511543&~.~&214640173127&~: _deleteAlarmIcon.~&6504027668&~ + ~&233721384511543&~.~&499747351624466981&~: 12 + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _deleteAlarmIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&5972374&~: _addAlarmPanel + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Add alarm" + ~&8399601734642709923&~: ~&"15094524446772001204&~ + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504337259&~: ~&254477762679831355&~.~&7081261925573&~.~&254547519794454865&~ + ~&6504315758&~: ~&6504222003&~("Add") + ~&254542236275632405&~: { + _addAlarmPanel.~&9195823055201242195&~ = !_addAlarmPanel.~&9195823055201242195&~; + } + } + ~&9195823055201242195&~: ~&214625660372&~ + ~&8399254548634699250&~: ~&14125623155555875541&~ { + ~&214646099849&~: _addAlarmPanel.~&214646099849&~ + ~&233744706647566&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 280 + + ~&14975672296977510442&~ { + ~&5972374&~: _alarmTimeSpinners + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: _nowBtn.~&6504027668&~ + ~&233721384511543&~.~&197100796&~: ~&7083038346995&~.~&197100796&~ + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&499747351624466981&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + ~&214628545114&~: 8 + ~&233736699967534&~: 0 + ~&8399894257374503713&~: function(~&180977&~) { _alarmTimeSpinners.~&214628545114&~ = ~&180977&~; } + ~&16346529800820831925&~: function(~&180982&~) { _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; } + } + + ~&6502786168&~ { + ~&5972374&~: _nowBtn + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 80 + ~&7082729686082&~: 48 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Now" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + _alarmTimeSpinners.~&214628545114&~ = ~&180973&~.getHours(); + _alarmTimeSpinners.~&233736699967534&~ = ~&180973&~.getMinutes(); + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [0, 15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + _alarmTimeSpinners.~&233736699967534&~ = ~&254539508423767444&~; + } + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&"180916&~ + ~&254539508423767444&~ + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180982&~ = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~; + ~&5972376&~ (~&180982&~ >= 60) { ~&180982&~ -= 60; } + _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; + } + } + } + } + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Save alarm" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addAlarm(_alarmTimeSpinners.~&214628545114&~, _alarmTimeSpinners.~&233736699967534&~); + _addAlarmPanel.~&9195823055201242195&~ = ~&214625660372&~; + } + } + } + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Flash light" + ~&478136262235079021&~: "Blink the reading light when the timer ends or an alarm triggers" + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504315758&~: ~&7082020628281&~.timerManager.blinkLightOnNotification ? ~&"5971526&~ : ~&"197060196&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.blinkLightOnNotification = !~&7082020628281&~.timerManager.blinkLightOnNotification + } + } + } + END TRAVERSE +END AFFECT + +; Notification bar for timer finish and alarm triggers AFFECT [[2328484894988065446]] IMPORT [[233700934949963.233693781272506]] [[180922.180921]] + IMPORT [[6504469795.233736922911970.214633057601.214626274418]] [[180922.180921]] TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]] LOCATE AFTER ALL @@ -308,16 +771,51 @@ AFFECT [[2328484894988065446]] ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~ + + ~&13733777459642361598&~: { + ~&5972376&~ (~&233748328658231&~ && ~&7082020628281&~.timerManager.blinkLightOnNotification) { + _blinkTimer.~&6504295855&~(); + _blinkTimer.~&214618014052&~ = 0; + _blinkTimer.~&214641748151&~(); + } + } + + ~&214604601930&~ { + ~&5972374&~: _blinkTimer + ~&7713147298280334&~: 1000 /* 1 sec*/ + ~&7083121289162&~: ~&6504329801&~ + property ~&197088788&~ ~&214618014052&~: 0 + property ~&6504243117&~ _savedValue: 0 + ~&495358363329399331&~: { + ~&197102514&~ l = ~&7082020628281&~.timerManager._blinkLight; + ~&5972376&~ (!l) { ~&6504295855&~(); ~&7083121450889&~; } + ~&5972376&~ (~&214618014052&~ >= 6) { + ~&6504295855&~(); + l.~&214644635174&~ = _savedValue; + ~&214618014052&~ = 0; + ~&7083121450889&~; + } + ~&5972376&~ (~&214618014052&~ === 0) { + _savedValue = l.~&214644635174&~; + } + l.~&214644635174&~ = ~&214618014052&~ % 2 === 0 ? 100 : 0; + ~&214618014052&~++; + } + } ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ { - ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" + ? "Alarm at " + ~&7082020628281&~.timerManager.alarmNotificationText + : "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ } + /* Timer buttons - hidden during alarm*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: ~&"233701679664206&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.doReset(); @@ -325,9 +823,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+1min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 60000; @@ -337,9 +838,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+5min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 300000; @@ -349,15 +853,32 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } + /* Universal Close / Dismiss*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { - ~&6504315758&~: ~&"214584551711&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~ ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (~&7082020628281&~.timerManager.alarmNotificationText !== "") { + ~&7082020628281&~.timerManager.dismissAlarmNotification(); + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + } } } } } END TRAVERSE END AFFECT + +; Capture Light reference from the QuickSettingsSlider so we can blink it +AFFECT [[9830508555522680663]] + TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]] + LOCATE AFTER ALL + INSERT { + ~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~; + } + END TRAVERSE +END AFFECT diff --git a/3.25.1.1/quickSettingsTimer.qmd b/3.25.1.1/quickSettingsTimer.qmd index 5d79679..9c415cf 100644 --- a/3.25.1.1/quickSettingsTimer.qmd +++ b/3.25.1.1/quickSettingsTimer.qmd @@ -1,5 +1,5 @@ -; Quick Settings Timer/Chrono -; Adds a countdown timer and stopwatch to the quick settings panel +; Quick Settings Timer/Chrono/Alarm +; Adds a countdown timer, stopwatch, and alarm system to the quick settings panel ; Timer state lives in Values.timerManager so it persists across menu opens/closes AFFECT [[1658694193319203921]] @@ -18,6 +18,15 @@ AFFECT [[1658694193319203921]] property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~ property ~&197088788&~ presetMs: 60000 property ~&6503679477&~ addMode: ~&6504329801&~ + property ~&6503679477&~ blinkLightOnNotification: ~&214625660372&~ + property ~&197102514&~ _blinkLight: ~&6504117156&~ + + /* Alarm state*/ + property ~&6503679477&~ alarmMode: ~&214625660372&~ + property ~&197102514&~ alarms: [] + property ~&197088788&~ nextAlarmId: 1 + property ~&7083178290016&~ alarmNotificationText: "" + property ~&197088788&~ lastNotifiedMinute: -1 /* absolute epoch-minute of the last fired alarm*/ function fmt(ms) { ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms); @@ -26,7 +35,6 @@ AFFECT [[1658694193319203921]] ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000); ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); - ~&5972376&~ (~&180977&~ > 0) { ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss; } @@ -34,36 +42,122 @@ AFFECT [[1658694193319203921]] } function refresh() { - ~&5972376&~ (timerMode) { - ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0); + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0); } ~&6503784146&~ { - ~&478322454160073828&~ = fmt(totalMs); + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs); } } function go() { - ~&5972376&~ (timerMode) { - ~&5972376&~ (remainMs <= 0) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + ~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~; } - ~&16765420033347753489&~ = ~&214625660372&~; - isRunning = ~&6504329801&~; + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.isRunning = ~&6504329801&~; _tick.~&214641748151&~(); } function ~&6504295855&~() { - isRunning = ~&214625660372&~; + _timerManager.isRunning = ~&214625660372&~; _tick.~&6504295855&~(); } function doReset() { - ~&6504295855&~(); - ~&16765420033347753489&~ = ~&214625660372&~; - ~&5972376&~ (timerMode) { - remainMs = totalMs; + _timerManager.~&6504295855&~(); + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.remainMs = _timerManager.totalMs; } ~&6503784146&~ { - totalMs = 0; + _timerManager.totalMs = 0; + } + _timerManager.refresh(); + } + + /* Alarm management*/ + function addAlarm(~&180977&~, ~&180982&~) { + ~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: ~&180982&~, ~&233726547792244&~: ~&6504329801&~ }; + _timerManager.alarms = _timerManager.alarms.~&7082546043425&~([~&180970&~]); + _timerManager.nextAlarmId++; + _timerManager.saveAlarms(); + } + + function removeAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&7082656280847&~(function(~&180970&~) { + ~&7083121450889&~ ~&180970&~.~&5972374&~ !== ~&5972374&~; + }); + _timerManager.saveAlarms(); + } + + function toggleAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&197092711&~(function(~&180970&~) { + ~&5972376&~ (~&180970&~.~&5972374&~ !== ~&5972374&~) ~&7083121450889&~ ~&180970&~; + ~&7083121450889&~ { ~&5972374&~: ~&180970&~.~&5972374&~, hour: ~&180970&~.hour, minute: ~&180970&~.minute, ~&233726547792244&~: !~&180970&~.~&233726547792244&~ }; + }); + _timerManager.saveAlarms(); + } + + function dismissAlarmNotification() { + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.alarmNotificationText = ""; + } + + function saveAlarms() { + ~&197102514&~ payload = { + alarms: _timerManager.alarms, + nextAlarmId: _timerManager.nextAlarmId, + blinkLightOnNotification: _timerManager.blinkLightOnNotification + }; + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("PUT", "file:///home/root/alarms.json"); + xhr.~&6504279475&~(~&6502785411&~.~&254548178208422824&~(payload)); + } + + function loadAlarms() { + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("GET", "file:///home/root/alarms.json"); + xhr.onreadystatechange = function() { + ~&5972376&~ (xhr.readyState === XMLHttpRequest.DONE) { + try { + ~&197102514&~ ~&6503736259&~ = ~&6502785411&~.parse(xhr.responseText); + _timerManager.alarms = ~&6503736259&~.alarms || []; + _timerManager.nextAlarmId = ~&6503736259&~.nextAlarmId || 1; + _timerManager.blinkLightOnNotification = ~&6503736259&~.blinkLightOnNotification || ~&214625660372&~; + } catch (~&180974&~) { + _timerManager.alarms = []; + _timerManager.nextAlarmId = 1; + } + } + }; + xhr.~&6504279475&~(); + } + + ~&214604601930&~ { + ~&5972374&~: _alarmChecker + ~&7713147298280334&~: 5000 + ~&7083121289162&~: ~&6504329801&~ + ~&233743626668842&~: ~&6504329801&~ + ~&495358363329399331&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + /* Use an absolute epoch-minute (not hour*60+minute) so that a recurring*/ + /* alarm can fire again on the next day instead of being permanently*/ + /* suppressed once it has matched lastNotifiedMinute.*/ + ~&197102514&~ nowMinute = ~&6502909715&~.~&214626058827&~(~&180973&~.getTime() / 60000); + ~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~; + + ~&197102514&~ ~&180977&~ = ~&180973&~.getHours(); + ~&197102514&~ ~&180982&~ = ~&180973&~.getMinutes(); + ~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) { + ~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~]; + ~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === ~&180982&~) { + _timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); + _timerManager.~&16765420033347753489&~ = ~&6504329801&~; + _timerManager.lastNotifiedMinute = nowMinute; + ~&214621519406&~; + } + } } - refresh(); } ~&214604601930&~ { @@ -71,6 +165,7 @@ AFFECT [[1658694193319203921]] ~&7713147298280334&~: 100 ~&7083121289162&~: ~&6504329801&~ ~&495358363329399331&~: { + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; ~&5972376&~ (_timerManager.timerMode) { _timerManager.remainMs -= 100; ~&5972376&~ (_timerManager.remainMs <= 0) { @@ -84,6 +179,10 @@ AFFECT [[1658694193319203921]] _timerManager.refresh(); } } + + ~&254480451320573660&~.~&495334332051582499&~: { + _timerManager.loadAlarms(); + } } } END TRAVERSE @@ -93,212 +192,576 @@ AFFECT [[12542166428983872557]] TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]] LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]] INSERT { - ~&425121728314878811&~.~&15740235808997988493&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - } - - ~&14125623155555875541&~ { - ~&5972374&~: _timerUI + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - /* Mode selector tabs */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: 0 + ~&14125623155555875541&~ { + ~&5972374&~: _timerUI + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ }, - { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ } - ] - ~&7712922269353028&~: ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 68 + ~&425121728314878811&~.~&15740235808997988493&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + } - readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer + /* Mode selector tabs*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: 0 - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ - ~&6503823200&~.~&254543497768871654&~: 24 - ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer; - ~&5972376&~ (!~&254539508423767444&~.isTimer) { - ~&7082020628281&~.timerManager.totalMs = 0; - } - ~&7082020628281&~.timerManager.refresh(); + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ }, + { ~&197101097&~: "Chrono", ~&6504074414&~: "chrono" }, + { ~&197101097&~: "Alarm", ~&6504074414&~: "alarm" } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 68 + + readonly property ~&6503679477&~ ~&7082453764421&~: ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~ ? !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode + : ~&254539508423767444&~.~&6504074414&~ === "chrono" ? !~&7082020628281&~.timerManager.alarmMode && !~&7082020628281&~.timerManager.timerMode + : ~&7082020628281&~.timerManager.alarmMode + + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 24 + ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "alarm") { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.alarmMode = ~&6504329801&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.alarmMode = ~&214625660372&~; + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~; + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "chrono") { + ~&7082020628281&~.timerManager.totalMs = 0; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + ~&254501108490678590&~ { + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&7082729686082&~: 3 + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } - } - ~&254501108490678590&~ { - ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ - ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ - ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ - ~&7082729686082&~: 3 - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } } } - } - /* Time display (fixed width to avoid resizing) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~ - ~&7081629735527&~.~&7797818826744279624&~: 300 - ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ - ~&6503165774&~ { - ~&5972374&~: _display - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ - ~&6503823200&~.~&254543497768871654&~: 56 - ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight - ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ - ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + /* Time display*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + ~&6503165774&~ { + ~&5972374&~: _display + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ + ~&6503823200&~.~&254543497768871654&~: 56 + ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } } - } - /* Preset buttons (timer mode only) */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode + /* Preset buttons (timer mode only)*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, - { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, - { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, - { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, - { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } - ] - ~&7712922269353028&~: ~&6502786168&~ { + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, + { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, + { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, + { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, + { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; + ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { + ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + } + } + + /* Control buttons*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + + /* Add/Set toggle (timer only)*/ + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode ~&254501108490678590&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&7083116119249&~: 8 - ~&214622605608&~: "#EEEEEE" + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; + } + } + } + + /* Reset*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&"6968812144639225076&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() + } + } + + /* Start / Stop*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ } ~&6503165774&~ { ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" ~&6503823200&~.~&254543497768871654&~: 20 ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); + } + } + } + } + + /* Alarm mode*/ + ~&14125623155555875541&~ { + ~&5972374&~: _alarmCol + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmMode + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 80 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _radioIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _radioIcon.~&214640173127&~ + ~&233721384511543&~.~&214640173127&~: _trashIcon.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&490371291080887915&~: 12 + ~&16491662607465103678&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 28 + ~&6503823200&~.~&7083316716977&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&6502673216&~.~&6502529386&~ : ~&6502673216&~.~&7081724354802&~ + ~&214622605608&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _trashIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&6503165774&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarms.~&7082886407723&~ === 0 + ~&6504315758&~: "No alarms set" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&214622605608&~: "#888888" + ~&8400129142283184211&~: 20 + ~&1353514028756047605&~: 20 + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Add alarms" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } ~&254494525842443467&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; - ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { - ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; - } ~&6503784146&~ { - ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; - } - ~&7082020628281&~.timerManager.refresh(); + ~&6504254477&~.~&2766288418351025740&~.~&214622501183&~(); + ~&6504254477&~.~&2766288418351025740&~.~&6504147419&~(~&"3271012201642534810&~); } } } } } - - /* Control buttons */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - - /* Add/Set toggle (timer only) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; - } - } - } - - /* Reset */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&"6968812144639225076&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() - } - } - - /* Start / Stop */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ - } - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" - ~&6503823200&~.~&254543497768871654&~: 20 - ~&6503823200&~.~&6503679370&~: ~&6504329801&~ - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); - } - } - } - } } } END TRAVERSE END AFFECT -; Notification bar when timer finishes - visible in all modes +; Alarm management inside system clock settings (inserted before the info message for more space) +AFFECT /qt/qml/xofm/modules/systemclock/qml/window/SettingsInfoWindow.qml + TRAVERSE [[7711468349764991]]#[[6504254477]] > [[8397788359424131273]] > [[14125623155555875541]]#[[8399784311425937276]] + LOCATE AFTER [[425121728314878811.214599571833]]#[[254526274719339159]] + INSERT { + ~&425121728314878811&~.~&214604609771&~ { + ~&6504315758&~: "Alarms" + ~&6504337259&~: ~&425121728314878811&~.~&214604609771&~.~&214594832564&~ + ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&233748750575870&~ + } + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 56 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _alarmIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 40 + ~&7082729686082&~: 40 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7424604169206955460&~ + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _alarmIcon.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&233721384511543&~.~&1765033595104803723&~: 1 + ~&490371291080887915&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 24 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _toggleAlarmIcon + ~&233721384511543&~.~&214640173127&~: _deleteAlarmIcon.~&6504027668&~ + ~&233721384511543&~.~&499747351624466981&~: 12 + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _deleteAlarmIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&5972374&~: _addAlarmPanel + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Add alarm" + ~&8399601734642709923&~: ~&"15094524446772001204&~ + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504337259&~: ~&254477762679831355&~.~&7081261925573&~.~&254547519794454865&~ + ~&6504315758&~: ~&6504222003&~("Add") + ~&254542236275632405&~: { + _addAlarmPanel.~&9195823055201242195&~ = !_addAlarmPanel.~&9195823055201242195&~; + } + } + ~&9195823055201242195&~: ~&214625660372&~ + ~&8399254548634699250&~: ~&14125623155555875541&~ { + ~&214646099849&~: _addAlarmPanel.~&214646099849&~ + ~&233744706647566&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 280 + + ~&14975672296977510442&~ { + ~&5972374&~: _alarmTimeSpinners + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: _nowBtn.~&6504027668&~ + ~&233721384511543&~.~&197100796&~: ~&7083038346995&~.~&197100796&~ + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&499747351624466981&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + ~&214628545114&~: 8 + ~&233736699967534&~: 0 + ~&8399894257374503713&~: function(~&180977&~) { _alarmTimeSpinners.~&214628545114&~ = ~&180977&~; } + ~&16346529800820831925&~: function(~&180982&~) { _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; } + } + + ~&6502786168&~ { + ~&5972374&~: _nowBtn + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 80 + ~&7082729686082&~: 48 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Now" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + _alarmTimeSpinners.~&214628545114&~ = ~&180973&~.getHours(); + _alarmTimeSpinners.~&233736699967534&~ = ~&180973&~.getMinutes(); + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [0, 15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + _alarmTimeSpinners.~&233736699967534&~ = ~&254539508423767444&~; + } + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&"180916&~ + ~&254539508423767444&~ + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180982&~ = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~; + ~&5972376&~ (~&180982&~ >= 60) { ~&180982&~ -= 60; } + _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; + } + } + } + } + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Save alarm" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addAlarm(_alarmTimeSpinners.~&214628545114&~, _alarmTimeSpinners.~&233736699967534&~); + _addAlarmPanel.~&9195823055201242195&~ = ~&214625660372&~; + } + } + } + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Flash light" + ~&478136262235079021&~: "Blink the reading light when the timer ends or an alarm triggers" + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504315758&~: ~&7082020628281&~.timerManager.blinkLightOnNotification ? ~&"5971526&~ : ~&"197060196&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.blinkLightOnNotification = !~&7082020628281&~.timerManager.blinkLightOnNotification + } + } + } + END TRAVERSE +END AFFECT + +; Notification bar for timer finish and alarm triggers AFFECT [[2328484894988065446]] IMPORT [[233700934949963.233693781272506]] [[180922.180921]] + IMPORT [[6504469795.233736922911970.214633057601.214626274418]] [[180922.180921]] TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]] LOCATE AFTER ALL @@ -308,16 +771,51 @@ AFFECT [[2328484894988065446]] ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~ + + ~&13733777459642361598&~: { + ~&5972376&~ (~&233748328658231&~ && ~&7082020628281&~.timerManager.blinkLightOnNotification) { + _blinkTimer.~&6504295855&~(); + _blinkTimer.~&214618014052&~ = 0; + _blinkTimer.~&214641748151&~(); + } + } + + ~&214604601930&~ { + ~&5972374&~: _blinkTimer + ~&7713147298280334&~: 1000 /* 1 sec*/ + ~&7083121289162&~: ~&6504329801&~ + property ~&197088788&~ ~&214618014052&~: 0 + property ~&6504243117&~ _savedValue: 0 + ~&495358363329399331&~: { + ~&197102514&~ l = ~&7082020628281&~.timerManager._blinkLight; + ~&5972376&~ (!l) { ~&6504295855&~(); ~&7083121450889&~; } + ~&5972376&~ (~&214618014052&~ >= 6) { + ~&6504295855&~(); + l.~&214644635174&~ = _savedValue; + ~&214618014052&~ = 0; + ~&7083121450889&~; + } + ~&5972376&~ (~&214618014052&~ === 0) { + _savedValue = l.~&214644635174&~; + } + l.~&214644635174&~ = ~&214618014052&~ % 2 === 0 ? 100 : 0; + ~&214618014052&~++; + } + } ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ { - ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" + ? "Alarm at " + ~&7082020628281&~.timerManager.alarmNotificationText + : "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ } + /* Timer buttons - hidden during alarm*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: ~&"233701679664206&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.doReset(); @@ -325,9 +823,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+1min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 60000; @@ -337,9 +838,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+5min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 300000; @@ -349,15 +853,32 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } + /* Universal Close / Dismiss*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { - ~&6504315758&~: ~&"214584551711&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~ ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (~&7082020628281&~.timerManager.alarmNotificationText !== "") { + ~&7082020628281&~.timerManager.dismissAlarmNotification(); + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + } } } } } END TRAVERSE END AFFECT + +; Capture Light reference from the QuickSettingsSlider so we can blink it +AFFECT [[9830508555522680663]] + TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]] + LOCATE AFTER ALL + INSERT { + ~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~; + } + END TRAVERSE +END AFFECT diff --git a/3.26.0.68/quickSettingsTimer.qmd b/3.26.0.68/quickSettingsTimer.qmd index 5d79679..25b15a8 100644 --- a/3.26.0.68/quickSettingsTimer.qmd +++ b/3.26.0.68/quickSettingsTimer.qmd @@ -1,5 +1,5 @@ -; Quick Settings Timer/Chrono -; Adds a countdown timer and stopwatch to the quick settings panel +; Quick Settings Timer/Chrono/Alarm +; Adds a countdown timer, stopwatch, and alarm system to the quick settings panel ; Timer state lives in Values.timerManager so it persists across menu opens/closes AFFECT [[1658694193319203921]] @@ -18,6 +18,15 @@ AFFECT [[1658694193319203921]] property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~ property ~&197088788&~ presetMs: 60000 property ~&6503679477&~ addMode: ~&6504329801&~ + property ~&6503679477&~ blinkLightOnNotification: ~&214625660372&~ + property ~&197102514&~ _blinkLight: ~&6504117156&~ + + /* Alarm state*/ + property ~&6503679477&~ alarmMode: ~&214625660372&~ + property ~&197102514&~ alarms: [] + property ~&197088788&~ nextAlarmId: 1 + property ~&7083178290016&~ alarmNotificationText: "" + property ~&197088788&~ lastNotifiedMinute: -1 /* absolute epoch-minute of the last fired alarm*/ function fmt(ms) { ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms); @@ -26,7 +35,6 @@ AFFECT [[1658694193319203921]] ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000); ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); - ~&5972376&~ (~&180977&~ > 0) { ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss; } @@ -34,36 +42,122 @@ AFFECT [[1658694193319203921]] } function refresh() { - ~&5972376&~ (timerMode) { - ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0); + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0); } ~&6503784146&~ { - ~&478322454160073828&~ = fmt(totalMs); + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs); } } function go() { - ~&5972376&~ (timerMode) { - ~&5972376&~ (remainMs <= 0) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + ~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~; } - ~&16765420033347753489&~ = ~&214625660372&~; - isRunning = ~&6504329801&~; + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.isRunning = ~&6504329801&~; _tick.~&214641748151&~(); } function ~&6504295855&~() { - isRunning = ~&214625660372&~; + _timerManager.isRunning = ~&214625660372&~; _tick.~&6504295855&~(); } function doReset() { - ~&6504295855&~(); - ~&16765420033347753489&~ = ~&214625660372&~; - ~&5972376&~ (timerMode) { - remainMs = totalMs; + _timerManager.~&6504295855&~(); + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.remainMs = _timerManager.totalMs; } ~&6503784146&~ { - totalMs = 0; + _timerManager.totalMs = 0; + } + _timerManager.refresh(); + } + + /* Alarm management*/ + function addAlarm(~&180977&~, ~&180982&~) { + ~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: ~&180982&~, ~&233726547792244&~: ~&6504329801&~ }; + _timerManager.alarms = _timerManager.alarms.~&7082546043425&~([~&180970&~]); + _timerManager.nextAlarmId++; + _timerManager.saveAlarms(); + } + + function removeAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&7082656280847&~(function(~&180970&~) { + ~&7083121450889&~ ~&180970&~.~&5972374&~ !== ~&5972374&~; + }); + _timerManager.saveAlarms(); + } + + function toggleAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&197092711&~(function(~&180970&~) { + ~&5972376&~ (~&180970&~.~&5972374&~ !== ~&5972374&~) ~&7083121450889&~ ~&180970&~; + ~&7083121450889&~ { ~&5972374&~: ~&180970&~.~&5972374&~, hour: ~&180970&~.hour, minute: ~&180970&~.minute, ~&233726547792244&~: !~&180970&~.~&233726547792244&~ }; + }); + _timerManager.saveAlarms(); + } + + function dismissAlarmNotification() { + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.alarmNotificationText = ""; + } + + function saveAlarms() { + ~&197102514&~ payload = { + alarms: _timerManager.alarms, + nextAlarmId: _timerManager.nextAlarmId, + blinkLightOnNotification: _timerManager.blinkLightOnNotification + }; + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("PUT", "file:///home/root/alarms.json"); + xhr.~&6504279475&~(~&6502785411&~.~&254548178208422824&~(payload)); + } + + function loadAlarms() { + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("GET", "file:///home/root/alarms.json"); + xhr.onreadystatechange = function() { + ~&5972376&~ (xhr.readyState === XMLHttpRequest.DONE) { + try { + ~&197102514&~ ~&6503736259&~ = ~&6502785411&~.parse(xhr.responseText); + _timerManager.alarms = ~&6503736259&~.alarms || []; + _timerManager.nextAlarmId = ~&6503736259&~.nextAlarmId || 1; + _timerManager.blinkLightOnNotification = ~&6503736259&~.blinkLightOnNotification || ~&214625660372&~; + } catch (~&180974&~) { + _timerManager.alarms = []; + _timerManager.nextAlarmId = 1; + } + } + }; + xhr.~&6504279475&~(); + } + + ~&214604601930&~ { + ~&5972374&~: _alarmChecker + ~&7713147298280334&~: 5000 + ~&7083121289162&~: ~&6504329801&~ + ~&233743626668842&~: ~&6504329801&~ + ~&495358363329399331&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + /* Use an absolute epoch-minute (not hour*60+minute) so that a recurring*/ + /* alarm can fire again on the next day instead of being permanently*/ + /* suppressed once it has matched lastNotifiedMinute.*/ + ~&197102514&~ nowMinute = ~&6502909715&~.~&214626058827&~(~&180973&~.getTime() / 60000); + ~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~; + + ~&197102514&~ ~&180977&~ = ~&180973&~.getHours(); + ~&197102514&~ ~&180982&~ = ~&180973&~.getMinutes(); + ~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) { + ~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~]; + ~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === ~&180982&~) { + _timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); + _timerManager.~&16765420033347753489&~ = ~&6504329801&~; + _timerManager.lastNotifiedMinute = nowMinute; + ~&214621519406&~; + } + } } - refresh(); } ~&214604601930&~ { @@ -71,6 +165,7 @@ AFFECT [[1658694193319203921]] ~&7713147298280334&~: 100 ~&7083121289162&~: ~&6504329801&~ ~&495358363329399331&~: { + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; ~&5972376&~ (_timerManager.timerMode) { _timerManager.remainMs -= 100; ~&5972376&~ (_timerManager.remainMs <= 0) { @@ -84,6 +179,10 @@ AFFECT [[1658694193319203921]] _timerManager.refresh(); } } + + ~&254480451320573660&~.~&495334332051582499&~: { + _timerManager.loadAlarms(); + } } } END TRAVERSE @@ -93,212 +192,576 @@ AFFECT [[12542166428983872557]] TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]] LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]] INSERT { - ~&425121728314878811&~.~&15740235808997988493&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - } - - ~&14125623155555875541&~ { - ~&5972374&~: _timerUI + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - /* Mode selector tabs */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: 0 + ~&14125623155555875541&~ { + ~&5972374&~: _timerUI + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ }, - { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ } - ] - ~&7712922269353028&~: ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 68 + ~&425121728314878811&~.~&15740235808997988493&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + } - readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer + /* Mode selector tabs*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: 0 - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ - ~&6503823200&~.~&254543497768871654&~: 24 - ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer; - ~&5972376&~ (!~&254539508423767444&~.isTimer) { - ~&7082020628281&~.timerManager.totalMs = 0; - } - ~&7082020628281&~.timerManager.refresh(); + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ }, + { ~&197101097&~: "Chrono", ~&6504074414&~: "chrono" }, + { ~&197101097&~: "Alarm", ~&6504074414&~: "alarm" } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 68 + + readonly property ~&6503679477&~ ~&7082453764421&~: ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~ ? !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode + : ~&254539508423767444&~.~&6504074414&~ === "chrono" ? !~&7082020628281&~.timerManager.alarmMode && !~&7082020628281&~.timerManager.timerMode + : ~&7082020628281&~.timerManager.alarmMode + + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 24 + ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "alarm") { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.alarmMode = ~&6504329801&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.alarmMode = ~&214625660372&~; + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~; + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "chrono") { + ~&7082020628281&~.timerManager.totalMs = 0; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + ~&254501108490678590&~ { + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&7082729686082&~: 3 + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } - } - ~&254501108490678590&~ { - ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ - ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ - ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ - ~&7082729686082&~: 3 - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } } } - } - /* Time display (fixed width to avoid resizing) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~ - ~&7081629735527&~.~&7797818826744279624&~: 300 - ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ - ~&6503165774&~ { - ~&5972374&~: _display - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ - ~&6503823200&~.~&254543497768871654&~: 56 - ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight - ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ - ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + /* Time display*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + ~&6503165774&~ { + ~&5972374&~: _display + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ + ~&6503823200&~.~&254543497768871654&~: 56 + ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } } - } - /* Preset buttons (timer mode only) */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode + /* Preset buttons (timer mode only)*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, - { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, - { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, - { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, - { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } - ] - ~&7712922269353028&~: ~&6502786168&~ { + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, + { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, + { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, + { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, + { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; + ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { + ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + } + } + + /* Control buttons*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + + /* Add/Set toggle (timer only)*/ + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode ~&254501108490678590&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&7083116119249&~: 8 - ~&214622605608&~: "#EEEEEE" + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; + } + } + } + + /* Reset*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&"6968812144639225076&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() + } + } + + /* Start / Stop*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ } ~&6503165774&~ { ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" ~&6503823200&~.~&254543497768871654&~: 20 ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); + } + } + } + } + + /* Alarm mode*/ + ~&14125623155555875541&~ { + ~&5972374&~: _alarmCol + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmMode + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 80 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _radioIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _radioIcon.~&214640173127&~ + ~&233721384511543&~.~&214640173127&~: _trashIcon.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&490371291080887915&~: 12 + ~&16491662607465103678&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 28 + ~&6503823200&~.~&7083316716977&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&6502673216&~.~&6502529386&~ : ~&6502673216&~.~&7081724354802&~ + ~&214622605608&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _trashIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&6503165774&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarms.~&7082886407723&~ === 0 + ~&6504315758&~: "No alarms set" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&214622605608&~: "#888888" + ~&8400129142283184211&~: 20 + ~&1353514028756047605&~: 20 + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Add alarms" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } ~&254494525842443467&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; - ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { - ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; - } ~&6503784146&~ { - ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; - } - ~&7082020628281&~.timerManager.refresh(); + ~&6504254477&~.~&2766288418351025740&~.~&214622501183&~(); + ~&6504254477&~.~&2766288418351025740&~.~&6504147419&~(~&"3271012201642534810&~); } } } } } - - /* Control buttons */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - - /* Add/Set toggle (timer only) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; - } - } - } - - /* Reset */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&"6968812144639225076&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() - } - } - - /* Start / Stop */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ - } - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" - ~&6503823200&~.~&254543497768871654&~: 20 - ~&6503823200&~.~&6503679370&~: ~&6504329801&~ - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); - } - } - } - } } } END TRAVERSE END AFFECT -; Notification bar when timer finishes - visible in all modes +; Alarm management inside system clock settings (inserted before the info message for more space) +AFFECT [[15410910318338348835]] + TRAVERSE [[7711468349764991]]#[[6504254477]] > [[8397788359424131273]] > [[14125623155555875541]]#[[8399784311425937276]] + LOCATE AFTER [[425121728314878811.214599571833]]#[[254526274719339159]] + INSERT { + ~&425121728314878811&~.~&214604609771&~ { + ~&6504315758&~: "Alarms" + ~&6504337259&~: ~&425121728314878811&~.~&214604609771&~.~&214594832564&~ + ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&233748750575870&~ + } + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 56 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _alarmIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 40 + ~&7082729686082&~: 40 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7424604169206955460&~ + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _alarmIcon.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&233721384511543&~.~&1765033595104803723&~: 1 + ~&490371291080887915&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 24 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _toggleAlarmIcon + ~&233721384511543&~.~&214640173127&~: _deleteAlarmIcon.~&6504027668&~ + ~&233721384511543&~.~&499747351624466981&~: 12 + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _deleteAlarmIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&5972374&~: _addAlarmPanel + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Add alarm" + ~&8399601734642709923&~: ~&"15094524446772001204&~ + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504337259&~: ~&254477762679831355&~.~&7081261925573&~.~&254547519794454865&~ + ~&6504315758&~: ~&6504222003&~("Add") + ~&254542236275632405&~: { + _addAlarmPanel.~&9195823055201242195&~ = !_addAlarmPanel.~&9195823055201242195&~; + } + } + ~&9195823055201242195&~: ~&214625660372&~ + ~&8399254548634699250&~: ~&14125623155555875541&~ { + ~&214646099849&~: _addAlarmPanel.~&214646099849&~ + ~&233744706647566&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 280 + + ~&14975672296977510442&~ { + ~&5972374&~: _alarmTimeSpinners + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: _nowBtn.~&6504027668&~ + ~&233721384511543&~.~&197100796&~: ~&7083038346995&~.~&197100796&~ + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&499747351624466981&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + ~&214628545114&~: 8 + ~&233736699967534&~: 0 + ~&8399894257374503713&~: function(~&180977&~) { _alarmTimeSpinners.~&214628545114&~ = ~&180977&~; } + ~&16346529800820831925&~: function(~&180982&~) { _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; } + } + + ~&6502786168&~ { + ~&5972374&~: _nowBtn + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 80 + ~&7082729686082&~: 48 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Now" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + _alarmTimeSpinners.~&214628545114&~ = ~&180973&~.getHours(); + _alarmTimeSpinners.~&233736699967534&~ = ~&180973&~.getMinutes(); + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [0, 15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + _alarmTimeSpinners.~&233736699967534&~ = ~&254539508423767444&~; + } + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&"180916&~ + ~&254539508423767444&~ + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180982&~ = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~; + ~&5972376&~ (~&180982&~ >= 60) { ~&180982&~ -= 60; } + _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; + } + } + } + } + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Save alarm" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addAlarm(_alarmTimeSpinners.~&214628545114&~, _alarmTimeSpinners.~&233736699967534&~); + _addAlarmPanel.~&9195823055201242195&~ = ~&214625660372&~; + } + } + } + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Flash light" + ~&478136262235079021&~: "Blink the reading light when the timer ends or an alarm triggers" + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504315758&~: ~&7082020628281&~.timerManager.blinkLightOnNotification ? ~&"5971526&~ : ~&"197060196&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.blinkLightOnNotification = !~&7082020628281&~.timerManager.blinkLightOnNotification + } + } + } + END TRAVERSE +END AFFECT + +; Notification bar for timer finish and alarm triggers AFFECT [[2328484894988065446]] IMPORT [[233700934949963.233693781272506]] [[180922.180921]] + IMPORT [[6504469795.233736922911970.214633057601.214626274418]] [[180922.180921]] TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]] LOCATE AFTER ALL @@ -308,16 +771,51 @@ AFFECT [[2328484894988065446]] ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~ + + ~&13733777459642361598&~: { + ~&5972376&~ (~&233748328658231&~ && ~&7082020628281&~.timerManager.blinkLightOnNotification) { + _blinkTimer.~&6504295855&~(); + _blinkTimer.~&214618014052&~ = 0; + _blinkTimer.~&214641748151&~(); + } + } + + ~&214604601930&~ { + ~&5972374&~: _blinkTimer + ~&7713147298280334&~: 1000 /* 1 sec*/ + ~&7083121289162&~: ~&6504329801&~ + property ~&197088788&~ ~&214618014052&~: 0 + property ~&6504243117&~ _savedValue: 0 + ~&495358363329399331&~: { + ~&197102514&~ l = ~&7082020628281&~.timerManager._blinkLight; + ~&5972376&~ (!l) { ~&6504295855&~(); ~&7083121450889&~; } + ~&5972376&~ (~&214618014052&~ >= 6) { + ~&6504295855&~(); + l.~&214644635174&~ = _savedValue; + ~&214618014052&~ = 0; + ~&7083121450889&~; + } + ~&5972376&~ (~&214618014052&~ === 0) { + _savedValue = l.~&214644635174&~; + } + l.~&214644635174&~ = ~&214618014052&~ % 2 === 0 ? 100 : 0; + ~&214618014052&~++; + } + } ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ { - ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" + ? "Alarm at " + ~&7082020628281&~.timerManager.alarmNotificationText + : "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ } + /* Timer buttons - hidden during alarm*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: ~&"233701679664206&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.doReset(); @@ -325,9 +823,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+1min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 60000; @@ -337,9 +838,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+5min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 300000; @@ -349,15 +853,32 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } + /* Universal Close / Dismiss*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { - ~&6504315758&~: ~&"214584551711&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~ ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (~&7082020628281&~.timerManager.alarmNotificationText !== "") { + ~&7082020628281&~.timerManager.dismissAlarmNotification(); + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + } } } } } END TRAVERSE END AFFECT + +; Capture Light reference from the QuickSettingsSlider so we can blink it +AFFECT [[9830508555522680663]] + TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]] + LOCATE AFTER ALL + INSERT { + ~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~; + } + END TRAVERSE +END AFFECT diff --git a/3.27.1.0/quickSettingsTimer.qmd b/3.27.1.0/quickSettingsTimer.qmd index e4f012e..1be9d65 100644 --- a/3.27.1.0/quickSettingsTimer.qmd +++ b/3.27.1.0/quickSettingsTimer.qmd @@ -1,5 +1,5 @@ -; Quick Settings Timer/Chrono -; Adds a countdown timer and stopwatch to the quick settings panel +; Quick Settings Timer/Chrono/Alarm +; Adds a countdown timer, stopwatch, and alarm system to the quick settings panel ; Timer state lives in Values.timerManager so it persists across menu opens/closes AFFECT [[1658694193319203921]] @@ -18,6 +18,15 @@ AFFECT [[1658694193319203921]] property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~ property ~&197088788&~ presetMs: 60000 property ~&6503679477&~ addMode: ~&6504329801&~ + property ~&6503679477&~ blinkLightOnNotification: ~&214625660372&~ + property ~&197102514&~ _blinkLight: ~&6504117156&~ + + /* Alarm state*/ + property ~&6503679477&~ alarmMode: ~&214625660372&~ + property ~&197102514&~ alarms: [] + property ~&197088788&~ nextAlarmId: 1 + property ~&7083178290016&~ alarmNotificationText: "" + property ~&197088788&~ lastNotifiedMinute: -1 /* absolute epoch-minute of the last fired alarm*/ function fmt(~&5972521&~) { ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(~&5972521&~); @@ -26,7 +35,6 @@ AFFECT [[1658694193319203921]] ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000); ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); - ~&5972376&~ (~&180977&~ > 0) { ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss; } @@ -34,36 +42,122 @@ AFFECT [[1658694193319203921]] } function refresh() { - ~&5972376&~ (timerMode) { - ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0); + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0); } ~&6503784146&~ { - ~&478322454160073828&~ = fmt(totalMs); + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs); } } function go() { - ~&5972376&~ (timerMode) { - ~&5972376&~ (remainMs <= 0) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + ~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~; } - ~&16765420033347753489&~ = ~&214625660372&~; - isRunning = ~&6504329801&~; + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.isRunning = ~&6504329801&~; _tick.~&214641748151&~(); } function ~&6504295855&~() { - isRunning = ~&214625660372&~; + _timerManager.isRunning = ~&214625660372&~; _tick.~&6504295855&~(); } function doReset() { - ~&6504295855&~(); - ~&16765420033347753489&~ = ~&214625660372&~; - ~&5972376&~ (timerMode) { - remainMs = totalMs; + _timerManager.~&6504295855&~(); + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.remainMs = _timerManager.totalMs; } ~&6503784146&~ { - totalMs = 0; + _timerManager.totalMs = 0; + } + _timerManager.refresh(); + } + + /* Alarm management*/ + function addAlarm(~&180977&~, ~&180982&~) { + ~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: ~&180982&~, ~&233726547792244&~: ~&6504329801&~ }; + _timerManager.alarms = _timerManager.alarms.~&7082546043425&~([~&180970&~]); + _timerManager.nextAlarmId++; + _timerManager.saveAlarms(); + } + + function removeAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&7082656280847&~(function(~&180970&~) { + ~&7083121450889&~ ~&180970&~.~&5972374&~ !== ~&5972374&~; + }); + _timerManager.saveAlarms(); + } + + function toggleAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&197092711&~(function(~&180970&~) { + ~&5972376&~ (~&180970&~.~&5972374&~ !== ~&5972374&~) ~&7083121450889&~ ~&180970&~; + ~&7083121450889&~ { ~&5972374&~: ~&180970&~.~&5972374&~, hour: ~&180970&~.hour, minute: ~&180970&~.minute, ~&233726547792244&~: !~&180970&~.~&233726547792244&~ }; + }); + _timerManager.saveAlarms(); + } + + function dismissAlarmNotification() { + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.alarmNotificationText = ""; + } + + function saveAlarms() { + ~&197102514&~ payload = { + alarms: _timerManager.alarms, + nextAlarmId: _timerManager.nextAlarmId, + blinkLightOnNotification: _timerManager.blinkLightOnNotification + }; + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("PUT", "file:///home/root/alarms.json"); + xhr.~&6504279475&~(~&6502785411&~.~&254548178208422824&~(payload)); + } + + function loadAlarms() { + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("GET", "file:///home/root/alarms.json"); + xhr.onreadystatechange = function() { + ~&5972376&~ (xhr.readyState === XMLHttpRequest.DONE) { + try { + ~&197102514&~ ~&6503736259&~ = ~&6502785411&~.parse(xhr.responseText); + _timerManager.alarms = ~&6503736259&~.alarms || []; + _timerManager.nextAlarmId = ~&6503736259&~.nextAlarmId || 1; + _timerManager.blinkLightOnNotification = ~&6503736259&~.blinkLightOnNotification || ~&214625660372&~; + } catch (~&180974&~) { + _timerManager.alarms = []; + _timerManager.nextAlarmId = 1; + } + } + }; + xhr.~&6504279475&~(); + } + + ~&214604601930&~ { + ~&5972374&~: _alarmChecker + ~&7713147298280334&~: 5000 + ~&7083121289162&~: ~&6504329801&~ + ~&233743626668842&~: ~&6504329801&~ + ~&495358363329399331&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + /* Use an absolute epoch-minute (not hour*60+minute) so that a recurring*/ + /* alarm can fire again on the next day instead of being permanently*/ + /* suppressed once it has matched lastNotifiedMinute.*/ + ~&197102514&~ nowMinute = ~&6502909715&~.~&214626058827&~(~&180973&~.getTime() / 60000); + ~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~; + + ~&197102514&~ ~&180977&~ = ~&180973&~.getHours(); + ~&197102514&~ ~&180982&~ = ~&180973&~.getMinutes(); + ~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) { + ~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~]; + ~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === ~&180982&~) { + _timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); + _timerManager.~&16765420033347753489&~ = ~&6504329801&~; + _timerManager.lastNotifiedMinute = nowMinute; + ~&214621519406&~; + } + } } - refresh(); } ~&214604601930&~ { @@ -71,6 +165,7 @@ AFFECT [[1658694193319203921]] ~&7713147298280334&~: 100 ~&7083121289162&~: ~&6504329801&~ ~&495358363329399331&~: { + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; ~&5972376&~ (_timerManager.timerMode) { _timerManager.remainMs -= 100; ~&5972376&~ (_timerManager.remainMs <= 0) { @@ -84,6 +179,10 @@ AFFECT [[1658694193319203921]] _timerManager.refresh(); } } + + ~&254480451320573660&~.~&495334332051582499&~: { + _timerManager.loadAlarms(); + } } } END TRAVERSE @@ -93,212 +192,576 @@ AFFECT [[12542166428983872557]] TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]] LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]] INSERT { - ~&425121728314878811&~.~&15740235808997988493&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - } - - ~&14125623155555875541&~ { - ~&5972374&~: _timerUI + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - /* Mode selector tabs */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: 0 + ~&14125623155555875541&~ { + ~&5972374&~: _timerUI + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ }, - { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ } - ] - ~&7712922269353028&~: ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 68 + ~&425121728314878811&~.~&15740235808997988493&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + } - readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer + /* Mode selector tabs*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: 0 - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ - ~&6503823200&~.~&254543497768871654&~: 24 - ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer; - ~&5972376&~ (!~&254539508423767444&~.isTimer) { - ~&7082020628281&~.timerManager.totalMs = 0; - } - ~&7082020628281&~.timerManager.refresh(); + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ }, + { ~&197101097&~: "Chrono", ~&6504074414&~: "chrono" }, + { ~&197101097&~: "Alarm", ~&6504074414&~: "alarm" } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 68 + + readonly property ~&6503679477&~ ~&7082453764421&~: ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~ ? !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode + : ~&254539508423767444&~.~&6504074414&~ === "chrono" ? !~&7082020628281&~.timerManager.alarmMode && !~&7082020628281&~.timerManager.timerMode + : ~&7082020628281&~.timerManager.alarmMode + + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 24 + ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "alarm") { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.alarmMode = ~&6504329801&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.alarmMode = ~&214625660372&~; + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~; + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "chrono") { + ~&7082020628281&~.timerManager.totalMs = 0; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + ~&254501108490678590&~ { + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&7082729686082&~: 3 + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } - } - ~&254501108490678590&~ { - ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ - ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ - ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ - ~&7082729686082&~: 3 - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } } } - } - /* Time display (fixed width to avoid resizing) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~ - ~&7081629735527&~.~&7797818826744279624&~: 300 - ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ - ~&6503165774&~ { - ~&5972374&~: _display - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ - ~&6503823200&~.~&254543497768871654&~: 56 - ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight - ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ - ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + /* Time display*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + ~&6503165774&~ { + ~&5972374&~: _display + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ + ~&6503823200&~.~&254543497768871654&~: 56 + ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } } - } - /* Preset buttons (timer mode only) */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode + /* Preset buttons (timer mode only)*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, - { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, - { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, - { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, - { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } - ] - ~&7712922269353028&~: ~&6502786168&~ { + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, + { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, + { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, + { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, + { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; + ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { + ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + } + } + + /* Control buttons*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + + /* Add/Set toggle (timer only)*/ + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode ~&254501108490678590&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&7083116119249&~: 8 - ~&214622605608&~: "#EEEEEE" + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; + } + } + } + + /* Reset*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&"6968812144639225076&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() + } + } + + /* Start / Stop*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ } ~&6503165774&~ { ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" ~&6503823200&~.~&254543497768871654&~: 20 ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); + } + } + } + } + + /* Alarm mode*/ + ~&14125623155555875541&~ { + ~&5972374&~: _alarmCol + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmMode + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 80 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _radioIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _radioIcon.~&214640173127&~ + ~&233721384511543&~.~&214640173127&~: _trashIcon.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&490371291080887915&~: 12 + ~&16491662607465103678&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 28 + ~&6503823200&~.~&7083316716977&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&6502673216&~.~&6502529386&~ : ~&6502673216&~.~&7081724354802&~ + ~&214622605608&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _trashIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&6503165774&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarms.~&7082886407723&~ === 0 + ~&6504315758&~: "No alarms set" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&214622605608&~: "#888888" + ~&8400129142283184211&~: 20 + ~&1353514028756047605&~: 20 + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Add alarms" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } ~&254494525842443467&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; - ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { - ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; - } ~&6503784146&~ { - ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; - } - ~&7082020628281&~.timerManager.refresh(); + ~&6504254477&~.~&2766288418351025740&~.~&214622501183&~(); + ~&6504254477&~.~&2766288418351025740&~.~&6504147419&~(~&"3271012201642534810&~); } } } } } - - /* Control buttons */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - - /* Add/Set toggle (timer only) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; - } - } - } - - /* Reset */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&"6968812144639225076&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() - } - } - - /* Start / Stop */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ - } - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" - ~&6503823200&~.~&254543497768871654&~: 20 - ~&6503823200&~.~&6503679370&~: ~&6504329801&~ - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); - } - } - } - } } } END TRAVERSE END AFFECT -; Notification bar when timer finishes - visible in all modes +; Alarm management inside system clock settings (inserted before the info message for more space) +AFFECT [[15410910318338348835]] + TRAVERSE [[7711468349764991]]#[[6504254477]] > [[8397788359424131273]] > [[14125623155555875541]]#[[8399784311425937276]] + LOCATE AFTER [[425121728314878811.214599571833]]#[[254526274719339159]] + INSERT { + ~&425121728314878811&~.~&214604609771&~ { + ~&6504315758&~: "Alarms" + ~&6504337259&~: ~&425121728314878811&~.~&214604609771&~.~&214594832564&~ + ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&233748750575870&~ + } + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 56 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _alarmIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 40 + ~&7082729686082&~: 40 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7424604169206955460&~ + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _alarmIcon.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&233721384511543&~.~&1765033595104803723&~: 1 + ~&490371291080887915&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 24 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _toggleAlarmIcon + ~&233721384511543&~.~&214640173127&~: _deleteAlarmIcon.~&6504027668&~ + ~&233721384511543&~.~&499747351624466981&~: 12 + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _deleteAlarmIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&5972374&~: _addAlarmPanel + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Add alarm" + ~&8399601734642709923&~: ~&"15094524446772001204&~ + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504337259&~: ~&254477762679831355&~.~&7081261925573&~.~&254547519794454865&~ + ~&6504315758&~: ~&6504222003&~("Add") + ~&254542236275632405&~: { + _addAlarmPanel.~&9195823055201242195&~ = !_addAlarmPanel.~&9195823055201242195&~; + } + } + ~&9195823055201242195&~: ~&214625660372&~ + ~&8399254548634699250&~: ~&14125623155555875541&~ { + ~&214646099849&~: _addAlarmPanel.~&214646099849&~ + ~&233744706647566&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 280 + + ~&14975672296977510442&~ { + ~&5972374&~: _alarmTimeSpinners + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: _nowBtn.~&6504027668&~ + ~&233721384511543&~.~&197100796&~: ~&7083038346995&~.~&197100796&~ + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&499747351624466981&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + ~&214628545114&~: 8 + ~&233736699967534&~: 0 + ~&8399894257374503713&~: function(~&180977&~) { _alarmTimeSpinners.~&214628545114&~ = ~&180977&~; } + ~&16346529800820831925&~: function(~&180982&~) { _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; } + } + + ~&6502786168&~ { + ~&5972374&~: _nowBtn + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 80 + ~&7082729686082&~: 48 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Now" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + _alarmTimeSpinners.~&214628545114&~ = ~&180973&~.getHours(); + _alarmTimeSpinners.~&233736699967534&~ = ~&180973&~.getMinutes(); + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [0, 15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + _alarmTimeSpinners.~&233736699967534&~ = ~&254539508423767444&~; + } + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&"180916&~ + ~&254539508423767444&~ + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180982&~ = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~; + ~&5972376&~ (~&180982&~ >= 60) { ~&180982&~ -= 60; } + _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; + } + } + } + } + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Save alarm" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addAlarm(_alarmTimeSpinners.~&214628545114&~, _alarmTimeSpinners.~&233736699967534&~); + _addAlarmPanel.~&9195823055201242195&~ = ~&214625660372&~; + } + } + } + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Flash light" + ~&478136262235079021&~: "Blink the reading light when the timer ends or an alarm triggers" + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504315758&~: ~&7082020628281&~.timerManager.blinkLightOnNotification ? ~&"5971526&~ : ~&"197060196&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.blinkLightOnNotification = !~&7082020628281&~.timerManager.blinkLightOnNotification + } + } + } + END TRAVERSE +END AFFECT + +; Notification bar for timer finish and alarm triggers AFFECT [[2328484894988065446]] IMPORT [[233700934949963.233693781272506]] [[180922.180921]] + IMPORT [[6504469795.233736922911970.214633057601.214626274418]] [[180922.180921]] TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]] LOCATE AFTER ALL @@ -308,16 +771,51 @@ AFFECT [[2328484894988065446]] ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~ + + ~&13733777459642361598&~: { + ~&5972376&~ (~&233748328658231&~ && ~&7082020628281&~.timerManager.blinkLightOnNotification) { + _blinkTimer.~&6504295855&~(); + _blinkTimer.~&214618014052&~ = 0; + _blinkTimer.~&214641748151&~(); + } + } + + ~&214604601930&~ { + ~&5972374&~: _blinkTimer + ~&7713147298280334&~: 1000 /* 1 sec*/ + ~&7083121289162&~: ~&6504329801&~ + property ~&197088788&~ ~&214618014052&~: 0 + property ~&6504243117&~ _savedValue: 0 + ~&495358363329399331&~: { + ~&197102514&~ l = ~&7082020628281&~.timerManager._blinkLight; + ~&5972376&~ (!l) { ~&6504295855&~(); ~&7083121450889&~; } + ~&5972376&~ (~&214618014052&~ >= 6) { + ~&6504295855&~(); + l.~&214644635174&~ = _savedValue; + ~&214618014052&~ = 0; + ~&7083121450889&~; + } + ~&5972376&~ (~&214618014052&~ === 0) { + _savedValue = l.~&214644635174&~; + } + l.~&214644635174&~ = ~&214618014052&~ % 2 === 0 ? 100 : 0; + ~&214618014052&~++; + } + } ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ { - ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" + ? "Alarm at " + ~&7082020628281&~.timerManager.alarmNotificationText + : "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ } + /* Timer buttons - hidden during alarm*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: ~&"233701679664206&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.doReset(); @@ -325,9 +823,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+1min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 60000; @@ -337,9 +838,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+5min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 300000; @@ -349,15 +853,32 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } + /* Universal Close / Dismiss*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { - ~&6504315758&~: ~&"214584551711&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~ ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (~&7082020628281&~.timerManager.alarmNotificationText !== "") { + ~&7082020628281&~.timerManager.dismissAlarmNotification(); + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + } } } } } END TRAVERSE END AFFECT + +; Capture Light reference from the QuickSettingsSlider so we can blink it +AFFECT [[9830508555522680663]] + TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]] + LOCATE AFTER ALL + INSERT { + ~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~; + } + END TRAVERSE +END AFFECT diff --git a/3.27.3.0/quickSettingsTimer.qmd b/3.27.3.0/quickSettingsTimer.qmd index e4f012e..1be9d65 100644 --- a/3.27.3.0/quickSettingsTimer.qmd +++ b/3.27.3.0/quickSettingsTimer.qmd @@ -1,5 +1,5 @@ -; Quick Settings Timer/Chrono -; Adds a countdown timer and stopwatch to the quick settings panel +; Quick Settings Timer/Chrono/Alarm +; Adds a countdown timer, stopwatch, and alarm system to the quick settings panel ; Timer state lives in Values.timerManager so it persists across menu opens/closes AFFECT [[1658694193319203921]] @@ -18,6 +18,15 @@ AFFECT [[1658694193319203921]] property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~ property ~&197088788&~ presetMs: 60000 property ~&6503679477&~ addMode: ~&6504329801&~ + property ~&6503679477&~ blinkLightOnNotification: ~&214625660372&~ + property ~&197102514&~ _blinkLight: ~&6504117156&~ + + /* Alarm state*/ + property ~&6503679477&~ alarmMode: ~&214625660372&~ + property ~&197102514&~ alarms: [] + property ~&197088788&~ nextAlarmId: 1 + property ~&7083178290016&~ alarmNotificationText: "" + property ~&197088788&~ lastNotifiedMinute: -1 /* absolute epoch-minute of the last fired alarm*/ function fmt(~&5972521&~) { ~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(~&5972521&~); @@ -26,7 +35,6 @@ AFFECT [[1658694193319203921]] ~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000); ~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); ~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); - ~&5972376&~ (~&180977&~ > 0) { ~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss; } @@ -34,36 +42,122 @@ AFFECT [[1658694193319203921]] } function refresh() { - ~&5972376&~ (timerMode) { - ~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0); + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0); } ~&6503784146&~ { - ~&478322454160073828&~ = fmt(totalMs); + _timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs); } } function go() { - ~&5972376&~ (timerMode) { - ~&5972376&~ (remainMs <= 0) ~&7083121450889&~; + ~&5972376&~ (_timerManager.timerMode) { + ~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~; } - ~&16765420033347753489&~ = ~&214625660372&~; - isRunning = ~&6504329801&~; + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.isRunning = ~&6504329801&~; _tick.~&214641748151&~(); } function ~&6504295855&~() { - isRunning = ~&214625660372&~; + _timerManager.isRunning = ~&214625660372&~; _tick.~&6504295855&~(); } function doReset() { - ~&6504295855&~(); - ~&16765420033347753489&~ = ~&214625660372&~; - ~&5972376&~ (timerMode) { - remainMs = totalMs; + _timerManager.~&6504295855&~(); + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (_timerManager.timerMode) { + _timerManager.remainMs = _timerManager.totalMs; } ~&6503784146&~ { - totalMs = 0; + _timerManager.totalMs = 0; + } + _timerManager.refresh(); + } + + /* Alarm management*/ + function addAlarm(~&180977&~, ~&180982&~) { + ~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: ~&180982&~, ~&233726547792244&~: ~&6504329801&~ }; + _timerManager.alarms = _timerManager.alarms.~&7082546043425&~([~&180970&~]); + _timerManager.nextAlarmId++; + _timerManager.saveAlarms(); + } + + function removeAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&7082656280847&~(function(~&180970&~) { + ~&7083121450889&~ ~&180970&~.~&5972374&~ !== ~&5972374&~; + }); + _timerManager.saveAlarms(); + } + + function toggleAlarm(~&5972374&~) { + _timerManager.alarms = _timerManager.alarms.~&197092711&~(function(~&180970&~) { + ~&5972376&~ (~&180970&~.~&5972374&~ !== ~&5972374&~) ~&7083121450889&~ ~&180970&~; + ~&7083121450889&~ { ~&5972374&~: ~&180970&~.~&5972374&~, hour: ~&180970&~.hour, minute: ~&180970&~.minute, ~&233726547792244&~: !~&180970&~.~&233726547792244&~ }; + }); + _timerManager.saveAlarms(); + } + + function dismissAlarmNotification() { + _timerManager.~&16765420033347753489&~ = ~&214625660372&~; + _timerManager.alarmNotificationText = ""; + } + + function saveAlarms() { + ~&197102514&~ payload = { + alarms: _timerManager.alarms, + nextAlarmId: _timerManager.nextAlarmId, + blinkLightOnNotification: _timerManager.blinkLightOnNotification + }; + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("PUT", "file:///home/root/alarms.json"); + xhr.~&6504279475&~(~&6502785411&~.~&254548178208422824&~(payload)); + } + + function loadAlarms() { + ~&197102514&~ xhr = new XMLHttpRequest(); + xhr.~&6504147419&~("GET", "file:///home/root/alarms.json"); + xhr.onreadystatechange = function() { + ~&5972376&~ (xhr.readyState === XMLHttpRequest.DONE) { + try { + ~&197102514&~ ~&6503736259&~ = ~&6502785411&~.parse(xhr.responseText); + _timerManager.alarms = ~&6503736259&~.alarms || []; + _timerManager.nextAlarmId = ~&6503736259&~.nextAlarmId || 1; + _timerManager.blinkLightOnNotification = ~&6503736259&~.blinkLightOnNotification || ~&214625660372&~; + } catch (~&180974&~) { + _timerManager.alarms = []; + _timerManager.nextAlarmId = 1; + } + } + }; + xhr.~&6504279475&~(); + } + + ~&214604601930&~ { + ~&5972374&~: _alarmChecker + ~&7713147298280334&~: 5000 + ~&7083121289162&~: ~&6504329801&~ + ~&233743626668842&~: ~&6504329801&~ + ~&495358363329399331&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + /* Use an absolute epoch-minute (not hour*60+minute) so that a recurring*/ + /* alarm can fire again on the next day instead of being permanently*/ + /* suppressed once it has matched lastNotifiedMinute.*/ + ~&197102514&~ nowMinute = ~&6502909715&~.~&214626058827&~(~&180973&~.getTime() / 60000); + ~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~; + + ~&197102514&~ ~&180977&~ = ~&180973&~.getHours(); + ~&197102514&~ ~&180982&~ = ~&180973&~.getMinutes(); + ~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) { + ~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~]; + ~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === ~&180982&~) { + _timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~); + _timerManager.~&16765420033347753489&~ = ~&6504329801&~; + _timerManager.lastNotifiedMinute = nowMinute; + ~&214621519406&~; + } + } } - refresh(); } ~&214604601930&~ { @@ -71,6 +165,7 @@ AFFECT [[1658694193319203921]] ~&7713147298280334&~: 100 ~&7083121289162&~: ~&6504329801&~ ~&495358363329399331&~: { + ~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~; ~&5972376&~ (_timerManager.timerMode) { _timerManager.remainMs -= 100; ~&5972376&~ (_timerManager.remainMs <= 0) { @@ -84,6 +179,10 @@ AFFECT [[1658694193319203921]] _timerManager.refresh(); } } + + ~&254480451320573660&~.~&495334332051582499&~: { + _timerManager.loadAlarms(); + } } } END TRAVERSE @@ -93,212 +192,576 @@ AFFECT [[12542166428983872557]] TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]] LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]] INSERT { - ~&425121728314878811&~.~&15740235808997988493&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - } - - ~&14125623155555875541&~ { - ~&5972374&~: _timerUI + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~ ~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~ - ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - /* Mode selector tabs */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: 0 + ~&14125623155555875541&~ { + ~&5972374&~: _timerUI + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ }, - { ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ } - ] - ~&7712922269353028&~: ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 68 + ~&425121728314878811&~.~&15740235808997988493&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + } - readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer + /* Mode selector tabs*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: 0 - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ - ~&6503823200&~.~&254543497768871654&~: 24 - ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer; - ~&5972376&~ (!~&254539508423767444&~.isTimer) { - ~&7082020628281&~.timerManager.totalMs = 0; - } - ~&7082020628281&~.timerManager.refresh(); + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ }, + { ~&197101097&~: "Chrono", ~&6504074414&~: "chrono" }, + { ~&197101097&~: "Alarm", ~&6504074414&~: "alarm" } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 68 + + readonly property ~&6503679477&~ ~&7082453764421&~: ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~ ? !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode + : ~&254539508423767444&~.~&6504074414&~ === "chrono" ? !~&7082020628281&~.timerManager.alarmMode && !~&7082020628281&~.timerManager.timerMode + : ~&7082020628281&~.timerManager.alarmMode + + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 24 + ~&6503823200&~.~&6503679370&~: ~&7082453764421&~ + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "alarm") { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.alarmMode = ~&6504329801&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.alarmMode = ~&214625660372&~; + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.~&6504074414&~ === ~&"214642551402&~; + ~&5972376&~ (~&254539508423767444&~.~&6504074414&~ === "chrono") { + ~&7082020628281&~.timerManager.totalMs = 0; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + ~&254501108490678590&~ { + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&7082729686082&~: 3 + ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } - } - ~&254501108490678590&~ { - ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ - ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ - ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ - ~&7082729686082&~: 3 - ~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~ } } } - } - /* Time display (fixed width to avoid resizing) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~ - ~&7081629735527&~.~&7797818826744279624&~: 300 - ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ - ~&6503165774&~ { - ~&5972374&~: _display - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ - ~&6503823200&~.~&254543497768871654&~: 56 - ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight - ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ - ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + /* Time display*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + ~&6503165774&~ { + ~&5972374&~: _display + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~ + ~&6503823200&~.~&254543497768871654&~: 56 + ~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } } - } - /* Preset buttons (timer mode only) */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode + /* Preset buttons (timer mode only)*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode && ~&7082020628281&~.timerManager.timerMode - ~&7712155293725601&~ { - ~&214634455770&~: [ - { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, - { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, - { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, - { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, - { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } - ] - ~&7712922269353028&~: ~&6502786168&~ { + ~&7712155293725601&~ { + ~&214634455770&~: [ + { ~&197101097&~: "1 m", ~&197102508&~: 60000 }, + { ~&197101097&~: "5 m", ~&197102508&~: 300000 }, + { ~&197101097&~: "10 m", ~&197102508&~: 600000 }, + { ~&197101097&~: "30 m", ~&197102508&~: 1800000 }, + { ~&197101097&~: "1 h", ~&197102508&~: 3600000 } + ] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.~&6504295855&~(); + ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; + ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { + ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; + ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; + } + ~&7082020628281&~.timerManager.refresh(); + } + } + } + } + } + + /* Control buttons*/ + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + ~&233748328658231&~: !~&7082020628281&~.timerManager.alarmMode + + /* Add/Set toggle (timer only)*/ + ~&6502786168&~ { ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 50 + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode ~&254501108490678590&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&7083116119249&~: 8 - ~&214622605608&~: "#EEEEEE" + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; + } + } + } + + /* Reset*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&7082507052999&~.~&214622605608&~: "#888888" + ~&7082507052999&~.~&214646099849&~: 1 + ~&214622605608&~: ~&"503220030291830651&~ + } + ~&425121728314878811&~.~&6502767986&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ + ~&7083172477658&~: ~&"6968812144639225076&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() + } + } + + /* Start / Stop*/ + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 70 + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ } ~&6503165774&~ { ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&254539508423767444&~.~&197101097&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" ~&6503823200&~.~&254543497768871654&~: 20 ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); + } + } + } + } + + /* Alarm mode*/ + ~&14125623155555875541&~ { + ~&5972374&~: _alarmCol + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmMode + ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 80 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _radioIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _radioIcon.~&214640173127&~ + ~&233721384511543&~.~&214640173127&~: _trashIcon.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&490371291080887915&~: 12 + ~&16491662607465103678&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 28 + ~&6503823200&~.~&7083316716977&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&6502673216&~.~&6502529386&~ : ~&6502673216&~.~&7081724354802&~ + ~&214622605608&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888" + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _trashIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&6503165774&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarms.~&7082886407723&~ === 0 + ~&6504315758&~: "No alarms set" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&214622605608&~: "#888888" + ~&8400129142283184211&~: 20 + ~&1353514028756047605&~: 20 + ~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~ + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Add alarms" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } ~&254494525842443467&~ { ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.~&6504295855&~(); - ~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~; - ~&5972376&~ (~&7082020628281&~.timerManager.addMode) { - ~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~; - } ~&6503784146&~ { - ~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~; - ~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~; - } - ~&7082020628281&~.timerManager.refresh(); + ~&6504254477&~.~&2766288418351025740&~.~&214622501183&~(); + ~&6504254477&~.~&2766288418351025740&~.~&6504147419&~(~&"3271012201642534810&~); } } } } } - - /* Control buttons */ - ~&254501558939456351&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~ - - /* Add/Set toggle (timer only) */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode; - } - } - } - - /* Reset */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&7082507052999&~.~&214622605608&~: "#888888" - ~&7082507052999&~.~&214646099849&~: 1 - ~&214622605608&~: ~&"503220030291830651&~ - } - ~&425121728314878811&~.~&6502767986&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~ - ~&7083172477658&~: ~&"6968812144639225076&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset() - } - } - - /* Start / Stop */ - ~&6502786168&~ { - ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ - ~&7081629735527&~.~&17520348323745447649&~: 70 - ~&254501108490678590&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&7083116119249&~: 8 - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~ - } - ~&6503165774&~ { - ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ - ~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start" - ~&6503823200&~.~&254543497768871654&~: 20 - ~&6503823200&~.~&6503679370&~: ~&6504329801&~ - ~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~ - } - ~&254494525842443467&~ { - ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ - ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go(); - } - } - } - } } } END TRAVERSE END AFFECT -; Notification bar when timer finishes - visible in all modes +; Alarm management inside system clock settings (inserted before the info message for more space) +AFFECT [[15410910318338348835]] + TRAVERSE [[7711468349764991]]#[[6504254477]] > [[8397788359424131273]] > [[14125623155555875541]]#[[8399784311425937276]] + LOCATE AFTER [[425121728314878811.214599571833]]#[[254526274719339159]] + INSERT { + ~&425121728314878811&~.~&214604609771&~ { + ~&6504315758&~: "Alarms" + ~&6504337259&~: ~&425121728314878811&~.~&214604609771&~.~&214594832564&~ + ~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&233748750575870&~ + } + + ~&7712155293725601&~ { + ~&214634455770&~: ~&7082020628281&~.timerManager.alarms + + ~&7712922269353028&~: ~&14125623155555875541&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 56 + ~&233744706647566&~: 0 + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _alarmIcon + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 40 + ~&7082729686082&~: 40 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7424604169206955460&~ + } + + ~&6503165774&~ { + ~&233721384511543&~.~&6504027668&~: _alarmIcon.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&233721384511543&~.~&1765033595104803723&~: 1 + ~&490371291080887915&~: 12 + ~&6504315758&~: ~&254539508423767444&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&254539508423767444&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 24 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _toggleAlarmIcon + ~&233721384511543&~.~&214640173127&~: _deleteAlarmIcon.~&6504027668&~ + ~&233721384511543&~.~&499747351624466981&~: 12 + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&254539508423767444&~.~&233726547792244&~ ? ~&"8609871882813839963&~ : ~&"7424611027213444377&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.toggleAlarm(~&254539508423767444&~.~&5972374&~) + } + } + + ~&425121728314878811&~.~&6502767986&~ { + ~&5972374&~: _deleteAlarmIcon + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 48 + ~&7082729686082&~: 48 + ~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~ + ~&7083172477658&~: ~&"7312727925064657782&~ + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.removeAlarm(~&254539508423767444&~.~&5972374&~) + } + } + } + + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&5972374&~: _addAlarmPanel + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Add alarm" + ~&8399601734642709923&~: ~&"15094524446772001204&~ + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504337259&~: ~&254477762679831355&~.~&7081261925573&~.~&254547519794454865&~ + ~&6504315758&~: ~&6504222003&~("Add") + ~&254542236275632405&~: { + _addAlarmPanel.~&9195823055201242195&~ = !_addAlarmPanel.~&9195823055201242195&~; + } + } + ~&9195823055201242195&~: ~&214625660372&~ + ~&8399254548634699250&~: ~&14125623155555875541&~ { + ~&214646099849&~: _addAlarmPanel.~&214646099849&~ + ~&233744706647566&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 280 + + ~&14975672296977510442&~ { + ~&5972374&~: _alarmTimeSpinners + ~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~ + ~&233721384511543&~.~&214640173127&~: _nowBtn.~&6504027668&~ + ~&233721384511543&~.~&197100796&~: ~&7083038346995&~.~&197100796&~ + ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ + ~&233721384511543&~.~&499747351624466981&~: ~&254477762679831355&~.~&7082020628281&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~ + ~&214628545114&~: 8 + ~&233736699967534&~: 0 + ~&8399894257374503713&~: function(~&180977&~) { _alarmTimeSpinners.~&214628545114&~ = ~&180977&~; } + ~&16346529800820831925&~: function(~&180982&~) { _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; } + } + + ~&6502786168&~ { + ~&5972374&~: _nowBtn + ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ + ~&233721384511543&~.~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~ + ~&214646099849&~: 80 + ~&7082729686082&~: 48 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Now" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180973&~ = new ~&6502586279&~(); + _alarmTimeSpinners.~&214628545114&~ = ~&180973&~.getHours(); + _alarmTimeSpinners.~&233736699967534&~ = ~&180973&~.getMinutes(); + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [0, 15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&254539508423767444&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + _alarmTimeSpinners.~&233736699967534&~ = ~&254539508423767444&~; + } + } + } + } + } + + ~&254501558939456351&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 44 + ~&233744706647566&~: 8 + + ~&7712155293725601&~ { + ~&214634455770&~: [15, 30, 45] + ~&7712922269353028&~: ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~ + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: "#EEEEEE" + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: ~&"180916&~ + ~&254539508423767444&~ + ~&6503823200&~.~&254543497768871654&~: 18 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&197102514&~ ~&180982&~ = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~; + ~&5972376&~ (~&180982&~ >= 60) { ~&180982&~ -= 60; } + _alarmTimeSpinners.~&233736699967534&~ = ~&180982&~; + } + } + } + } + } + + ~&6502786168&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&7081629735527&~.~&17520348323745447649&~: 54 + + ~&254501108490678590&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&7083116119249&~: 8 + ~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~ + } + ~&6503165774&~ { + ~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~ + ~&6504315758&~: "Save alarm" + ~&6503823200&~.~&254543497768871654&~: 20 + ~&6503823200&~.~&6503679370&~: ~&6504329801&~ + ~&214622605608&~: ~&7082020628281&~.~&8399340017260114793&~ + } + ~&254494525842443467&~ { + ~&233721384511543&~.~&6503816592&~: ~&7083038346995&~ + ~&254542236275632405&~: { + ~&7082020628281&~.timerManager.addAlarm(_alarmTimeSpinners.~&214628545114&~, _alarmTimeSpinners.~&233736699967534&~); + _addAlarmPanel.~&9195823055201242195&~ = ~&214625660372&~; + } + } + } + } + } + + ~&425121728314878811&~.~&214599571833&~ { + ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ + ~&214632764553&~: "Flash light" + ~&478136262235079021&~: "Blink the reading light when the timer ends or an alarm triggers" + ~&7082453764199&~: ~&425121728314878811&~.~&7081261925573&~ { + ~&6504315758&~: ~&7082020628281&~.timerManager.blinkLightOnNotification ? ~&"5971526&~ : ~&"197060196&~ + ~&254542236275632405&~: ~&7082020628281&~.timerManager.blinkLightOnNotification = !~&7082020628281&~.timerManager.blinkLightOnNotification + } + } + } + END TRAVERSE +END AFFECT + +; Notification bar for timer finish and alarm triggers AFFECT [[2328484894988065446]] IMPORT [[233700934949963.233693781272506]] [[180922.180921]] + IMPORT [[6504469795.233736922911970.214633057601.214626274418]] [[180922.180921]] TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]] LOCATE AFTER ALL @@ -308,16 +771,51 @@ AFFECT [[2328484894988065446]] ~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~ ~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~ ~&233748328658231&~: ~&7082020628281&~.timerManager.~&16765420033347753489&~ + + ~&13733777459642361598&~: { + ~&5972376&~ (~&233748328658231&~ && ~&7082020628281&~.timerManager.blinkLightOnNotification) { + _blinkTimer.~&6504295855&~(); + _blinkTimer.~&214618014052&~ = 0; + _blinkTimer.~&214641748151&~(); + } + } + + ~&214604601930&~ { + ~&5972374&~: _blinkTimer + ~&7713147298280334&~: 1000 /* 1 sec*/ + ~&7083121289162&~: ~&6504329801&~ + property ~&197088788&~ ~&214618014052&~: 0 + property ~&6504243117&~ _savedValue: 0 + ~&495358363329399331&~: { + ~&197102514&~ l = ~&7082020628281&~.timerManager._blinkLight; + ~&5972376&~ (!l) { ~&6504295855&~(); ~&7083121450889&~; } + ~&5972376&~ (~&214618014052&~ >= 6) { + ~&6504295855&~(); + l.~&214644635174&~ = _savedValue; + ~&214618014052&~ = 0; + ~&7083121450889&~; + } + ~&5972376&~ (~&214618014052&~ === 0) { + _savedValue = l.~&214644635174&~; + } + l.~&214644635174&~ = ~&214618014052&~ % 2 === 0 ? 100 : 0; + ~&214618014052&~++; + } + } ~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~ ~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ { - ~&6504315758&~: "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" + ? "Alarm at " + ~&7082020628281&~.timerManager.alarmNotificationText + : "Time's up! (" + ~&7082020628281&~.timerManager.fmt(~&7082020628281&~.timerManager.totalMs) + ~&"180914&~ ~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~ ~&7081629735527&~.~&8399743405844438450&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ ~&7081629735527&~.~&499747351624466981&~: ~&425121728314878811&~.~&7082020628281&~.~&233740248806464&~.~&214641496386&~ } + /* Timer buttons - hidden during alarm*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: ~&"233701679664206&~ ~&254542236275632405&~: { ~&7082020628281&~.timerManager.doReset(); @@ -325,9 +823,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+1min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 60000; @@ -337,9 +838,12 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" ~&6504315758&~: "+5min" ~&254542236275632405&~: { ~&7082020628281&~.timerManager.totalMs += 300000; @@ -349,15 +853,32 @@ AFFECT [[2328484894988065446]] } } - ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { } + ~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { + ~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === "" + } + /* Universal Close / Dismiss*/ ~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ { - ~&6504315758&~: ~&"214584551711&~ + ~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~ ~&254542236275632405&~: { - ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + ~&5972376&~ (~&7082020628281&~.timerManager.alarmNotificationText !== "") { + ~&7082020628281&~.timerManager.dismissAlarmNotification(); + } ~&6503784146&~ { + ~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~; + } } } } } END TRAVERSE END AFFECT + +; Capture Light reference from the QuickSettingsSlider so we can blink it +AFFECT [[9830508555522680663]] + TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]] + LOCATE AFTER ALL + INSERT { + ~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~; + } + END TRAVERSE +END AFFECT diff --git a/README.md b/README.md index ee97f84..301d2f9 100644 --- a/README.md +++ b/README.md @@ -92,13 +92,19 @@ Use [quicksettings-clock-serif](https://github.com/rmitchellscott) by rmitchells ### `quickSettingsTimer.qmd` -- Adds a countdown timer and stopwatch to the Quick Settings panel, under the light slider. -- Switch between Timer (presets: 1min, 5min, 10min, 30min, 1h) and Chrono (start/stop) modes. -- Preset buttons respect the add/set mode toggle : increments, replaces. -- Notification bar shows "Time's up! (duration)" when the timer finishes. +- Adds a countdown timer, stopwatch, and alarm system to the Quick Settings panel, under the light slider. +- Timer: presets: 1min, 5min, 10min, 30min, 1h; add/set mode toggle ( increments, replaces), start/stop/reset controls. +- Chrono: start/stop with lap-style elapsed time display. +- Alarm: configure recurring alarms in the system clock settings menu with a time picker (hour/minute spinners), quick-off buttons (00/15/30/45, +15/+30/+45), and a "Now" button. Each alarm has an enable/disable toggle and a delete button. +- Flash light toggle in the alarm settings page: when enabled, the reading light blinks 3 times when the timer finishes or an alarm triggers. +- Persistence: alarms and the flash light toggle are saved to `file:///home/root/alarms.json` on changes and auto-loaded on startup. +- Notification bar: shows "Time's up! (duration)" when the timer finishes, or "Alarm at HH:MM" when an alarm triggers. Timer offers Restart/+1min/+5min buttons; alarm offers a Dismiss button. +- Quick access: an "Add alarms" button in Quick Settings opens the system clock alarm management page directly. +- Setting page: Go to `Settings > Help > System Time` to manage alarms and the flash light toggle. - - + + + **Available for:** `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0` diff --git a/hash.sh b/hash.sh index 16b0b3d..8e275aa 100755 --- a/hash.sh +++ b/hash.sh @@ -2,7 +2,7 @@ # Configuration QMLDIFF="./qmldiff" -HASHTAB="hashtab_3.23" +HASHTAB="hashtabs/hashtab_3.26.0.68" # Usage if [ $# -lt 1 ]; then diff --git a/images/quickSettingsTimer_1.png b/images/quickSettingsTimer_1.png index 3d1e42c..7f97427 100644 Binary files a/images/quickSettingsTimer_1.png and b/images/quickSettingsTimer_1.png differ diff --git a/images/quickSettingsTimer_2.png b/images/quickSettingsTimer_2.png index 068290f..1aa3f5a 100644 Binary files a/images/quickSettingsTimer_2.png and b/images/quickSettingsTimer_2.png differ diff --git a/images/quickSettingsTimer_3.png b/images/quickSettingsTimer_3.png index ae2188d..d1a5cf5 100644 Binary files a/images/quickSettingsTimer_3.png and b/images/quickSettingsTimer_3.png differ diff --git a/images/quickSettingsTimer_4.png b/images/quickSettingsTimer_4.png new file mode 100644 index 0000000..43e86a6 Binary files /dev/null and b/images/quickSettingsTimer_4.png differ diff --git a/images/quickSettingsTimer_5.png b/images/quickSettingsTimer_5.png new file mode 100644 index 0000000..8191cff Binary files /dev/null and b/images/quickSettingsTimer_5.png differ