Merge pull request #2203 from halemmerich/quicklaunch

Quicklaunch - Improve performance
pull/2209/head
Gordon Williams 2022-10-28 08:58:35 +01:00 committed by GitHub
commit a42b79a7c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 35 additions and 68 deletions

View File

@ -1,2 +1,3 @@
0.01: Initial version 0.01: Initial version
0.02: Moved settings from launcher to settings->apps menu 0.02: Moved settings from launcher to settings->apps menu
0.03: Better performance by not scanning on every boot

View File

@ -1,67 +1,29 @@
(function() { {
var settings = Object.assign(require("Storage").readJSON("quicklaunch.json", true) || {}); let settings = Object.assign(require("Storage").readJSON("quicklaunch.json", true) || {});
//list all sources let hash = require("Storage").hash(/\.info/);
var apps = require("Storage").list(/\.info$/).map(app=>{var a=require("Storage").readJSON(app,1);return a&&{src:a.src};}); if (settings.hash!=hash) {
//apps changed, rescan and remove no longer existing apps
let apps = require("Storage").list(/\.info$/).map(app=>{var a=require("Storage").readJSON(app,1);return a&&{src:a.src};});
//populate empty app list for (let c of ["leftapp","rightapp","upapp","downapp","tapapp"]){
if (!settings[c]) settings[c] = {"name":"(none)"};
if (!settings.leftapp) { if (!require("Storage").read(settings[c].src)) settings[c] = {"name":"(none)"};
settings["leftapp"] = {"name":"(none)"};
require("Storage").write("quicklaunch.json",settings);
} }
if (!settings.rightapp) { settings.hash = hash;
settings["rightapp"] = {"name":"(none)"};
require("Storage").write("quicklaunch.json",settings);
}
if (!settings.upapp) {
settings["upapp"] = {"name":"(none)"};
require("Storage").write("quicklaunch.json",settings);
}
if (!settings.downapp) {
settings["downapp"] = {"name":"(none)"};
require("Storage").write("quicklaunch.json",settings);
}
if (!settings.tapapp) {
settings["tapapp"] = {"name":"(none)"};
require("Storage").write("quicklaunch.json",settings); require("Storage").write("quicklaunch.json",settings);
} }
//activate on clock faces Bangle.on("touch", () => {
var sui = Bangle.setUI; if (!Bangle.CLOCK) return;
Bangle.setUI = function(mode, cb) { if (settings.tapapp.src) load(settings.tapapp.src);
sui(mode,cb);
if(!mode) return;
if ("object"==typeof mode) mode = mode.mode;
if (!mode.startsWith("clock")) return;
function tap() {
//tap, check if source exists, launch
if ((settings.tapapp.src) && apps.some(e => e.src === settings.tapapp.src)) load (settings.tapapp.src);
}
let drag;
let e;
Bangle.on("touch",tap);
Bangle.on("drag", e => {
if (!drag) { // start dragging
drag = {x: e.x, y: e.y};
} else if (!e.b) { // released
const dx = e.x-drag.x, dy = e.y-drag.y;
drag = null;
//horizontal swipes, check if source exists, launch
if (Math.abs(dx)>Math.abs(dy)+10) {
if ((settings.leftapp.src) && apps.some(e => e.src === settings.leftapp.src) && dx<0) load(settings.leftapp.src);
if ((settings.rightapp.src) && apps.some(e => e.src === settings.rightapp.src) && dx>0) load(settings.rightapp.src);
}
//vertical swipes, check if source exists, launch
else if (Math.abs(dy)>Math.abs(dx)+10) {
if ((settings.upapp.src) && apps.some(e => e.src === settings.upapp.src) && dy<0) load(settings.upapp.src);
if ((settings.downapp.src) && apps.some(e => e.src === settings.downapp.src) && dy>0) load(settings.downapp.src);
}
}
}); });
Bangle.on("swipe", (lr,ud) => {
if (!Bangle.CLOCK) return;
}; if (lr == -1 && settings.leftapp.src) load(settings.leftapp.src);
})(); if (lr == 1 && settings.rightapp.src) load(settings.rightapp.src);
if (ud == 1 && settings.upapp.src) load(settings.upapp.src);
if (ud == -1 && settings.downapp.src) load(settings.downapp.src);
});
}

View File

@ -2,7 +2,7 @@
"id": "quicklaunch", "id": "quicklaunch",
"name": "Quick Launch", "name": "Quick Launch",
"icon": "app.png", "icon": "app.png",
"version":"0.02", "version":"0.03",
"description": "Tap or swipe left/right/up/down on your clock face to launch up to five apps of your choice. Configurations can be accessed through Settings->Apps.", "description": "Tap or swipe left/right/up/down on your clock face to launch up to five apps of your choice. Configurations can be accessed through Settings->Apps.",
"type": "bootloader", "type": "bootloader",
"tags": "tools, system", "tags": "tools, system",

View File

@ -1,6 +1,10 @@
(function(back) { (function(back) {
var settings = Object.assign(require("Storage").readJSON("quicklaunch.json", true) || {}); var settings = Object.assign(require("Storage").readJSON("quicklaunch.json", true) || {});
for (let c of ["leftapp","rightapp","upapp","downapp","tapapp"]){
if (!settings[c]) settings[c] = {"name":"(none)"};
}
var apps = require("Storage").list(/\.info$/).map(app=>{var a=require("Storage").readJSON(app,1);return a&&{name:a.name,type:a.type,sortorder:a.sortorder,src:a.src};}).filter(app=>app && (app.type=="app" || app.type=="launch" || app.type=="clock" || !app.type)); var apps = require("Storage").list(/\.info$/).map(app=>{var a=require("Storage").readJSON(app,1);return a&&{name:a.name,type:a.type,sortorder:a.sortorder,src:a.src};}).filter(app=>app && (app.type=="app" || app.type=="launch" || app.type=="clock" || !app.type));
apps.sort((a,b)=>{ apps.sort((a,b)=>{
@ -119,4 +123,4 @@ apps.forEach((a)=>{
}); });
showMainMenu(); showMainMenu();
}); })