mirror of https://github.com/espruino/BangleApps
Merge pull request #2203 from halemmerich/quicklaunch
Quicklaunch - Improve performancepull/2209/head
commit
a42b79a7c7
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
|
@ -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",
|
||||||
|
|
|
@ -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();
|
||||||
});
|
})
|
||||||
|
|
Loading…
Reference in New Issue