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