From 92348d88271a3208a9cae3a3e86aa23711dbab7a Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Wed, 6 Nov 2024 07:38:52 +0000 Subject: [PATCH 1/4] drained: menu is `Menu`, not `{...}` type --- apps/drained/app.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/drained/app.ts b/apps/drained/app.ts index fd39b11bd..eea3c80fc 100644 --- a/apps/drained/app.ts +++ b/apps/drained/app.ts @@ -79,7 +79,7 @@ const draw = () => { const reload = () => { const showMenu = () => { - const menu: { [k: string]: () => void } = { + const menu: Menu = { "Restore to full power": drainedRestore, }; From 17a000ca244c693bb239fd65091dc668fcbc0284 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Wed, 6 Nov 2024 07:39:10 +0000 Subject: [PATCH 2/4] drained: remember menu position --- apps/drained/app.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/apps/drained/app.ts b/apps/drained/app.ts index eea3c80fc..bd79ebcab 100644 --- a/apps/drained/app.ts +++ b/apps/drained/app.ts @@ -78,6 +78,7 @@ const draw = () => { }; const reload = () => { + let scroller: MenuInstance["scroller"] | undefined; const showMenu = () => { const menu: Menu = { "Restore to full power": drainedRestore, @@ -92,8 +93,12 @@ const reload = () => { menu["Recovery"] = () => Bangle.showRecoveryMenu(); menu["Exit menu"] = reload; + if(scroller){ + menu[""] = { selected: scroller.scroll }; + } + if(nextDraw) clearTimeout(nextDraw); - E.showMenu(menu); + ({ scroller } = E.showMenu(menu)); }; Bangle.setUI({ From 81820f8ec1d30cd869619626850f0cf644545c73 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Wed, 6 Nov 2024 07:39:32 +0000 Subject: [PATCH 3/4] drained: generate js --- apps/drained/app.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/apps/drained/app.js b/apps/drained/app.js index d4cb97db8..cefddbcc7 100644 --- a/apps/drained/app.js +++ b/apps/drained/app.js @@ -58,6 +58,7 @@ var draw = function () { }, 60000 - (date.getTime() % 60000)); }; var reload = function () { + var scroller; var showMenu = function () { var menu = { "Restore to full power": drainedRestore, @@ -69,9 +70,12 @@ var reload = function () { menu["Settings"] = function () { return load("setting.app.js"); }; menu["Recovery"] = function () { return Bangle.showRecoveryMenu(); }; menu["Exit menu"] = reload; + if (scroller) { + menu[""] = { selected: scroller.scroll }; + } if (nextDraw) clearTimeout(nextDraw); - E.showMenu(menu); + (scroller = E.showMenu(menu).scroller); }; Bangle.setUI({ mode: "custom", From 0cb0b0e467f28e76c9dda931d14d9acd8ec0d401 Mon Sep 17 00:00:00 2001 From: Rob Pilling Date: Wed, 6 Nov 2024 07:40:02 +0000 Subject: [PATCH 4/4] typescript: support `scroller` on `MenuInstance` --- typescript/types/main.d.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/typescript/types/main.d.ts b/typescript/types/main.d.ts index e00577afb..efbbea2f3 100644 --- a/typescript/types/main.d.ts +++ b/typescript/types/main.d.ts @@ -69,6 +69,14 @@ type MenuInstance = { draw: () => void; move: (n: number) => void; select: () => void; + scroller?: MenuScroller; // BangleJS 2 +}; + +/** + * Menu scroller. + */ +type MenuScroller = { + scroll: number; }; declare const BTN1: Pin; @@ -14828,4 +14836,4 @@ declare module "Storage" { * @url http://www.espruino.com/Reference#l_Storage_open */ function open(name: string, mode: "r" | "w" | "a"): StorageFile; -} \ No newline at end of file +}