1
0
Fork 0

Bootloader tweaks to load widgets before clock

master
Gordon Williams 2019-12-05 14:48:14 +00:00
parent ffc0bff6a3
commit 24269067b9
1 changed files with 27 additions and 27 deletions

View File

@ -6,8 +6,8 @@ try {
if (startapp) { if (startapp) {
eval(require("Storage").read(startapp.src)); eval(require("Storage").read(startapp.src));
} else { } else {
delete startapp;
setWatch(function displayMenu() { setWatch(function displayMenu() {
Bangle.setLCDOffset(0); // remove notifications
Bangle.setLCDMode("direct"); Bangle.setLCDMode("direct");
g.clear(); g.clear();
clearInterval(); clearInterval();
@ -77,53 +77,53 @@ if (startapp) {
g.setFont("6x8",2); g.setFont("6x8",2);
g.setFontAlign(0,0); g.setFontAlign(0,0);
g.drawString("Loading...",120,120); g.drawString("Loading...",120,120);
// load like this so we ensure we've cleared out our RAM // if clock, just set the default setting and restart
var cmd = 'eval(require("Storage").read("'+apps[selected].src+'"));';
setTimeout(process.memory,10); // force GC
setTimeout(cmd,20);
// re-add the menu button if we're going to the clock
if (apps[selected].type=="clock") { if (apps[selected].type=="clock") {
setWatch(displayMenu, BTN2, {repeat:false,edge:"falling"}); try {
WIDGETPOS={tl:32,tr:g.getWidth()-32,bl:32,br:g.getWidth()-32}; var settings = require("Storage").readJSON('@setting');
WIDGETS={}; settings.clock = apps[selected].id;
require("Storage").list().filter(a=>a[0]=='=').forEach(widget=>eval(require("Storage").read(widget))); require("Storage").write('@setting',settings);
setTimeout(drawWidgets,100); } catch (e) { }
load();
} else { } else {
delete WIDGETS; // load like this so we ensure we've cleared out our RAM
delete WIDGETPOS; setTimeout(process.memory,10); // force GC
delete drawWidgets; setTimeout('eval(require("Storage").read("'+apps[selected].src+'"));',20);
// allow widgets in apps
if (!apps[selected].hasWidgets) {
delete WIDGETS;
delete WIDGETPOS;
delete drawWidgets;
} else setTimeout(drawWidgets,100);
} }
}, BTN2, {repeat:true,edge:"falling"}); }, BTN2, {repeat:true,edge:"falling"});
}, BTN2, {repeat:false,edge:"falling"}); // menu on middle button }, BTN2, {repeat:false,edge:"falling"}); // menu on middle button
var WIDGETPOS={tl:32,tr:g.getWidth()-32,bl:32,br:g.getWidth()-32}; var WIDGETPOS={tl:32,tr:g.getWidth()-32,bl:32,br:g.getWidth()-32};
var WIDGETS={}; var WIDGETS={};
function drawWidgets() { function drawWidgets() { for (var w of WIDGETS) w.draw(); }
for (var w of WIDGETS) w.draw();
}
var settings; var settings;
try { try {
settings = require("Storage").readJSON('@setting'); settings = require("Storage").readJSON('@setting');
} catch (e) { } catch (e) {
settings = {} settings = {}
} }
// load widgets
require("Storage").list().filter(a=>a[0]=='=').forEach(widget=>eval(require("Storage").read(widget)));
setTimeout(drawWidgets,100);
// load clock if specified
var clockApp = settings.clock; var clockApp = settings.clock;
if (clockApp) { if (clockApp) clockApp = require("Storage").read(clockApp)
clockApp = require("Storage").read(clockApp)
}
if (!clockApp) { if (!clockApp) {
var clockApps = require("Storage").list().filter(a=>a[0]=='+').map(app=>{ var clockApps = require("Storage").list().filter(a=>a[0]=='+').map(app=>{
try { return require("Storage").readJSON(app); } try { return require("Storage").readJSON(app); }
catch (e) {} catch (e) {}
}).filter(app=>app.type=="clock").sort((a, b) => a.sortorder - b.sortorder); }).filter(app=>app.type=="clock").sort((a, b) => a.sortorder - b.sortorder);
if (clockApps && clockApps.length > 0) { if (clockApps && clockApps.length > 0)
clockApp = require("Storage").read(clockApps[0].src); clockApp = require("Storage").read(clockApps[0].src);
} delete clockApps;
} }
if (clockApp) eval(clockApp); if (clockApp) eval(clockApp);
else E.showMessage("No Clock Found"); else E.showMessage("No Clock Found");
delete clockApp;
delete clockApps;
require("Storage").list().filter(a=>a[0]=='=').forEach(widget=>eval(require("Storage").read(widget)));
setTimeout(drawWidgets,100);
} }