Compare commits

...

8 Commits

Author SHA1 Message Date
√(noham)²
404c970f36 Refine timer QML bindings 2026-07-06 23:30:35 +02:00
√(noham)²
8d00f8633e Unhash strings for compatibility 2026-07-06 22:36:06 +02:00
√(noham)²
5c8ee270fc Add alarm support to quick timer
Extends the quick settings timer/chrono module with recurring alarms, alarm persistence, notification handling, and light blinking on alerts. Updates the system clock settings UI, README, hash config, and screenshots to match the new alarm flow.
2026-07-06 22:11:49 +02:00
√(noham)²
83531ad29c Update doc 2026-07-06 16:08:26 +02:00
√(noham)²
f1da1d19a6 quickSettingsTimer: insert after _columnRow, drop trailing divider 2026-07-06 16:05:54 +02:00
√(noham)²
55ea4c9e9d Reorganize README: document deprecated extensions 2026-07-06 15:45:33 +02:00
√(noham)²
57a9dc6792 Add QMD ports for reMarkable 3.24-3.27
Add new extension sets for versions 3.24.0.149, 3.25.1.1, 3.26.0.68, and 3.27.1.0, including battery percentage, clock, quick settings clock/timer, convert-to-text remover, and uncompress dock variants. Refresh the README with a compatibility matrix, per-extension availability by firmware version, and clearer installation/extension documentation.
2026-07-06 15:39:01 +02:00
√(noham)²
7bf4c219e4 Add quick settings timer
Adds a new quick settings timer/stopwatch module with timer and chrono modes, preset controls, and finish notifications. Updates the README with usage details and screenshots, and adds the new icon/image assets.
2026-07-06 12:32:44 +02:00
36 changed files with 5447 additions and 55 deletions

6
.gitignore vendored
View File

@@ -4,3 +4,9 @@ hashchange
.DS_Store
DOC.md
.opencode/skills/qmd-port/SKILL.md
NOTIFICATION.md
SLEEP.md
mods.png
SETTINGS.md
SAVE.md
LIGHT.md

View File

@@ -0,0 +1,14 @@
AFFECT [[16664384747789373392]]
TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
LOCATE AFTER ALL
INSERT {
~&6503165774&~ {
~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&6503823200&~.~&254543497768871654&~: 24
~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
}
}
END TRAVERSE
END AFFECT

62
3.24.0.149/clock.qmd Normal file
View File

@@ -0,0 +1,62 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
AFFECT [[4911547370760691430]]
TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
INSERT {
~&16385778650434842232&~ {
~&5972374&~: clockSidebarItem
~&8399878573055752961&~: "clockSidebarObject"
~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
~&8399601734642709923&~: ~&"4628214070783643584&~
~&7082453764421&~: ~&214625660372&~
~&233726547792244&~: ~&6504329801&~
/* 1000 = 1 second / 60000 = 1 minute */
property ~&197088788&~ set_Timer: 60000
property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
function getCestTime() {
~&7083121450889&~ new ~&6502586279&~();
}
~&254480451320573660&~.~&495334332051582499&~: {
~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
}
~&254542236275632405&~: {
~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
clockSidebarItem.set_Timer = 1000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
} ~&6503784146&~ {
clockSidebarItem.set_Timer = 60000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
}
~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
/* Timer for update time */
~&214604601930&~ {
~&5972374&~: ~&214642551402&~
~&7713147298280334&~: clockSidebarItem.set_Timer
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
}
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
~&11921478716705041271&~: ~&6504254477&~
function ~&7712792149454042&~() {
~&7083211098251&~();
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,11 @@
AFFECT [[3197972396468700595]]
TRAVERSE [[6502786168]]#[[10742505294233322867]]
TRAVERSE [[12395602925408354507]]#[[214642769434]]
REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
END TRAVERSE
END TRAVERSE
END AFFECT
AFFECT [[3513522976947834303]]
REMOVE [[454089850271038938]]
END AFFECT

View File

@@ -0,0 +1,68 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
AFFECT [[12542166428983872557]]
IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&14397210151462632996&~ {
~&5972374&~: quickSettingsClock
~&233721384511543&~ {
~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
}
property ~&6503679477&~ showSeconds: ~&214625660372&~
property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
property ~&197088788&~ minuteInterval: 60000
property ~&197088788&~ secondInterval: 1000
~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
function updateClock() {
~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
}
~&254480451320573660&~.~&495334332051582499&~: {
updateClock();
}
onShowSecondsChanged: {
quickSettingsClockTimer.~&233743006639214&~();
updateClock();
}
~&214604601930&~ {
~&5972374&~: quickSettingsClockTimer
~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
quickSettingsClock.updateClock();
}
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&477346538929698200&~: ~&5971598&~.PointingHandCursor
~&254542236275632405&~: {
quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
}
}
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,887 @@
; 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]]
TRAVERSE [[6502786168]]
LOCATE AFTER ALL
INSERT {
property alias timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property bool timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property bool isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property bool ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property bool addMode: ~&6504329801&~
property bool blinkLightOnNotification: ~&214625660372&~
property ~&197102514&~ _blinkLight: ~&6504117156&~
property bool hasFrontlight: ~&214625660372&~
/* Alarm state*/
property bool 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);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ m = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = m.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0);
} ~&6503784146&~ {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs);
}
}
function go() {
~&5972376&~ (_timerManager.timerMode) {
~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~;
}
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
_timerManager.isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
_timerManager.isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs = _timerManager.totalMs;
} ~&6503784146&~ {
_timerManager.totalMs = 0;
}
_timerManager.refresh();
}
/* Alarm management*/
function addAlarm(~&180977&~, m) {
~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: m, ~&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 (e) {
_timerManager.alarms = [];
_timerManager.nextAlarmId = 1;
}
}
};
xhr.~&6504279475&~();
}
~&214604601930&~ {
~&5972374&~: _alarmChecker
~&7713147298280334&~: 5000
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
~&197102514&~ d = 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&~(d.getTime() / 60000);
~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~;
~&197102514&~ ~&180977&~ = d.getHours();
~&197102514&~ m = d.getMinutes();
~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) {
~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~];
~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === m) {
_timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
_timerManager.lastNotifiedMinute = nowMinute;
~&214621519406&~;
}
}
}
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
~&254480451320573660&~.~&495334332051582499&~: {
_timerManager.loadAlarms();
~&197102514&~ _c = ~&5971598&~.~&16810493623656567312&~("qrc:/qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml");
_timerManager.hasFrontlight = (_c.~&7083177691309&~ === ~&254480451320573660&~.~&214602073246&~);
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
}
/* Mode selector tabs*/
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ },
{ txt: "Chrono", ~&6504074414&~: "chrono" },
{ txt: "Alarm", ~&6504074414&~: "alarm" }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property bool ~&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&~.txt
~&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&~
}
}
}
}
/* 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.alarmMode && ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: "1 m", ~&197102508&~: 60000 },
{ txt: "5 m", ~&197102508&~: 300000 },
{ txt: "10 m", ~&197102508&~: 600000 },
{ txt: "30 m", ~&197102508&~: 1800000 },
{ txt: "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&~.txt
~&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&~: 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();
}
}
}
}
/* 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&~.fillHeight: ~&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&~();
~&6504254477&~.~&2766288418351025740&~.~&214622501183&~();
~&6504254477&~.~&2766288418351025740&~.~&6504147419&~("systemclock/window/settings-info");
}
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; 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&~.fillHeight: ~&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(m) { _alarmTimeSpinners.~&233736699967534&~ = m; }
}
~&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&~ d = new ~&6502586279&~();
_alarmTimeSpinners.~&214628545114&~ = d.getHours();
_alarmTimeSpinners.~&233736699967534&~ = d.getMinutes();
}
}
}
}
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 44
~&233744706647566&~: 8
~&7712155293725601&~ {
~&214634455770&~: [0, 15, 30, 45]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.fillHeight: ~&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&~.fillHeight: ~&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&~ m = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~;
~&5972376&~ (m >= 60) { m -= 60; }
_alarmTimeSpinners.~&233736699967534&~ = m;
}
}
}
}
}
~&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&~
~&233748328658231&~: ~&7082020628281&~.timerManager.hasFrontlight
~&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]]
TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
LOCATE AFTER ALL
INSERT {
~&425121728314878811&~.~&11119534664549952261&~ {
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&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&~: ~&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();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
/* Universal Close / Dismiss*/
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~
~&254542236275632405&~: {
~&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 /qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml
TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]]
LOCATE AFTER ALL
INSERT {
~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~;
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,48 @@
; credit: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/uncompressCreate.qmd
AFFECT [[9238134294692494357]]
IMPORT [[7082573613689.6504391364.254540341572282132]] [[180922.180921]]
TRAVERSE [[6502786168]]#[[6504254477]]
TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
LOCATE AFTER [[7081201431623]]#[[6504074876]]
INSERT {
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: notebookButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
~&8399601734642709923&~: ~&"8609871731041592465&~
~&254542236275632405&~: ~&6504254477&~.~&7834776454199036121&~();
}
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: folderButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
~&8399601734642709923&~: ~&"1888152859110688812&~
~&254542236275632405&~: ~&6504254477&~.~&4100702871256454852&~();
}
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: quickSheetsButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
~&8399601734642709923&~: ~&"5726907772531472741&~
~&254542236275632405&~: ~&6504254477&~.~&8127652744343790830&~();
}
}
REMOVE [[7081201431623]]#[[6504074876]]
END TRAVERSE
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,14 @@
AFFECT [[16664384747789373392]]
TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
LOCATE AFTER ALL
INSERT {
~&6503165774&~ {
~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&6503823200&~.~&254543497768871654&~: 24
~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
}
}
END TRAVERSE
END AFFECT

62
3.25.1.1/clock.qmd Normal file
View File

@@ -0,0 +1,62 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
AFFECT [[4911547370760691430]]
TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
INSERT {
~&16385778650434842232&~ {
~&5972374&~: clockSidebarItem
~&8399878573055752961&~: "clockSidebarObject"
~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
~&8399601734642709923&~: ~&"4628214070783643584&~
~&7082453764421&~: ~&214625660372&~
~&233726547792244&~: ~&6504329801&~
/* 1000 = 1 second / 60000 = 1 minute */
property ~&197088788&~ set_Timer: 60000
property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
function getCestTime() {
~&7083121450889&~ new ~&6502586279&~();
}
~&254480451320573660&~.~&495334332051582499&~: {
~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
}
~&254542236275632405&~: {
~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
clockSidebarItem.set_Timer = 1000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
} ~&6503784146&~ {
clockSidebarItem.set_Timer = 60000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
}
~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
/* Timer for update time */
~&214604601930&~ {
~&5972374&~: ~&214642551402&~
~&7713147298280334&~: clockSidebarItem.set_Timer
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
}
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
~&11921478716705041271&~: ~&6504254477&~
function ~&7712792149454042&~() {
~&7083211098251&~();
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,11 @@
AFFECT [[3197972396468700595]]
TRAVERSE [[6502786168]]#[[10742505294233322867]]
TRAVERSE [[12395602925408354507]]#[[214642769434]]
REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
END TRAVERSE
END TRAVERSE
END AFFECT
AFFECT [[3513522976947834303]]
REMOVE [[454089850271038938]]
END AFFECT

View File

@@ -0,0 +1,68 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
AFFECT [[12542166428983872557]]
IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&14397210151462632996&~ {
~&5972374&~: quickSettingsClock
~&233721384511543&~ {
~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
}
property ~&6503679477&~ showSeconds: ~&214625660372&~
property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
property ~&197088788&~ minuteInterval: 60000
property ~&197088788&~ secondInterval: 1000
~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
function updateClock() {
~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
}
~&254480451320573660&~.~&495334332051582499&~: {
updateClock();
}
onShowSecondsChanged: {
quickSettingsClockTimer.~&233743006639214&~();
updateClock();
}
~&214604601930&~ {
~&5972374&~: quickSettingsClockTimer
~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
quickSettingsClock.updateClock();
}
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&477346538929698200&~: ~&5971598&~.PointingHandCursor
~&254542236275632405&~: {
quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
}
}
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,887 @@
; 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]]
TRAVERSE [[6502786168]]
LOCATE AFTER ALL
INSERT {
property alias timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property bool timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property bool isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property bool ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property bool addMode: ~&6504329801&~
property bool blinkLightOnNotification: ~&214625660372&~
property ~&197102514&~ _blinkLight: ~&6504117156&~
property bool hasFrontlight: ~&214625660372&~
/* Alarm state*/
property bool 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);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ m = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = m.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0);
} ~&6503784146&~ {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs);
}
}
function go() {
~&5972376&~ (_timerManager.timerMode) {
~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~;
}
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
_timerManager.isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
_timerManager.isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs = _timerManager.totalMs;
} ~&6503784146&~ {
_timerManager.totalMs = 0;
}
_timerManager.refresh();
}
/* Alarm management*/
function addAlarm(~&180977&~, m) {
~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: m, ~&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 (e) {
_timerManager.alarms = [];
_timerManager.nextAlarmId = 1;
}
}
};
xhr.~&6504279475&~();
}
~&214604601930&~ {
~&5972374&~: _alarmChecker
~&7713147298280334&~: 5000
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
~&197102514&~ d = 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&~(d.getTime() / 60000);
~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~;
~&197102514&~ ~&180977&~ = d.getHours();
~&197102514&~ m = d.getMinutes();
~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) {
~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~];
~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === m) {
_timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
_timerManager.lastNotifiedMinute = nowMinute;
~&214621519406&~;
}
}
}
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
~&254480451320573660&~.~&495334332051582499&~: {
_timerManager.loadAlarms();
~&197102514&~ _c = ~&5971598&~.~&16810493623656567312&~("qrc:/qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml");
_timerManager.hasFrontlight = (_c.~&7083177691309&~ === ~&254480451320573660&~.~&214602073246&~);
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
}
/* Mode selector tabs*/
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ },
{ txt: "Chrono", ~&6504074414&~: "chrono" },
{ txt: "Alarm", ~&6504074414&~: "alarm" }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property bool ~&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&~.txt
~&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&~
}
}
}
}
/* 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.alarmMode && ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: "1 m", ~&197102508&~: 60000 },
{ txt: "5 m", ~&197102508&~: 300000 },
{ txt: "10 m", ~&197102508&~: 600000 },
{ txt: "30 m", ~&197102508&~: 1800000 },
{ txt: "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&~.txt
~&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&~: 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();
}
}
}
}
/* 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&~.fillHeight: ~&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&~();
~&6504254477&~.~&2766288418351025740&~.~&214622501183&~();
~&6504254477&~.~&2766288418351025740&~.~&6504147419&~("systemclock/window/settings-info");
}
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; 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&~.fillHeight: ~&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(m) { _alarmTimeSpinners.~&233736699967534&~ = m; }
}
~&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&~ d = new ~&6502586279&~();
_alarmTimeSpinners.~&214628545114&~ = d.getHours();
_alarmTimeSpinners.~&233736699967534&~ = d.getMinutes();
}
}
}
}
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 44
~&233744706647566&~: 8
~&7712155293725601&~ {
~&214634455770&~: [0, 15, 30, 45]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.fillHeight: ~&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&~.fillHeight: ~&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&~ m = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~;
~&5972376&~ (m >= 60) { m -= 60; }
_alarmTimeSpinners.~&233736699967534&~ = m;
}
}
}
}
}
~&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&~
~&233748328658231&~: ~&7082020628281&~.timerManager.hasFrontlight
~&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]]
TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
LOCATE AFTER ALL
INSERT {
~&425121728314878811&~.~&11119534664549952261&~ {
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&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&~: ~&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();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
/* Universal Close / Dismiss*/
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~
~&254542236275632405&~: {
~&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 /qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml
TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]]
LOCATE AFTER ALL
INSERT {
~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~;
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,48 @@
; credit: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/uncompressCreate.qmd
AFFECT [[9238134294692494357]]
IMPORT [[7082573613689.6504391364.254540341572282132]] [[180922.180921]]
TRAVERSE [[6502786168]]#[[6504254477]]
TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
LOCATE AFTER [[7081201431623]]#[[6504074876]]
INSERT {
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: notebookButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&7711997891205770&~)
~&8399601734642709923&~: ~&"8609871731041592465&~
~&254542236275632405&~: ~&6504254477&~.~&7834776454199036121&~();
}
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: folderButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8397854845390750421&~)
~&8399601734642709923&~: ~&"1888152859110688812&~
~&254542236275632405&~: ~&6504254477&~.~&4100702871256454852&~();
}
~&254501108490678590&~ {
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
~&7082729686082&~: 64
~&214646099849&~: 2
~&214622605608&~: ~&"214621299494&~
}
~&7081201431623&~ {
~&5972374&~: quickSheetsButton
~&233748328658231&~: ~&6504254477&~.~&233720974218682&~.~&7713146641368448&~(~&8397858752669353458&~.~&233679647243674&~.~&8398512905398897727&~)
~&8399601734642709923&~: ~&"5726907772531472741&~
~&254542236275632405&~: ~&6504254477&~.~&8127652744343790830&~();
}
}
REMOVE [[7081201431623]]#[[6504074876]]
END TRAVERSE
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,14 @@
AFFECT [[16664384747789373392]]
TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
LOCATE AFTER ALL
INSERT {
~&6503165774&~ {
~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&6503823200&~.~&254543497768871654&~: 24
~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
}
}
END TRAVERSE
END AFFECT

62
3.26.0.68/clock.qmd Normal file
View File

@@ -0,0 +1,62 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
AFFECT [[4911547370760691430]]
TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
INSERT {
~&16385778650434842232&~ {
~&5972374&~: clockSidebarItem
~&8399878573055752961&~: "clockSidebarObject"
~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
~&8399601734642709923&~: ~&"4628214070783643584&~
~&7082453764421&~: ~&214625660372&~
~&233726547792244&~: ~&6504329801&~
/* 1000 = 1 second / 60000 = 1 minute */
property ~&197088788&~ set_Timer: 60000
property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
function getCestTime() {
~&7083121450889&~ new ~&6502586279&~();
}
~&254480451320573660&~.~&495334332051582499&~: {
~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
}
~&254542236275632405&~: {
~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
clockSidebarItem.set_Timer = 1000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
} ~&6503784146&~ {
clockSidebarItem.set_Timer = 60000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
}
~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
/* Timer for update time */
~&214604601930&~ {
~&5972374&~: ~&214642551402&~
~&7713147298280334&~: clockSidebarItem.set_Timer
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
}
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
~&11921478716705041271&~: ~&6504254477&~
function ~&7712792149454042&~() {
~&7083211098251&~();
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,11 @@
AFFECT [[3197972396468700595]]
TRAVERSE [[6502786168]]#[[10742505294233322867]]
TRAVERSE [[12395602925408354507]]#[[214642769434]]
REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
END TRAVERSE
END TRAVERSE
END AFFECT
AFFECT [[3513522976947834303]]
REMOVE [[454089850271038938]]
END AFFECT

View File

@@ -0,0 +1,68 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
AFFECT [[12542166428983872557]]
IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&14397210151462632996&~ {
~&5972374&~: quickSettingsClock
~&233721384511543&~ {
~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
}
property ~&6503679477&~ showSeconds: ~&214625660372&~
property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
property ~&197088788&~ minuteInterval: 60000
property ~&197088788&~ secondInterval: 1000
~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
function updateClock() {
~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
}
~&254480451320573660&~.~&495334332051582499&~: {
updateClock();
}
onShowSecondsChanged: {
quickSettingsClockTimer.~&233743006639214&~();
updateClock();
}
~&214604601930&~ {
~&5972374&~: quickSettingsClockTimer
~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
quickSettingsClock.updateClock();
}
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&477346538929698200&~: ~&5971598&~.PointingHandCursor
~&254542236275632405&~: {
quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
}
}
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,887 @@
; 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]]
TRAVERSE [[6502786168]]
LOCATE AFTER ALL
INSERT {
property alias timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property bool timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property bool isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property bool ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property bool addMode: ~&6504329801&~
property bool blinkLightOnNotification: ~&214625660372&~
property ~&197102514&~ _blinkLight: ~&6504117156&~
property bool hasFrontlight: ~&214625660372&~
/* Alarm state*/
property bool 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);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ m = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = m.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0);
} ~&6503784146&~ {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs);
}
}
function go() {
~&5972376&~ (_timerManager.timerMode) {
~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~;
}
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
_timerManager.isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
_timerManager.isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs = _timerManager.totalMs;
} ~&6503784146&~ {
_timerManager.totalMs = 0;
}
_timerManager.refresh();
}
/* Alarm management*/
function addAlarm(~&180977&~, m) {
~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: m, ~&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 (e) {
_timerManager.alarms = [];
_timerManager.nextAlarmId = 1;
}
}
};
xhr.~&6504279475&~();
}
~&214604601930&~ {
~&5972374&~: _alarmChecker
~&7713147298280334&~: 5000
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
~&197102514&~ d = 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&~(d.getTime() / 60000);
~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~;
~&197102514&~ ~&180977&~ = d.getHours();
~&197102514&~ m = d.getMinutes();
~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) {
~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~];
~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === m) {
_timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
_timerManager.lastNotifiedMinute = nowMinute;
~&214621519406&~;
}
}
}
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
~&254480451320573660&~.~&495334332051582499&~: {
_timerManager.loadAlarms();
~&197102514&~ _c = ~&5971598&~.~&16810493623656567312&~("qrc:/qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml");
_timerManager.hasFrontlight = (_c.~&7083177691309&~ === ~&254480451320573660&~.~&214602073246&~);
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
}
/* Mode selector tabs*/
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ },
{ txt: "Chrono", ~&6504074414&~: "chrono" },
{ txt: "Alarm", ~&6504074414&~: "alarm" }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property bool ~&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&~.txt
~&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&~
}
}
}
}
/* 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.alarmMode && ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: "1 m", ~&197102508&~: 60000 },
{ txt: "5 m", ~&197102508&~: 300000 },
{ txt: "10 m", ~&197102508&~: 600000 },
{ txt: "30 m", ~&197102508&~: 1800000 },
{ txt: "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&~.txt
~&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&~: 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();
}
}
}
}
/* 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&~.fillHeight: ~&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&~();
~&6504254477&~.~&2766288418351025740&~.~&214622501183&~();
~&6504254477&~.~&2766288418351025740&~.~&6504147419&~("systemclock/window/settings-info");
}
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; 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&~.fillHeight: ~&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(m) { _alarmTimeSpinners.~&233736699967534&~ = m; }
}
~&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&~ d = new ~&6502586279&~();
_alarmTimeSpinners.~&214628545114&~ = d.getHours();
_alarmTimeSpinners.~&233736699967534&~ = d.getMinutes();
}
}
}
}
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 44
~&233744706647566&~: 8
~&7712155293725601&~ {
~&214634455770&~: [0, 15, 30, 45]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.fillHeight: ~&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&~.fillHeight: ~&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&~ m = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~;
~&5972376&~ (m >= 60) { m -= 60; }
_alarmTimeSpinners.~&233736699967534&~ = m;
}
}
}
}
}
~&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&~
~&233748328658231&~: ~&7082020628281&~.timerManager.hasFrontlight
~&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]]
TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
LOCATE AFTER ALL
INSERT {
~&425121728314878811&~.~&11119534664549952261&~ {
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&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&~: ~&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();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
/* Universal Close / Dismiss*/
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~
~&254542236275632405&~: {
~&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 /qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml
TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]]
LOCATE AFTER ALL
INSERT {
~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~;
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,89 @@
; ported from 3.23.0.64
; In 3.22/3.23 the create buttons were emitted by a C++ Repeater (not QML).
; By 3.27 the firmware migrated to a QML Repeater backed by createWidgets model,
; so this QMD was rewritten: it keeps the Repeater (search, calendar, quick-sheet)
; and inserts the notebook, folder and quick-sheet buttons inline after it.
AFFECT [[13636194074538366841]]
TRAVERSE [[6502786168]]#[[6504254477]]
TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
LOCATE AFTER ALL
INSERT {
~&254501108490678590&~ {
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&16239278111605497701&~: 2
~&214622605608&~: ~&"214621299494&~
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
}
~&254494525842443467&~ {
~&5972374&~: _notebookBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"8609871731041592465&~
}
}
~&254542236275632405&~: {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&11689254259907176254&~();
}
}
~&254494525842443467&~ {
~&5972374&~: _folderBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"1888152859110688812&~
}
}
~&254542236275632405&~: {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&1343967321191992457&~(~&"477188259920763378&~);
}
}
~&254494525842443467&~ {
~&5972374&~: _quickSheetBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&7081629735527&~.~&499747351624466981&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ !== ~&"214642862219&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"5726907772531472741&~
}
}
~&254542236275632405&~: {
~&197102514&~ doc = ~&2918312801265623842&~.~&498775298796480658&~();
~&5972376&~ (doc && doc.~&6504337259&~ === 1) {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&2766288418351025740&~.~&6504147419&~(~&"80852525132738217&~, {
~&8399386052748489877&~: doc.~&5972374&~,
~&6504167078&~: doc.~&254543134818768527&~ - 1
});
}
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,14 @@
AFFECT [[16664384747789373392]]
TRAVERSE [[3819512207256720568]] > [[7081645463424]]#[[14500576802168220354]] > [[254494525842443467]] > [[254501558939456351]]#[[16044303013921817534]]
LOCATE AFTER ALL
INSERT {
~&6503165774&~ {
~&6504315758&~: ~&12464413590283098527&~.~&233722187800420&~.~&8399929542203138183&~ + ~&"180910&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&6503823200&~.~&254543497768871654&~: 24
~&6014474628714890946&~: ~&6503165774&~.~&14019785292674113803&~
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785292674113803&~
}
}
END TRAVERSE
END AFFECT

62
3.27.1.0/clock.qmd Normal file
View File

@@ -0,0 +1,62 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/clock.qmd
AFFECT [[4911547370760691430]]
TRAVERSE [[3819512207256720568]] > [[14125623155555875541]]#[[15885405667098360701]]
LOCATE BEFORE [[16385778650434842232]]#[[7709552963638993992]]
INSERT {
~&16385778650434842232&~ {
~&5972374&~: clockSidebarItem
~&8399878573055752961&~: "clockSidebarObject"
~&214642559243&~: ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date)
~&8399601734642709923&~: ~&"4628214070783643584&~
~&7082453764421&~: ~&214625660372&~
~&233726547792244&~: ~&6504329801&~
/* 1000 = 1 second / 60000 = 1 minute */
property ~&197088788&~ set_Timer: 60000
property ~&7083178290016&~ set_Format_Date: "dd/MM hh:mm"
function getCestTime() {
~&7083121450889&~ new ~&6502586279&~();
}
~&254480451320573660&~.~&495334332051582499&~: {
~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(getCestTime(), set_Format_Date);
}
~&254542236275632405&~: {
~&5972376&~ (clockSidebarItem.set_Timer === 60000) {
clockSidebarItem.set_Timer = 1000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm:ss";
} ~&6503784146&~ {
clockSidebarItem.set_Timer = 60000;
clockSidebarItem.set_Format_Date = "dd/MM hh:mm";
}
~&214642551402&~.~&7713147298280334&~ = clockSidebarItem.set_Timer
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
/* Timer for update time */
~&214604601930&~ {
~&5972374&~: ~&214642551402&~
~&7713147298280334&~: clockSidebarItem.set_Timer
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
clockSidebarItem.~&214642559243&~ = ~&5971598&~.~&6460516198169535423&~(clockSidebarItem.getCestTime(), clockSidebarItem.set_Format_Date);
}
}
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&15061686673205541622&~
~&7081629735527&~.~&7797818826744279624&~: ~&7083038346995&~.~&214646099849&~
~&11921478716705041271&~: ~&6504254477&~
function ~&7712792149454042&~() {
~&7083211098251&~();
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,11 @@
AFFECT [[3197972396468700595]]
TRAVERSE [[6502786168]]#[[10742505294233322867]]
TRAVERSE [[12395602925408354507]]#[[214642769434]]
REMOVE [[425121728314878811.16765000136167945189.7081261925573]]#[[3012293087768835154]]
END TRAVERSE
END TRAVERSE
END AFFECT
AFFECT [[3513522976947834303]]
REMOVE [[454089850271038938]]
END AFFECT

View File

@@ -0,0 +1,68 @@
; credit for the original clock implementation: https://github.com/StarNumber12046/xovi-qmd-extensions/blob/main/quickSettingsClock.qmd
AFFECT [[12542166428983872557]]
IMPORT [[7082573613689.5972775.6504315758]] [[180922.180921]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[6502786168]] > [[425121728314878811.15389500557572665857]]#[[6026822765657717152]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&17520348323745447649&~: ~&7082020628281&~.~&10286380502125731829&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&7083363878252&~
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&14397210151462632996&~ {
~&5972374&~: quickSettingsClock
~&233721384511543&~ {
~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&3441383163516681764&~: ~&7083038346995&~.~&3441383163516681764&~
}
property ~&6503679477&~ showSeconds: ~&214625660372&~
property ~&7083178290016&~ minuteFormat: "dd/MM hh:mm"
property ~&7083178290016&~ secondFormat: "dd/MM hh:mm:ss"
property ~&197088788&~ minuteInterval: 60000
property ~&197088788&~ secondInterval: 1000
~&6504315758&~: ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), minuteFormat)
function updateClock() {
~&6504315758&~ = ~&5971598&~.~&6460516198169535423&~( new ~&6502586279&~(), showSeconds ? secondFormat : minuteFormat);
}
~&254480451320573660&~.~&495334332051582499&~: {
updateClock();
}
onShowSecondsChanged: {
quickSettingsClockTimer.~&233743006639214&~();
updateClock();
}
~&214604601930&~ {
~&5972374&~: quickSettingsClockTimer
~&7713147298280334&~: quickSettingsClock.showSeconds ? quickSettingsClock.secondInterval : quickSettingsClock.minuteInterval
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
quickSettingsClock.updateClock();
}
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&477346538929698200&~: ~&5971598&~.PointingHandCursor
~&254542236275632405&~: {
quickSettingsClock.showSeconds = !quickSettingsClock.showSeconds;
}
}
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,887 @@
; 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]]
TRAVERSE [[6502786168]]
LOCATE AFTER ALL
INSERT {
property alias timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property bool timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property bool isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property bool ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property bool addMode: ~&6504329801&~
property bool blinkLightOnNotification: ~&214625660372&~
property ~&197102514&~ _blinkLight: ~&6504117156&~
property bool hasFrontlight: ~&214625660372&~
/* Alarm state*/
property bool 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);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ m = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = m.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0);
} ~&6503784146&~ {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs);
}
}
function go() {
~&5972376&~ (_timerManager.timerMode) {
~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~;
}
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
_timerManager.isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
_timerManager.isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs = _timerManager.totalMs;
} ~&6503784146&~ {
_timerManager.totalMs = 0;
}
_timerManager.refresh();
}
/* Alarm management*/
function addAlarm(~&180977&~, m) {
~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: m, ~&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 (e) {
_timerManager.alarms = [];
_timerManager.nextAlarmId = 1;
}
}
};
xhr.~&6504279475&~();
}
~&214604601930&~ {
~&5972374&~: _alarmChecker
~&7713147298280334&~: 5000
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
~&197102514&~ d = 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&~(d.getTime() / 60000);
~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~;
~&197102514&~ ~&180977&~ = d.getHours();
~&197102514&~ m = d.getMinutes();
~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) {
~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~];
~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === m) {
_timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
_timerManager.lastNotifiedMinute = nowMinute;
~&214621519406&~;
}
}
}
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
~&254480451320573660&~.~&495334332051582499&~: {
_timerManager.loadAlarms();
~&197102514&~ _c = ~&5971598&~.~&16810493623656567312&~("qrc:/qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml");
_timerManager.hasFrontlight = (_c.~&7083177691309&~ === ~&254480451320573660&~.~&214602073246&~);
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
}
/* Mode selector tabs*/
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ },
{ txt: "Chrono", ~&6504074414&~: "chrono" },
{ txt: "Alarm", ~&6504074414&~: "alarm" }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property bool ~&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&~.txt
~&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&~
}
}
}
}
/* 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.alarmMode && ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: "1 m", ~&197102508&~: 60000 },
{ txt: "5 m", ~&197102508&~: 300000 },
{ txt: "10 m", ~&197102508&~: 600000 },
{ txt: "30 m", ~&197102508&~: 1800000 },
{ txt: "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&~.txt
~&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&~: 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();
}
}
}
}
/* 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&~.fillHeight: ~&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&~();
~&6504254477&~.~&2766288418351025740&~.~&214622501183&~();
~&6504254477&~.~&2766288418351025740&~.~&6504147419&~("systemclock/window/settings-info");
}
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; 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&~.fillHeight: ~&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(m) { _alarmTimeSpinners.~&233736699967534&~ = m; }
}
~&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&~ d = new ~&6502586279&~();
_alarmTimeSpinners.~&214628545114&~ = d.getHours();
_alarmTimeSpinners.~&233736699967534&~ = d.getMinutes();
}
}
}
}
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 44
~&233744706647566&~: 8
~&7712155293725601&~ {
~&214634455770&~: [0, 15, 30, 45]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.fillHeight: ~&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&~.fillHeight: ~&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&~ m = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~;
~&5972376&~ (m >= 60) { m -= 60; }
_alarmTimeSpinners.~&233736699967534&~ = m;
}
}
}
}
}
~&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&~
~&233748328658231&~: ~&7082020628281&~.timerManager.hasFrontlight
~&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]]
TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
LOCATE AFTER ALL
INSERT {
~&425121728314878811&~.~&11119534664549952261&~ {
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&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&~: ~&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();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
/* Universal Close / Dismiss*/
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~
~&254542236275632405&~: {
~&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 /qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml
TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]]
LOCATE AFTER ALL
INSERT {
~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~;
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,89 @@
; ported from 3.23.0.64
; In 3.22/3.23 the create buttons were emitted by a C++ Repeater (not QML).
; By 3.27 the firmware migrated to a QML Repeater backed by createWidgets model,
; so this QMD was rewritten: it keeps the Repeater (search, calendar, quick-sheet)
; and inserts the notebook, folder and quick-sheet buttons inline after it.
AFFECT [[13636194074538366841]]
TRAVERSE [[6502786168]]#[[6504254477]]
TRAVERSE [[254501108490678590]]#[[16596251247453125840]] > [[254501558939456351]]#[[6391657810197849963]]
LOCATE AFTER ALL
INSERT {
~&254501108490678590&~ {
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&16239278111605497701&~: 2
~&214622605608&~: ~&"214621299494&~
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
}
~&254494525842443467&~ {
~&5972374&~: _notebookBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~ || ~&6504254477&~.~&6504391364&~ === ~&"7834776425552261693&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"8609871731041592465&~
}
}
~&254542236275632405&~: {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&11689254259907176254&~();
}
}
~&254494525842443467&~ {
~&5972374&~: _folderBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ === ~&"233737316206498&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"1888152859110688812&~
}
}
~&254542236275632405&~: {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&1343967321191992457&~(~&"477188259920763378&~);
}
}
~&254494525842443467&~ {
~&5972374&~: _quickSheetBtn
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&16239278111605497701&~: 64
~&7081629735527&~.~&8399470807760157065&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: 40
~&7081629735527&~.~&499747351624466981&~: 40
~&233748328658231&~: ~&6504254477&~.~&6504391364&~ !== ~&"214642862219&~
~&14125623155555875541&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&233744706647566&~: 0
~&425121728314878811&~.~&6502767986&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&7082925185962&~
~&7083172477658&~: ~&"5726907772531472741&~
}
}
~&254542236275632405&~: {
~&197102514&~ doc = ~&2918312801265623842&~.~&498775298796480658&~();
~&5972376&~ (doc && doc.~&6504337259&~ === 1) {
~&197102514&~ ~&197093806&~ = ~&7083038346995&~.~&7083038346995&~.~&7083038346995&~.~&7083038346995&~;
~&197093806&~.~&2766288418351025740&~.~&6504147419&~(~&"80852525132738217&~, {
~&8399386052748489877&~: doc.~&5972374&~,
~&6504167078&~: doc.~&254543134818768527&~ - 1
});
}
}
}
}
END TRAVERSE
END AFFECT

View File

@@ -0,0 +1,887 @@
; 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]]
TRAVERSE [[6502786168]]
LOCATE AFTER ALL
INSERT {
property alias timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property bool timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property bool isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property bool ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property bool addMode: ~&6504329801&~
property bool blinkLightOnNotification: ~&214625660372&~
property ~&197102514&~ _blinkLight: ~&6504117156&~
property bool hasFrontlight: ~&214625660372&~
/* Alarm state*/
property bool 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);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ m = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = m.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.remainMs > 0 ? _timerManager.remainMs : 0);
} ~&6503784146&~ {
_timerManager.~&478322454160073828&~ = _timerManager.fmt(_timerManager.totalMs);
}
}
function go() {
~&5972376&~ (_timerManager.timerMode) {
~&5972376&~ (_timerManager.remainMs <= 0) ~&7083121450889&~;
}
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
_timerManager.isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
_timerManager.isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs = _timerManager.totalMs;
} ~&6503784146&~ {
_timerManager.totalMs = 0;
}
_timerManager.refresh();
}
/* Alarm management*/
function addAlarm(~&180977&~, m) {
~&197102514&~ ~&180970&~ = { ~&5972374&~: _timerManager.nextAlarmId, hour: ~&180977&~, minute: m, ~&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 (e) {
_timerManager.alarms = [];
_timerManager.nextAlarmId = 1;
}
}
};
xhr.~&6504279475&~();
}
~&214604601930&~ {
~&5972374&~: _alarmChecker
~&7713147298280334&~: 5000
~&7083121289162&~: ~&6504329801&~
~&233743626668842&~: ~&6504329801&~
~&495358363329399331&~: {
~&197102514&~ d = 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&~(d.getTime() / 60000);
~&5972376&~ (nowMinute === _timerManager.lastNotifiedMinute) ~&7083121450889&~;
~&197102514&~ ~&180977&~ = d.getHours();
~&197102514&~ m = d.getMinutes();
~&197085552&~ (~&197102514&~ ~&180978&~ = 0; ~&180978&~ < _timerManager.alarms.~&7082886407723&~; ~&180978&~++) {
~&197102514&~ ~&180970&~ = _timerManager.alarms[~&180978&~];
~&5972376&~ (~&180970&~.~&233726547792244&~ && ~&180970&~.hour === ~&180977&~ && ~&180970&~.minute === m) {
_timerManager.alarmNotificationText = ~&180970&~.hour.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + ~&180970&~.minute.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
_timerManager.lastNotifiedMinute = nowMinute;
~&214621519406&~;
}
}
}
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.alarmMode) ~&7083121450889&~;
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
~&254480451320573660&~.~&495334332051582499&~: {
_timerManager.loadAlarms();
~&197102514&~ _c = ~&5971598&~.~&16810493623656567312&~("qrc:/qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml");
_timerManager.hasFrontlight = (_c.~&7083177691309&~ === ~&254480451320573660&~.~&214602073246&~);
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: _timerUI.~&2122835675838176157&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
}
/* Mode selector tabs*/
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: ~&"214604601930&~, ~&6504074414&~: ~&"214642551402&~ },
{ txt: "Chrono", ~&6504074414&~: "chrono" },
{ txt: "Alarm", ~&6504074414&~: "alarm" }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property bool ~&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&~.txt
~&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&~
}
}
}
}
/* 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.alarmMode && ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ txt: "1 m", ~&197102508&~: 60000 },
{ txt: "5 m", ~&197102508&~: 300000 },
{ txt: "10 m", ~&197102508&~: 600000 },
{ txt: "30 m", ~&197102508&~: 1800000 },
{ txt: "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&~.txt
~&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&~: 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();
}
}
}
}
/* 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&~.fillHeight: ~&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&~();
~&6504254477&~.~&2766288418351025740&~.~&214622501183&~();
~&6504254477&~.~&2766288418351025740&~.~&6504147419&~("systemclock/window/settings-info");
}
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; 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&~.fillHeight: ~&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(m) { _alarmTimeSpinners.~&233736699967534&~ = m; }
}
~&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&~ d = new ~&6502586279&~();
_alarmTimeSpinners.~&214628545114&~ = d.getHours();
_alarmTimeSpinners.~&233736699967534&~ = d.getMinutes();
}
}
}
}
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 44
~&233744706647566&~: 8
~&7712155293725601&~ {
~&214634455770&~: [0, 15, 30, 45]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.fillHeight: ~&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&~.fillHeight: ~&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&~ m = _alarmTimeSpinners.~&233736699967534&~ + ~&254539508423767444&~;
~&5972376&~ (m >= 60) { m -= 60; }
_alarmTimeSpinners.~&233736699967534&~ = m;
}
}
}
}
}
~&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&~
~&233748328658231&~: ~&7082020628281&~.timerManager.hasFrontlight
~&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]]
TRAVERSE [[8397788359424131273]]#[[6504254477]] > [[8397993708429497603]]#[[7713531976371484]]
LOCATE AFTER ALL
INSERT {
~&425121728314878811&~.~&11119534664549952261&~ {
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&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&~: ~&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();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ {
~&233748328658231&~: ~&7082020628281&~.timerManager.alarmNotificationText === ""
}
/* Universal Close / Dismiss*/
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&7082020628281&~.timerManager.alarmNotificationText !== "" ? ~&"233683755411397&~ : ~&"214584551711&~
~&254542236275632405&~: {
~&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 /qt/qml/xofm/modules/light/front/qml/QuickSettingsSlider.qml
TRAVERSE [[425121728314878811.7081916140908]]#[[6504254477]]
LOCATE AFTER ALL
INSERT {
~&254480451320573660&~.~&495334332051582499&~: ~&7082020628281&~.timerManager._blinkLight = ~&6504254477&~.~&214633057601&~;
}
END TRAVERSE
END AFFECT

156
README.md
View File

@@ -2,53 +2,115 @@
## Installation
Installation via the [Vellum package manager](https://github.com/vellum-dev/vellum) is recommended. Dependencies are handled automatically.
Installation via the [Vellum package manager](https://github.com/vellum-dev/vellum) is recommended. Dependencies are handled automatically.
### Manual
All extensions require qt-resource-rebuilder, some will require other xovi extensions. See each extension for details.
<details>
All extensions require qt-resource-rebuilder, some will require other xovi extensions. See each extension for details.
Instructions to install xovi can be found [here](https://github.com/asivery/rmpp-xovi-extensions).
Instructions to install xovi can be found [here](https://github.com/asivery/rmpp-xovi-extensions).
Download the extensions from the folder matching your reMarkable software version.
Download the extensions from the folder matching your reMarkable software version.
Copy the `.qmd` files to `/home/root/xovi/exthome/qt-resource-rebuilder/` and restart xovi.
Copy the `.qmd` files to `/home/root/xovi/exthome/qt-resource-rebuilder/` and restart xovi.
</details>
Some of the QMD files in this repo are my own and some are modifications I've made to extensions created by others in the community. Modifications will link to the original author.
## Notes
Some of the QMD files in this repo are my own and some are modifications I've made to extensions created by others in the community. Modifications will link to the original author. Extensions have been tested only for the latest reMarkable OS version, though they may work on newer versions.
Extensions have been tested only for the latest reMarkable OS version, though they may work on newer versions.
## Compatibility
Beta releases are not tested nor supported.
| Extension | `3.22.0.64` | `3.23.0.64` | `3.24.0.149` | `3.25.1.1` | `3.26.0.68` | `3.27.1.0` | `3.27.3.0` | Comment |
| ----------------------- | ----------- | ----------- | ------------ | ---------- | ----------- | ---------- | ---------- | -------------------------------------------------------------------------------- |
| `batteryPercentage` | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| `clock` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| `convertToText_remover` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| `hideDocumentClose` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Use [hide-document-close](https://github.com/ingatellent) by ingatellent instead |
| `quickSettingsClock` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| `quickSettingsTimer` | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| `uncompressDock` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | |
| `favoriteButton` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Implemented by reMarkable in later versions |
| `forceSync` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | WIP |
| `tagButton` | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | Implemented by reMarkable in later versions |
**Note:** QMDs for version 3.22.4.2 are the same as the ones for 3.22.0.64.
**Note:** QMDs for version `3.22.4.2` are the same as the ones for `3.22.0.64`.
**Note 2:** Make sure to use latest version of qt-resource-rebuilder for best compatibility.
## Extensions
### Version 3.27.3.0
#### `batteryPercentage.qmd`
### `batteryPercentage.qmd`
[![vellum](https://img.shields.io/badge/vellum-battery--percentage-purple)](https://vellum.delivery/#/package/battery-percentage/)
- Shows the battery percentage next to the battery icon in the main view header.
<img src="images/batteryPercentage.png" width="400">
#### `clock.qmd`
**Available for:** `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
---
### `clock.qmd`
[![vellum](https://img.shields.io/badge/vellum-sidebar--clock-purple)](https://vellum.delivery/#/package/sidebar-clock/)
- Adds a live clock to the library sidebar; tap the entry to toggle seconds display.
<img src="images/clock_1.png" width="400">
<img src="images/clock_2.png" width="400">
Note: You have to set the right timezone on the tablet (you can use [reManager](https://github.com/rmitchellscott/reManager) to set it)
<img src="images/clock_1.png" width="300"><img src="images/clock_2.png" width="300">
#### `convertToText_remover.qmd`
**Note:** You have to set the right timezone on the tablet (you can use [reManager](https://github.com/rmitchellscott/reManager) to set it)
**Available for:** `3.22.0.64`, `3.23.0.64`, `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
---
### `convertToText_remover.qmd`
[![vellum](https://img.shields.io/badge/vellum-convert--to--text--remover-purple)](https://vellum.delivery/#/package/convert-to-text-remover/)
- Removes the `Convert to text` option from selection menus and the toolbar (ported from 3.23.0.64).
- Removes the `Convert to text` option from selection menus and the toolbar.
<img src="images/convertToText_remover.png" width="400">
#### `uncompressDock.qmd`
**Available for:** `3.22.0.64`, `3.23.0.64`, `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
---
### `hideDocumentClose.qmd`
- Hides the close button in the document toolbar to prevent accidental exits.
Use [hide-document-close](https://github.com/ingatellent) by ingatellent instead.
**Available for:** `3.22.0.64`, `3.23.0.64`
---
### `quickSettingsClock.qmd`
- Injects a tappable clock into the Quick Settings header; tap to toggle between minute and second precision.
Use [quicksettings-clock-serif](https://github.com/rmitchellscott) by rmitchellscott instead.
<img src="images/quickSettingsClock.png" width="400">
**Available for:** `3.22.0.64`, `3.23.0.64`, `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
---
### `quickSettingsTimer.qmd`
[![vellum](https://img.shields.io/badge/vellum-quicksettings--timer-purple)](https://vellum.delivery/#/package/quicksettings-timer/)
- 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 (<img src="images/plus.svg" width="20" height="20"> increments, <img src="images/plus_circle.svg" width="20" height="20"> 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. (Only on devices with a reading light.)
- 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.
<img src="images/quickSettingsTimer_1.png" width="200"><img src="images/quickSettingsTimer_2.png" width="200"><img src="images/quickSettingsTimer_3.png" width="200">
<img src="images/quickSettingsTimer_4.png" width="600">
<img src="images/quickSettingsTimer_5.png" width="600">
**Available for:** `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
---
### `uncompressDock.qmd`
[![vellum](https://img.shields.io/badge/vellum-uncompress--dock-purple)](https://vellum.delivery/#/package/uncompress-dock/)
- Replaces the widget-based create menu with dedicated buttons for notebook, folder, and quick sheet creation.
- **Rewritten** for the new `HomeScreen.CreateMenu` — the old `Navigator.CreateMenu` is no longer used in 3.27.
@@ -56,50 +118,36 @@ Note: You have to set the right timezone on the tablet (you can use [reManager](
<img src="images/uncompressDock.png" width="400">
#### `quickSettingsClock.qmd`
- Injects a tappable clock into the Quick Settings header; tap to toggle between minute and second precision.
Use [quicksettings-clock-serif](https://github.com/rmitchellscott) by rmitchellscott instead.
**Available for:** `3.22.0.64`, `3.23.0.64`, `3.24.0.149`, `3.25.1.1`, `3.26.0.68`, `3.27.1.0`, `3.27.3.0`
<img src="images/quickSettingsClock.png" width="400">
---
### `tagButton.qmd` & `favoriteButton.qmd`
- Those tweaks have been implemented by the reMarkable team in the latest update, so they are no longer needed :)
### Version 3.23.0.64
#### `clock.qmd`
- Adds a live clock to the library sidebar; tap the entry to toggle seconds display.
#### `quickSettingsClock.qmd`
- Injects a tappable clock into the Quick Settings header; tap to toggle between minute and second precision.
#### `forceSync.qmd`
[![vellum](https://img.shields.io/badge/vellum-force--sync-purple)](https://vellum.delivery/#/package/force-sync/)
<img src="images/forceSync.png" width="400">
- Adds a cloud button in Quick Settings that forces a library sync when tapped (need further testing to confirm it works as intended).
#### `favoriteButton.qmd`
### `favoriteButton.qmd`
[![vellum](https://img.shields.io/badge/vellum-favorite--button-purple)](https://vellum.delivery/#/package/favorite-button/)
- Restores a `Favorite` action in the document list header for faster pinning.
<img src="images/favoriteButton.png" width="400">
#### `tagButton.qmd`
**Available for:** `3.22.0.64`, `3.23.0.64`\*
*\*No longer needed — implemented by reMarkable in later versions.*
---
### `forceSync.qmd`
[![vellum](https://img.shields.io/badge/vellum-force--sync-purple)](https://vellum.delivery/#/package/force-sync/)
- Adds a cloud button in Quick Settings that forces a library sync when tapped (WIP — further testing needed).
<img src="images/forceSync.png" width="400">
**Available for:** `3.22.0.64`, `3.23.0.64`
---
### `tagButton.qmd`
[![vellum](https://img.shields.io/badge/vellum-tag--button-purple)](https://vellum.delivery/#/package/tag-button/)
- Puts a `Tag` action next to other list controls to open the tag editor directly.
<img src="images/tagButton.png" width="400">
#### `convertToText_remover.qmd`
- Removes the `Convert to text` option from selection menus and the toolbar.
#### `uncompressDock.qmd`
- Replaces the condensed `More` menu in the new document dock with dedicated buttons for notebook, folder, and quick sheet creation.
<img src="images/uncompressDock_old.png" width="400">
#### `hideDocumentClose.qmd`
- Hides the close button in the document toolbar to prevent accidental exits.
Use [hide-document-close](https://github.com/ingatellent) by ingatellent instead.
**Available for:** `3.22.0.64`, `3.23.0.64`\*
*\*No longer needed — implemented by reMarkable in later versions.*

View File

@@ -2,7 +2,7 @@
# Configuration
QMLDIFF="./qmldiff"
HASHTAB="hashtab_3.23"
HASHTAB="hashtabs/hashtab_3.26.0.68"
# Usage
if [ $# -lt 1 ]; then

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

4
images/plus.svg Normal file
View File

@@ -0,0 +1,4 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="2" y="2" width="44" height="44" rx="8" fill="white"/>
<path d="M18.0074 22.5C20.4893 22.496 22.5 20.4828 22.5 18V6H25.5V18C25.5 20.4828 27.5106 22.4959 29.9924 22.5L42 22.5V25.5L29.9913 25.5C27.51 25.5047 25.5 27.5176 25.5 30V42H22.5V30C22.5 27.5149 20.485 25.5 18 25.5L6 25.5V22.5H18.0074Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 419 B

5
images/plus_circle.svg Normal file
View File

@@ -0,0 +1,5 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect x="2" y="2" width="44" height="44" rx="8" fill="white"/>
<path d="M15 22.5H19.5C21.1569 22.5 22.5 21.1569 22.5 19.5V15H25.5V19.5C25.5 21.1569 26.8431 22.5 28.5 22.5L33 22.5V25.5L28.4932 25.5C26.8395 25.5037 25.5 26.8454 25.5 28.5V33H22.5V28.5C22.5 26.8454 21.1605 25.5037 19.5068 25.5L15 25.5V22.5Z" fill="black"/>
<path d="M24 4.5C34.7696 4.5 43.5 13.2304 43.5 24C43.5 34.7696 34.7696 43.5 24 43.5C13.2304 43.5 4.5 34.7696 4.5 24C4.5 13.2304 13.2304 4.5 24 4.5ZM40.5 24C40.5 14.8873 33.1127 7.5 24 7.5C14.8873 7.5 7.5 14.8873 7.5 24C7.5 33.1127 14.8873 40.5 24 40.5C33.1127 40.5 40.5 33.1127 40.5 24Z" fill="black"/>
</svg>

After

Width:  |  Height:  |  Size: 727 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 KiB