Skip to content

Commit 87ca155

Browse files
author
thyttan
committed
quicklaunch: do fewer storage interactions
1 parent c519def commit 87ca155

File tree

2 files changed

+37
-30
lines changed

2 files changed

+37
-30
lines changed

apps/quicklaunch/app.js

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,40 @@
11
{
2+
const R = Bangle.appRect;
3+
g.clearRect(R); // clear immediately to increase perceived snappiness.
4+
25
const storage = require("Storage");
36
let settings = storage.readJSON("quicklaunch.json", true) || {};
7+
let trace = (settings[settings.trace+"app"].src=="quicklaunch.app.js") ? settings.trace : settings.trace.substring(0, settings.trace.length-1); // If the stored trace leads beyond extension screens, walk back to the last extension screen. Compatibility with "Fastload Utils" App History feature.
48

5-
let reset = function(name){
6-
if (!settings[name]) settings[name] = {"name":"(none)"};
7-
if (!storage.read(settings[name].src)) settings[name] = {"name":"(none)"};
8-
storage.write("quicklaunch.json", settings);
9+
const draw = () => {
10+
// Draw app hints
11+
g.reset().clearRect(R).setFont("Vector", 11)
12+
.setFontAlign(0,1,3).drawString(settings[trace+"lapp"].name, R.x2, R.y+R.h/2)
13+
.setFontAlign(0,1,1).drawString(settings[trace+"rapp"].name, R.x, R.y+R.h/2)
14+
.setFontAlign(0,1,0).drawString(settings[trace+"uapp"].name, R.x+R.w/2, R.y2)
15+
.setFontAlign(0,-1,0).drawString(settings[trace+"dapp"].name, R.x+R.w/2, R.y)
16+
.setFontAlign(0,0,0).drawString(settings[trace+"tapp"].name, R.x+R.w/2, R.y+R.h/2);
917
};
18+
draw(); // draw asap to increase perceived snappiness.
1019

1120
let leaveTrace = function(trace) {
1221
if (settings[trace+"app"].name != "") {
1322
settings.trace = trace;
14-
storage.writeJSON("quicklaunch.json", settings);
1523
} else { trace = trace.substring(0, trace.length-1); }
1624
return trace;
1725
};
1826

1927
let launchApp = function(trace) {
20-
if (settings[trace+"app"]) {
21-
if (settings[trace+"app"].src){
22-
if (settings[trace+"app"].name == "Show Launcher") Bangle.showLauncher(); else if (!storage.read(settings[trace+"app"].src)) reset(trace+"app"); else load(settings[trace+"app"].src);
23-
}
28+
if (settings[trace+"app"] && settings[trace+"app"].src) {
29+
if (settings[trace+"app"].name == "Extension") draw();
30+
else if (settings[trace+"app"].name == "Show Launcher") Bangle.showLauncher();
31+
else if (!storage.read(settings[trace+"app"].src)) {
32+
E.showMessage(settings[trace+"app"].src+"\n"+/*LANG*/"was not found"+".", "Quick Launch");
33+
settings[trace+"app"] = {"name":"(none)"}; // reset entry.
34+
} else load(settings[trace+"app"].src);
2435
}
2536
};
2637

27-
let trace = (settings[settings.trace+"app"].src=="quicklaunch.app.js") ? settings.trace : settings.trace.substring(0, settings.trace.length-1); // If the stored trace leads beyond extension screens, walk back to the last extension screen. Compatibility with "Fastload Utils" App History feature.
28-
2938
let touchHandler = (_,e) => {
3039
if (e.type == 2) return;
3140
let R = Bangle.appRect;
@@ -47,15 +56,22 @@
4756
if (e.b == 0 && !timeoutToClock) updateTimeoutToClock();
4857
};
4958

59+
let saveAndClear = ()=> {
60+
storage.writeJSON("quicklaunch.json", settings);
61+
E.removeListener("kill", saveAndClear);
62+
if (timeoutToClock) clearTimeout(timeoutToClock); // Compatibility with Fastload Utils.
63+
}
64+
5065
Bangle.setUI({
5166
mode: "custom",
5267
touch: touchHandler,
5368
swipe : swipeHandler,
5469
drag : onLongTouchDoPause,
55-
remove: ()=>{if (timeoutToClock) clearTimeout(timeoutToClock);} // Compatibility with Fastload Utils.
70+
remove: saveAndClear
5671
});
5772

58-
g.clearRect(Bangle.appRect);
73+
E.on("kill", saveAndClear)
74+
5975
"Bangle.loadWidgets()"; // Hack: Fool Fastload Utils that we call Bangle.loadWidgets(). This way we get the fastest possibe loading in whichever environment we find ourselves.
6076

6177
// taken from Icon Launcher with some alterations
@@ -67,13 +83,4 @@
6783
};
6884
updateTimeoutToClock();
6985

70-
let R = Bangle.appRect;
71-
72-
// Draw app hints
73-
g.setFont("Vector", 11)
74-
.setFontAlign(0,1,3).drawString(settings[trace+"lapp"].name, R.x2, R.y+R.h/2)
75-
.setFontAlign(0,1,1).drawString(settings[trace+"rapp"].name, R.x, R.y+R.h/2)
76-
.setFontAlign(0,1,0).drawString(settings[trace+"uapp"].name, R.x+R.w/2, R.y2)
77-
.setFontAlign(0,-1,0).drawString(settings[trace+"dapp"].name, R.x+R.w/2, R.y)
78-
.setFontAlign(0,0,0).drawString(settings[trace+"tapp"].name, R.x+R.w/2, R.y+R.h/2);
7986
}

apps/quicklaunch/boot.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22
const storage = require("Storage");
33
let settings = storage.readJSON("quicklaunch.json", true) || {};
44

5-
let reset = function(name){
6-
if (!settings[name]) settings[name] = {"name":"(none)"};
7-
if (!storage.read(settings[name].src)) settings[name] = {"name":"(none)"};
8-
storage.write("quicklaunch.json", settings);
9-
};
10-
115
let leaveTrace = function(trace) {
126
settings.trace = trace;
137
storage.writeJSON("quicklaunch.json", settings);
148
return trace;
159
};
1610

1711
let launchApp = function(trace) {
18-
if (settings[trace+"app"].src){
19-
if (settings[trace+"app"].name == "Show Launcher") Bangle.showLauncher(); else if (!storage.read(settings[trace+"app"].src)) reset(trace+"app"); else load(settings[trace+"app"].src);
12+
if (settings[trace+"app"].src){
13+
if (settings[trace+"app"].name == "Show Launcher") Bangle.showLauncher();
14+
else if (!storage.read(settings[trace+"app"].src)) {
15+
E.showMessage(settings[trace+"app"].src+"\n"+/*LANG*/"was not found"+".", "Quick Launch");
16+
settings[trace+"app"] = {"name":"(none)"}; // reset entry.
17+
storage.write("quicklaunch.json", settings);
18+
setTimeout(load, 2000);
19+
} else load(settings[trace+"app"].src);
2020
}
2121
}
2222

0 commit comments

Comments
 (0)