Compare commits

..

5 Commits

Author SHA1 Message Date
√(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
33 changed files with 2817 additions and 54 deletions

3
.gitignore vendored
View File

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

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,363 @@
; Quick Settings Timer/Chrono
; Adds a countdown timer and stopwatch 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 ~&214620122227&~ timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property ~&6503679477&~ timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property ~&6503679477&~ isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property ~&6503679477&~ addMode: ~&6504329801&~
function fmt(ms) {
~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (timerMode) {
~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
} ~&6503784146&~ {
~&478322454160073828&~ = fmt(totalMs);
}
}
function go() {
~&5972376&~ (timerMode) {
~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
}
~&16765420033347753489&~ = ~&214625660372&~;
isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
~&6504295855&~();
~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (timerMode) {
remainMs = totalMs;
} ~&6503784146&~ {
totalMs = 0;
}
refresh();
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
}
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
/* Mode selector tabs */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
{ ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 24
~&6503823200&~.~&6503679370&~: ~&7082453764421&~
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
~&5972376&~ (!~&254539508423767444&~.isTimer) {
~&7082020628281&~.timerManager.totalMs = 0;
}
~&7082020628281&~.timerManager.refresh();
}
}
~&254501108490678590&~ {
~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&7082729686082&~: 3
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
}
}
}
}
/* Time display (fixed width to avoid resizing) */
~&6502786168&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&7797818826744279624&~: 300
~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
~&6503165774&~ {
~&5972374&~: _display
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
~&6503823200&~.~&254543497768871654&~: 56
~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
}
}
/* Preset buttons (timer mode only) */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: "1 m", ~&197102508&~: 60000 },
{ ~&197101097&~: "5 m", ~&197102508&~: 300000 },
{ ~&197101097&~: "10 m", ~&197102508&~: 600000 },
{ ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
{ ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 50
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: "#EEEEEE"
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
} ~&6503784146&~ {
~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
}
~&7082020628281&~.timerManager.refresh();
}
}
}
}
}
/* Control buttons */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
/* Add/Set toggle (timer only) */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
}
}
}
/* Reset */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&"6968812144639225076&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
}
}
/* Start / Stop */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; Notification bar when timer finishes - visible in all modes
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&~
~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
~&6504315758&~: "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&~
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"233701679664206&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.doReset();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"214584551711&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
}
}
}
}
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,363 @@
; Quick Settings Timer/Chrono
; Adds a countdown timer and stopwatch 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 ~&214620122227&~ timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property ~&6503679477&~ timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property ~&6503679477&~ isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property ~&6503679477&~ addMode: ~&6504329801&~
function fmt(ms) {
~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (timerMode) {
~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
} ~&6503784146&~ {
~&478322454160073828&~ = fmt(totalMs);
}
}
function go() {
~&5972376&~ (timerMode) {
~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
}
~&16765420033347753489&~ = ~&214625660372&~;
isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
~&6504295855&~();
~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (timerMode) {
remainMs = totalMs;
} ~&6503784146&~ {
totalMs = 0;
}
refresh();
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
}
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
/* Mode selector tabs */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
{ ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 24
~&6503823200&~.~&6503679370&~: ~&7082453764421&~
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
~&5972376&~ (!~&254539508423767444&~.isTimer) {
~&7082020628281&~.timerManager.totalMs = 0;
}
~&7082020628281&~.timerManager.refresh();
}
}
~&254501108490678590&~ {
~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&7082729686082&~: 3
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
}
}
}
}
/* Time display (fixed width to avoid resizing) */
~&6502786168&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&7797818826744279624&~: 300
~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
~&6503165774&~ {
~&5972374&~: _display
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
~&6503823200&~.~&254543497768871654&~: 56
~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
}
}
/* Preset buttons (timer mode only) */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: "1 m", ~&197102508&~: 60000 },
{ ~&197101097&~: "5 m", ~&197102508&~: 300000 },
{ ~&197101097&~: "10 m", ~&197102508&~: 600000 },
{ ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
{ ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 50
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: "#EEEEEE"
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
} ~&6503784146&~ {
~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
}
~&7082020628281&~.timerManager.refresh();
}
}
}
}
}
/* Control buttons */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
/* Add/Set toggle (timer only) */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
}
}
}
/* Reset */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&"6968812144639225076&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
}
}
/* Start / Stop */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; Notification bar when timer finishes - visible in all modes
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&~
~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
~&6504315758&~: "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&~
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"233701679664206&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.doReset();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"214584551711&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
}
}
}
}
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,363 @@
; Quick Settings Timer/Chrono
; Adds a countdown timer and stopwatch 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 ~&214620122227&~ timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property ~&6503679477&~ timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property ~&6503679477&~ isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property ~&6503679477&~ addMode: ~&6504329801&~
function fmt(ms) {
~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(ms);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (timerMode) {
~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
} ~&6503784146&~ {
~&478322454160073828&~ = fmt(totalMs);
}
}
function go() {
~&5972376&~ (timerMode) {
~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
}
~&16765420033347753489&~ = ~&214625660372&~;
isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
~&6504295855&~();
~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (timerMode) {
remainMs = totalMs;
} ~&6503784146&~ {
totalMs = 0;
}
refresh();
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
}
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
/* Mode selector tabs */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
{ ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 24
~&6503823200&~.~&6503679370&~: ~&7082453764421&~
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
~&5972376&~ (!~&254539508423767444&~.isTimer) {
~&7082020628281&~.timerManager.totalMs = 0;
}
~&7082020628281&~.timerManager.refresh();
}
}
~&254501108490678590&~ {
~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&7082729686082&~: 3
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
}
}
}
}
/* Time display (fixed width to avoid resizing) */
~&6502786168&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&7797818826744279624&~: 300
~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
~&6503165774&~ {
~&5972374&~: _display
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
~&6503823200&~.~&254543497768871654&~: 56
~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
}
}
/* Preset buttons (timer mode only) */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: "1 m", ~&197102508&~: 60000 },
{ ~&197101097&~: "5 m", ~&197102508&~: 300000 },
{ ~&197101097&~: "10 m", ~&197102508&~: 600000 },
{ ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
{ ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 50
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: "#EEEEEE"
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
} ~&6503784146&~ {
~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
}
~&7082020628281&~.timerManager.refresh();
}
}
}
}
}
/* Control buttons */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
/* Add/Set toggle (timer only) */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
}
}
}
/* Reset */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&"6968812144639225076&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
}
}
/* Start / Stop */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; Notification bar when timer finishes - visible in all modes
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&~
~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
~&6504315758&~: "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&~
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"233701679664206&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.doReset();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"214584551711&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
}
}
}
}
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,363 @@
; Quick Settings Timer/Chrono
; Adds a countdown timer and stopwatch 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 ~&214620122227&~ timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property ~&6503679477&~ timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property ~&6503679477&~ isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property ~&6503679477&~ addMode: ~&6504329801&~
function fmt(~&5972521&~) {
~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(~&5972521&~);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (timerMode) {
~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
} ~&6503784146&~ {
~&478322454160073828&~ = fmt(totalMs);
}
}
function go() {
~&5972376&~ (timerMode) {
~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
}
~&16765420033347753489&~ = ~&214625660372&~;
isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
~&6504295855&~();
~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (timerMode) {
remainMs = totalMs;
} ~&6503784146&~ {
totalMs = 0;
}
refresh();
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
}
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
/* Mode selector tabs */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
{ ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 24
~&6503823200&~.~&6503679370&~: ~&7082453764421&~
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
~&5972376&~ (!~&254539508423767444&~.isTimer) {
~&7082020628281&~.timerManager.totalMs = 0;
}
~&7082020628281&~.timerManager.refresh();
}
}
~&254501108490678590&~ {
~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&7082729686082&~: 3
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
}
}
}
}
/* Time display (fixed width to avoid resizing) */
~&6502786168&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&7797818826744279624&~: 300
~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
~&6503165774&~ {
~&5972374&~: _display
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
~&6503823200&~.~&254543497768871654&~: 56
~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
}
}
/* Preset buttons (timer mode only) */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: "1 m", ~&197102508&~: 60000 },
{ ~&197101097&~: "5 m", ~&197102508&~: 300000 },
{ ~&197101097&~: "10 m", ~&197102508&~: 600000 },
{ ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
{ ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 50
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: "#EEEEEE"
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
} ~&6503784146&~ {
~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
}
~&7082020628281&~.timerManager.refresh();
}
}
}
}
}
/* Control buttons */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
/* Add/Set toggle (timer only) */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
}
}
}
/* Reset */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&"6968812144639225076&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
}
}
/* Start / Stop */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; Notification bar when timer finishes - visible in all modes
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&~
~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
~&6504315758&~: "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&~
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"233701679664206&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.doReset();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"214584551711&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
}
}
}
}
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,363 @@
; Quick Settings Timer/Chrono
; Adds a countdown timer and stopwatch 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 ~&214620122227&~ timerManager: _timerManager
~&6502786168&~ {
~&5972374&~: _timerManager
property ~&6503679477&~ timerMode: ~&6504329801&~
property ~&197088788&~ totalMs: 0
property ~&197088788&~ remainMs: 0
property ~&6503679477&~ isRunning: ~&214625660372&~
property ~&7083178290016&~ ~&478322454160073828&~: "00:00"
property ~&6503679477&~ ~&16765420033347753489&~: ~&214625660372&~
property ~&197088788&~ presetMs: 60000
property ~&6503679477&~ addMode: ~&6504329801&~
function fmt(~&5972521&~) {
~&197102514&~ ~&180970&~ = ~&6502909715&~.~&197079679&~(~&5972521&~);
~&197102514&~ ~&180977&~ = ~&6502909715&~.~&214626058827&~(~&180970&~ / 3600000);
~&197102514&~ ~&180982&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 3600000) / 60000);
~&197102514&~ ~&180988&~ = ~&6502909715&~.~&214626058827&~((~&180970&~ % 60000) / 1000);
~&197102514&~ mm = ~&180982&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&197102514&~ ss = ~&180988&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~);
~&5972376&~ (~&180977&~ > 0) {
~&7083121450889&~ ~&180977&~.~&7713616118928163&~().~&7713428190834284&~(2, ~&'180921&~) + ~&"180931&~ + mm + ~&"180931&~ + ss;
}
~&7083121450889&~ mm + ~&"180931&~ + ss;
}
function refresh() {
~&5972376&~ (timerMode) {
~&478322454160073828&~ = fmt(remainMs > 0 ? remainMs : 0);
} ~&6503784146&~ {
~&478322454160073828&~ = fmt(totalMs);
}
}
function go() {
~&5972376&~ (timerMode) {
~&5972376&~ (remainMs <= 0) ~&7083121450889&~;
}
~&16765420033347753489&~ = ~&214625660372&~;
isRunning = ~&6504329801&~;
_tick.~&214641748151&~();
}
function ~&6504295855&~() {
isRunning = ~&214625660372&~;
_tick.~&6504295855&~();
}
function doReset() {
~&6504295855&~();
~&16765420033347753489&~ = ~&214625660372&~;
~&5972376&~ (timerMode) {
remainMs = totalMs;
} ~&6503784146&~ {
totalMs = 0;
}
refresh();
}
~&214604601930&~ {
~&5972374&~: _tick
~&7713147298280334&~: 100
~&7083121289162&~: ~&6504329801&~
~&495358363329399331&~: {
~&5972376&~ (_timerManager.timerMode) {
_timerManager.remainMs -= 100;
~&5972376&~ (_timerManager.remainMs <= 0) {
_timerManager.remainMs = 0;
_timerManager.~&6504295855&~();
_timerManager.~&16765420033347753489&~ = ~&6504329801&~;
}
} ~&6503784146&~ {
_timerManager.totalMs += 100;
}
_timerManager.refresh();
}
}
}
}
END TRAVERSE
END AFFECT
AFFECT [[12542166428983872557]]
TRAVERSE [[7711468349764991]] > [[6502786168]] > [[8397788359424131273]] > [[14125623155555875541]]#[[233718721544006]]
LOCATE AFTER [[254501558939456351]]#[[8399137618543699982]]
INSERT {
~&425121728314878811&~.~&15740235808997988493&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
}
~&14125623155555875541&~ {
~&5972374&~: _timerUI
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&8399743405844438450&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&499747351624466981&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233740248806464&~.~&214641496386&~
~&7081629735527&~.~&254549367831075482&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&7082925185962&~
/* Mode selector tabs */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: 0
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: ~&"214604601930&~, isTimer: ~&6504329801&~ },
{ ~&197101097&~: "Chrono", isTimer: ~&214625660372&~ }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 68
readonly property ~&6503679477&~ ~&7082453764421&~: ~&7082020628281&~.timerManager.timerMode === ~&254539508423767444&~.isTimer
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 24
~&6503823200&~.~&6503679370&~: ~&7082453764421&~
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : "#888888"
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.timerMode = ~&254539508423767444&~.isTimer;
~&5972376&~ (!~&254539508423767444&~.isTimer) {
~&7082020628281&~.timerManager.totalMs = 0;
}
~&7082020628281&~.timerManager.refresh();
}
}
~&254501108490678590&~ {
~&233721384511543&~.~&7082507142622&~: ~&7083038346995&~.~&7082507142622&~
~&233721384511543&~.~&6504027668&~: ~&7083038346995&~.~&6504027668&~
~&233721384511543&~.~&214640173127&~: ~&7083038346995&~.~&214640173127&~
~&7082729686082&~: 3
~&214622605608&~: ~&7082453764421&~ ? ~&7082020628281&~.~&8399340017235344933&~ : ~&"503220030291830651&~
}
}
}
}
/* Time display (fixed width to avoid resizing) */
~&6502786168&~ {
~&7081629735527&~.~&254522510204479688&~: ~&5971598&~.~&14019785274593562237&~
~&7081629735527&~.~&7797818826744279624&~: 300
~&7081629735527&~.~&17520348323745447649&~: _display.~&2122835675838176157&~
~&6503165774&~ {
~&5972374&~: _display
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.~&478322454160073828&~
~&6503823200&~.~&254543497768871654&~: 56
~&6503823200&~.~&7083316716977&~: ~&6502673216&~.ExtraLight
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
~&15450610953915458578&~: ~&6503165774&~.~&14019785274593562237&~
}
}
/* Preset buttons (timer mode only) */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&7712155293725601&~ {
~&214634455770&~: [
{ ~&197101097&~: "1 m", ~&197102508&~: 60000 },
{ ~&197101097&~: "5 m", ~&197102508&~: 300000 },
{ ~&197101097&~: "10 m", ~&197102508&~: 600000 },
{ ~&197101097&~: "30 m", ~&197102508&~: 1800000 },
{ ~&197101097&~: "1 h", ~&197102508&~: 3600000 }
]
~&7712922269353028&~: ~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 50
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: "#EEEEEE"
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&254539508423767444&~.~&197101097&~
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.~&8399340017235344933&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&6504295855&~();
~&7082020628281&~.timerManager.presetMs = ~&254539508423767444&~.~&197102508&~;
~&5972376&~ (~&7082020628281&~.timerManager.addMode) {
~&7082020628281&~.timerManager.totalMs += ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs += ~&254539508423767444&~.~&197102508&~;
} ~&6503784146&~ {
~&7082020628281&~.timerManager.totalMs = ~&254539508423767444&~.~&197102508&~;
~&7082020628281&~.timerManager.remainMs = ~&254539508423767444&~.~&197102508&~;
}
~&7082020628281&~.timerManager.refresh();
}
}
}
}
}
/* Control buttons */
~&254501558939456351&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&233744706647566&~: ~&254477762679831355&~.~&214603824602&~.~&7713684474795983&~.~&7713442318223278&~.~&233744706647566&~.~&214641496386&~
/* Add/Set toggle (timer only) */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&233748328658231&~: ~&7082020628281&~.timerManager.timerMode
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&7082020628281&~.timerManager.addMode ? ~&"15094524446772001204&~ : ~&"5724976033632521381&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.addMode = !~&7082020628281&~.timerManager.addMode;
}
}
}
/* Reset */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&7082507052999&~.~&214622605608&~: "#888888"
~&7082507052999&~.~&214646099849&~: 1
~&214622605608&~: ~&"503220030291830651&~
}
~&425121728314878811&~.~&6502767986&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504284228&~: ~&425121728314878811&~.~&7082020628281&~.~&7713132906001613&~.~&214641496386&~
~&7083172477658&~: ~&"6968812144639225076&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: ~&7082020628281&~.timerManager.doReset()
}
}
/* Start / Stop */
~&6502786168&~ {
~&7081629735527&~.~&254529418434902000&~: ~&6504329801&~
~&7081629735527&~.~&17520348323745447649&~: 70
~&254501108490678590&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&7083116119249&~: 8
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? "#EEEEEE" : ~&7082020628281&~.~&8399340017235344933&~
}
~&6503165774&~ {
~&233721384511543&~.~&7712879746914881&~: ~&7083038346995&~
~&6504315758&~: ~&7082020628281&~.timerManager.isRunning ? "Stop" : "Start"
~&6503823200&~.~&254543497768871654&~: 20
~&6503823200&~.~&6503679370&~: ~&6504329801&~
~&214622605608&~: ~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.~&8399340017235344933&~ : ~&7082020628281&~.~&8399340017260114793&~
}
~&254494525842443467&~ {
~&233721384511543&~.~&6503816592&~: ~&7083038346995&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.isRunning ? ~&7082020628281&~.timerManager.~&6504295855&~() : ~&7082020628281&~.timerManager.go();
}
}
}
}
}
}
END TRAVERSE
END AFFECT
; Notification bar when timer finishes - visible in all modes
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&~
~&6504337259&~: ~&254477762679831355&~.~&11119534664549952261&~.~&233740920352621&~
~&425121728314878811&~.~&11119534664549952261&~.~&233695222288046&~ {
~&6504315758&~: "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&~
}
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"233701679664206&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.doReset();
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+1min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 60000;
~&7082020628281&~.timerManager.remainMs += 60000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: "+5min"
~&254542236275632405&~: {
~&7082020628281&~.timerManager.totalMs += 300000;
~&7082020628281&~.timerManager.remainMs += 300000;
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
~&7082020628281&~.timerManager.go();
}
}
~&425121728314878811&~.~&11119534664549952261&~.~&233683758819504&~ { }
~&425121728314878811&~.~&11119534664549952261&~.~&7081261925573&~ {
~&6504315758&~: ~&"214584551711&~
~&254542236275632405&~: {
~&7082020628281&~.timerManager.~&16765420033347753489&~ = ~&214625660372&~;
}
}
}
}
END TRAVERSE
END AFFECT

150
README.md
View File

@@ -2,53 +2,109 @@
## Installation ## 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 ### 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. **Note 2:** Make sure to use latest version of qt-resource-rebuilder for best compatibility.
## Extensions ## 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/) [![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. - Shows the battery percentage next to the battery icon in the main view header.
<img src="images/batteryPercentage.png" width="400"> <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/) [![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. - 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_1.png" width="300"><img src="images/clock_2.png" width="300">
<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)
#### `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/) [![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"> <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 and stopwatch to the Quick Settings panel, under the light slider.
- Switch between Timer (presets: 1min, 5min, 10min, 30min, 1h) and Chrono (start/stop) modes.
- Preset buttons respect the add/set mode toggle : <img src="images/plus.svg" width="20" height="20"> increments, <img src="images/plus_circle.svg" width="20" height="20"> replaces.
- Notification bar shows "Time's up! (duration)" when the timer finishes.
<img src="images/quickSettingsTimer_1.png" width="300"> <img src="images/quickSettingsTimer_2.png" width="300">
<img src="images/quickSettingsTimer_3.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/) [![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. - 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. - **Rewritten** for the new `HomeScreen.CreateMenu` — the old `Navigator.CreateMenu` is no longer used in 3.27.
@@ -56,50 +112,36 @@ Note: You have to set the right timezone on the tablet (you can use [reManager](
<img src="images/uncompressDock.png" width="400"> <img src="images/uncompressDock.png" width="400">
#### `quickSettingsClock.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`
- 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"> ---
### `tagButton.qmd` & `favoriteButton.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`
[![vellum](https://img.shields.io/badge/vellum-favorite--button-purple)](https://vellum.delivery/#/package/favorite-button/) [![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. - Restores a `Favorite` action in the document list header for faster pinning.
<img src="images/favoriteButton.png" width="400"> <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/) [![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. - Puts a `Tag` action next to other list controls to open the tag editor directly.
<img src="images/tagButton.png" width="400"> <img src="images/tagButton.png" width="400">
#### `convertToText_remover.qmd` **Available for:** `3.22.0.64`, `3.23.0.64`\*
- Removes the `Convert to text` option from selection menus and the toolbar. *\*No longer needed — implemented by reMarkable in later versions.*
#### `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.

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: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB