From 8442f27c36c54e7b97a687affdb1b6cbb19e95bd Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Fri, 20 Jun 2025 11:21:24 +0100 Subject: [PATCH] ptlaunch 0.16: Fix issue adding new patterns (fix #3858) Display message if tapping manage when there are no patterns Speed improvements --- apps/ptlaunch/ChangeLog | 3 ++ apps/ptlaunch/app.js | 58 ++++++++++++++----------------------- apps/ptlaunch/boot.js | 14 ++------- apps/ptlaunch/metadata.json | 2 +- 4 files changed, 28 insertions(+), 49 deletions(-) diff --git a/apps/ptlaunch/ChangeLog b/apps/ptlaunch/ChangeLog index 5871b1fdc..9755c5ee7 100644 --- a/apps/ptlaunch/ChangeLog +++ b/apps/ptlaunch/ChangeLog @@ -7,3 +7,6 @@ 0.13: Improve pattern rendering by HughB http://forum.espruino.com/profiles/167235/ 0.14: Update setUI to work with new Bangle.js 2v13 menu style 0.15: Update to support clocks in custom setUI mode +0.16: Fix issue adding new patterns (fix #3858) + Display message if tapping manage when there are no patterns + Speed improvements \ No newline at end of file diff --git a/apps/ptlaunch/app.js b/apps/ptlaunch/app.js index 5db3a335b..ced3a8441 100644 --- a/apps/ptlaunch/app.js +++ b/apps/ptlaunch/app.js @@ -9,10 +9,10 @@ var showMainMenu = () => { var mainmenu = { "": { title: "Pattern Launcher", - }, - "< Back": () => { - log("cancel"); - load(); + back: () => { + log("showMainMenu cancel"); + load(); + } }, "Add Pattern": () => { log("creating pattern"); @@ -83,11 +83,11 @@ var showMainMenu = () => { var settingsmenu = { "": { title: "Pattern Settings", - }, - "< Back": () => { - log("cancel"); - load(); - }, + back: () => { + log("settings cancel"); + showMainMenu(); + }, + } }; if (settings.lockDisabled) { @@ -116,12 +116,7 @@ var showMainMenu = () => { var recognizeAndDrawPattern = () => { return new Promise((resolve) => { - E.showMenu(); - g.clear(); - drawCirclesWithPattern([]); - var pattern = []; - var isFinished = false; var finishHandler = () => { if (pattern.length === 0 || isFinished) { @@ -129,15 +124,12 @@ var recognizeAndDrawPattern = () => { } log("Pattern is finished."); isFinished = true; - Bangle.removeListener("drag", dragHandler); - Bangle.removeListener("tap", finishHandler); + Bangle.setUI(); resolve(pattern.join("")); }; - setWatch(() => finishHandler(), BTN); - // setTimeout(() => Bangle.on("tap", finishHandler), 250); var positions = []; - var getPattern = (positions) => { + var getPattern = (positions) => { "ram";/*faster*/ var circles = [ { x: 25, y: 25, i: 0 }, { x: 87, y: 25, i: 1 }, @@ -151,18 +143,8 @@ var recognizeAndDrawPattern = () => { ]; return positions.reduce((pattern, p, i, arr) => { var idx = circles.findIndex((c) => { - var dx = p.x > c.x ? p.x - c.x : c.x - p.x; - if (dx > CIRCLE_RADIUS) { - return false; - } - var dy = p.y > c.y ? p.y - c.y : c.y - p.y; - if (dy > CIRCLE_RADIUS) { - return false; - } - if (dx + dy <= CIRCLE_RADIUS) { - return true; - } - return dx * dx + dy * dy <= CIRCLE_RADIUS_2; + var dx = p.x - c.x, dy = p.y - c.y; + return dx*dx + dy*dy <= CIRCLE_RADIUS_2; }); if (idx >= 0) { pattern += circles[idx].i; @@ -183,7 +165,9 @@ var recognizeAndDrawPattern = () => { positions = []; } }; - Bangle.on("drag", dragHandler); + g.clear(); + drawCirclesWithPattern([]); + Bangle.setUI({mode:"custom", drag:dragHandler, btn :finishHandler}); }); }; @@ -215,14 +199,14 @@ var getAppList = () => { }; var getSelectedApp = () => { - E.showMessage("Loading apps..."); + E.showMessage(/*LANG*/"Loading apps..."); return new Promise((resolve) => { var selectAppMenu = { "": { - title: "Select App", + title: /*LANG*/"Select App", }, "< Cancel": () => { - log("cancel"); + log("getSelectedApp cancel"); showMainMenu(); }, }; @@ -286,6 +270,8 @@ var drawAppWithPattern = (i, r, storedPatterns) => { var showScrollerContainingAppsWithPatterns = () => { var storedPatternsArray = getStoredPatternsArray(); + if (!storedPatternsArray.length) + return E.showAlert(/*LANG*/"No Patterns",{title:/*LANG*/"Patterns"}).then(() => ({ pattern: "back", appName:"" })); log("drawing scroller for stored patterns"); log(storedPatternsArray); log(storedPatternsArray.length); @@ -485,4 +471,4 @@ var log = (message) => { // run main function ////// -showMainMenu(); +showMainMenu(); \ No newline at end of file diff --git a/apps/ptlaunch/boot.js b/apps/ptlaunch/boot.js index 885962761..9014da9d2 100644 --- a/apps/ptlaunch/boot.js +++ b/apps/ptlaunch/boot.js @@ -24,18 +24,8 @@ ]; return positions.reduce((pattern, p, i, arr) => { var idx = circles.findIndex((c) => { - var dx = p.x > c.x ? p.x - c.x : c.x - p.x; - if (dx > CIRCLE_RADIUS) { - return false; - } - var dy = p.y > c.y ? p.y - c.y : c.y - p.y; - if (dy > CIRCLE_RADIUS) { - return false; - } - if (dx + dy <= CIRCLE_RADIUS) { - return true; - } - return dx * dx + dy * dy <= CIRCLE_RADIUS_2; + var dx = p.x - c.x, dy = p.y - c.y; + return dx*dx + dy*dy <= CIRCLE_RADIUS_2; }); if (idx >= 0) { pattern += circles[idx].i; diff --git a/apps/ptlaunch/metadata.json b/apps/ptlaunch/metadata.json index 6f8a9e16f..e3dbb5701 100644 --- a/apps/ptlaunch/metadata.json +++ b/apps/ptlaunch/metadata.json @@ -2,7 +2,7 @@ "id": "ptlaunch", "name": "Pattern Launcher", "shortName": "Pattern Launcher", - "version": "0.15", + "version": "0.16", "description": "Directly launch apps from the clock screen with custom patterns.", "icon": "app.png", "screenshots": [{"url":"manage_patterns_light.png"}],