ptlaunch 0.16: Fix issue adding new patterns (fix #3858)

Display message if tapping manage when there are no patterns
      Speed improvements
master
Gordon Williams 2025-06-20 11:21:24 +01:00
parent b95ee7bb4a
commit 8442f27c36
4 changed files with 28 additions and 49 deletions

View File

@ -7,3 +7,6 @@
0.13: Improve pattern rendering by HughB http://forum.espruino.com/profiles/167235/ 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.14: Update setUI to work with new Bangle.js 2v13 menu style
0.15: Update to support clocks in custom setUI mode 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

View File

@ -9,10 +9,10 @@ var showMainMenu = () => {
var mainmenu = { var mainmenu = {
"": { "": {
title: "Pattern Launcher", title: "Pattern Launcher",
}, back: () => {
"< Back": () => { log("showMainMenu cancel");
log("cancel");
load(); load();
}
}, },
"Add Pattern": () => { "Add Pattern": () => {
log("creating pattern"); log("creating pattern");
@ -83,11 +83,11 @@ var showMainMenu = () => {
var settingsmenu = { var settingsmenu = {
"": { "": {
title: "Pattern Settings", title: "Pattern Settings",
back: () => {
log("settings cancel");
showMainMenu();
}, },
"< Back": () => { }
log("cancel");
load();
},
}; };
if (settings.lockDisabled) { if (settings.lockDisabled) {
@ -116,12 +116,7 @@ var showMainMenu = () => {
var recognizeAndDrawPattern = () => { var recognizeAndDrawPattern = () => {
return new Promise((resolve) => { return new Promise((resolve) => {
E.showMenu();
g.clear();
drawCirclesWithPattern([]);
var pattern = []; var pattern = [];
var isFinished = false; var isFinished = false;
var finishHandler = () => { var finishHandler = () => {
if (pattern.length === 0 || isFinished) { if (pattern.length === 0 || isFinished) {
@ -129,15 +124,12 @@ var recognizeAndDrawPattern = () => {
} }
log("Pattern is finished."); log("Pattern is finished.");
isFinished = true; isFinished = true;
Bangle.removeListener("drag", dragHandler); Bangle.setUI();
Bangle.removeListener("tap", finishHandler);
resolve(pattern.join("")); resolve(pattern.join(""));
}; };
setWatch(() => finishHandler(), BTN);
// setTimeout(() => Bangle.on("tap", finishHandler), 250);
var positions = []; var positions = [];
var getPattern = (positions) => { var getPattern = (positions) => { "ram";/*faster*/
var circles = [ var circles = [
{ x: 25, y: 25, i: 0 }, { x: 25, y: 25, i: 0 },
{ x: 87, y: 25, i: 1 }, { x: 87, y: 25, i: 1 },
@ -151,17 +143,7 @@ var recognizeAndDrawPattern = () => {
]; ];
return positions.reduce((pattern, p, i, arr) => { return positions.reduce((pattern, p, i, arr) => {
var idx = circles.findIndex((c) => { var idx = circles.findIndex((c) => {
var dx = p.x > c.x ? p.x - c.x : c.x - p.x; var dx = p.x - c.x, dy = p.y - c.y;
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; return dx*dx + dy*dy <= CIRCLE_RADIUS_2;
}); });
if (idx >= 0) { if (idx >= 0) {
@ -183,7 +165,9 @@ var recognizeAndDrawPattern = () => {
positions = []; positions = [];
} }
}; };
Bangle.on("drag", dragHandler); g.clear();
drawCirclesWithPattern([]);
Bangle.setUI({mode:"custom", drag:dragHandler, btn :finishHandler});
}); });
}; };
@ -215,14 +199,14 @@ var getAppList = () => {
}; };
var getSelectedApp = () => { var getSelectedApp = () => {
E.showMessage("Loading apps..."); E.showMessage(/*LANG*/"Loading apps...");
return new Promise((resolve) => { return new Promise((resolve) => {
var selectAppMenu = { var selectAppMenu = {
"": { "": {
title: "Select App", title: /*LANG*/"Select App",
}, },
"< Cancel": () => { "< Cancel": () => {
log("cancel"); log("getSelectedApp cancel");
showMainMenu(); showMainMenu();
}, },
}; };
@ -286,6 +270,8 @@ var drawAppWithPattern = (i, r, storedPatterns) => {
var showScrollerContainingAppsWithPatterns = () => { var showScrollerContainingAppsWithPatterns = () => {
var storedPatternsArray = getStoredPatternsArray(); 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("drawing scroller for stored patterns");
log(storedPatternsArray); log(storedPatternsArray);
log(storedPatternsArray.length); log(storedPatternsArray.length);

View File

@ -24,17 +24,7 @@
]; ];
return positions.reduce((pattern, p, i, arr) => { return positions.reduce((pattern, p, i, arr) => {
var idx = circles.findIndex((c) => { var idx = circles.findIndex((c) => {
var dx = p.x > c.x ? p.x - c.x : c.x - p.x; var dx = p.x - c.x, dy = p.y - c.y;
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; return dx*dx + dy*dy <= CIRCLE_RADIUS_2;
}); });
if (idx >= 0) { if (idx >= 0) {

View File

@ -2,7 +2,7 @@
"id": "ptlaunch", "id": "ptlaunch",
"name": "Pattern Launcher", "name": "Pattern Launcher",
"shortName": "Pattern Launcher", "shortName": "Pattern Launcher",
"version": "0.15", "version": "0.16",
"description": "Directly launch apps from the clock screen with custom patterns.", "description": "Directly launch apps from the clock screen with custom patterns.",
"icon": "app.png", "icon": "app.png",
"screenshots": [{"url":"manage_patterns_light.png"}], "screenshots": [{"url":"manage_patterns_light.png"}],