promenu: fix settings being overwritten by alarm/settings apps

master
Rob Pilling 2025-03-25 18:02:00 +00:00
parent 4bad06714a
commit 0d18a1fd76
3 changed files with 12 additions and 11 deletions

View File

@ -1,7 +1,7 @@
var _a, _b; var _a, _b;
var settings = (require("Storage").readJSON("promenu.settings.json", true) || {}); var S = (require("Storage").readJSON("promenu.settings.json", true) || {});
(_a = settings.naturalScroll) !== null && _a !== void 0 ? _a : (settings.naturalScroll = false); (_a = S.naturalScroll) !== null && _a !== void 0 ? _a : (S.naturalScroll = false);
(_b = settings.wrapAround) !== null && _b !== void 0 ? _b : (settings.wrapAround = true); (_b = S.wrapAround) !== null && _b !== void 0 ? _b : (S.wrapAround = true);
E.showMenu = function (items) { E.showMenu = function (items) {
var RectRnd = function (x1, y1, x2, y2, r) { var RectRnd = function (x1, y1, x2, y2, r) {
var pp = []; var pp = [];
@ -168,7 +168,7 @@ E.showMenu = function (items) {
} }
else { else {
var lastSelected = selected; var lastSelected = selected;
if (settings.wrapAround) { if (S.wrapAround) {
selected = (selected + dir + menuItems.length) % menuItems.length; selected = (selected + dir + menuItems.length) % menuItems.length;
} }
else { else {
@ -210,7 +210,7 @@ E.showMenu = function (items) {
}, },
}, function (dir) { }, function (dir) {
if (dir) if (dir)
l.move(settings.naturalScroll ? -dir : dir); l.move(S.naturalScroll ? -dir : dir);
else else
l.select(); l.select();
}); });

View File

@ -9,10 +9,9 @@ const enum Consts {
NAME_SCROLL_PAD = 5, NAME_SCROLL_PAD = 5,
} }
const settings = (require("Storage").readJSON("promenu.settings.json", true) || {}) as PromenuSettings; const S = (require("Storage").readJSON("promenu.settings.json", true) || {}) as PromenuSettings;
settings.naturalScroll ??= false; S.naturalScroll ??= false;
settings.wrapAround ??= true; S.wrapAround ??= true;
E.showMenu = (items?: Menu): MenuInstance => { E.showMenu = (items?: Menu): MenuInstance => {
const RectRnd = (x1: number, y1: number, x2: number, y2: number, r: number) => { const RectRnd = (x1: number, y1: number, x2: number, y2: number, r: number) => {
@ -217,7 +216,7 @@ E.showMenu = (items?: Menu): MenuInstance => {
} else { } else {
const lastSelected = selected; const lastSelected = selected;
if (settings.wrapAround) { if (S.wrapAround) {
selected = (selected + dir + /*keep +ve*/menuItems.length) % menuItems.length; selected = (selected + dir + /*keep +ve*/menuItems.length) % menuItems.length;
} else { } else {
selected = E.clip(selected + dir, 0, menuItems.length - 1); selected = E.clip(selected + dir, 0, menuItems.length - 1);
@ -258,7 +257,7 @@ E.showMenu = (items?: Menu): MenuInstance => {
}, },
} as SetUIArg<"updown">, } as SetUIArg<"updown">,
dir => { dir => {
if (dir) l.move(settings.naturalScroll ? -dir : dir); if (dir) l.move(S.naturalScroll ? -dir : dir);
else l.select(); else l.select();
}); });

View File

@ -8,3 +8,5 @@ type BangleEvents = {
["#ondrag"]?: BangleHandler<DragCallback>, ["#ondrag"]?: BangleHandler<DragCallback>,
["#onstroke"]?: BangleHandler<(event: { xy: Uint8Array, stroke?: string }) => void>, ["#onstroke"]?: BangleHandler<(event: { xy: Uint8Array, stroke?: string }) => void>,
}; };
declare var settings: {}; // settings is commonly used by apps, so declare it here to avoid overwriting it in boot/clkinfo/widgets/etc