2020-12-28 10:51:40 +00:00
|
|
|
/* Desktop launcher
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
2021-12-13 21:48:20 +00:00
|
|
|
var settings = Object.assign({
|
|
|
|
showClocks: true,
|
|
|
|
showLaunchers: true,
|
|
|
|
}, require('Storage').readJSON("dtlaunch.json", true) || {});
|
|
|
|
|
2021-07-11 19:13:18 +00:00
|
|
|
function wdog(handle,timeout){
|
|
|
|
if(handle !== undefined){
|
|
|
|
wdog.handle = handle;
|
|
|
|
wdog.timeout = timeout;
|
|
|
|
}
|
|
|
|
if(wdog.timer){
|
2023-03-08 10:27:31 +00:00
|
|
|
clearTimeout(wdog.timer);
|
2021-07-11 19:13:18 +00:00
|
|
|
}
|
2023-03-08 10:27:31 +00:00
|
|
|
wdog.timer = setTimeout(wdog.handle,wdog.timeout);
|
2021-07-11 19:13:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// reset after two minutes of inactivity
|
2023-03-08 10:27:31 +00:00
|
|
|
wdog(load,120000);
|
2021-07-11 19:13:18 +00:00
|
|
|
|
2020-12-28 10:51:40 +00:00
|
|
|
var s = require("Storage");
|
2021-12-13 21:48:20 +00:00
|
|
|
var apps = s.list(/\.info$/).map(app=>{
|
|
|
|
var a=s.readJSON(app,1);
|
|
|
|
return a && {
|
|
|
|
name:a.name, type:a.type, icon:a.icon, sortorder:a.sortorder, src:a.src
|
|
|
|
};}).filter(
|
|
|
|
app=>app && (app.type=="app" || (app.type=="clock" && settings.showClocks) || (app.type=="launch" && settings.showLaunchers) || !app.type));
|
|
|
|
|
2020-12-28 10:51:40 +00:00
|
|
|
apps.sort((a,b)=>{
|
|
|
|
var n=(0|a.sortorder)-(0|b.sortorder);
|
|
|
|
if (n) return n; // do sortorder first
|
|
|
|
if (a.name<b.name) return -1;
|
|
|
|
if (a.name>b.name) return 1;
|
|
|
|
return 0;
|
|
|
|
});
|
|
|
|
|
|
|
|
var Napps = apps.length;
|
|
|
|
var Npages = Math.ceil(Napps/6);
|
|
|
|
var maxPage = Npages-1;
|
2021-01-11 07:40:45 +00:00
|
|
|
var selected = 0;
|
2020-12-28 10:51:40 +00:00
|
|
|
var oldselected = -1;
|
|
|
|
var page = 0;
|
|
|
|
|
|
|
|
function draw_icon(p,n,selected) {
|
|
|
|
var x = (n%3)*80;
|
|
|
|
var y = n>2?130:40;
|
|
|
|
(selected?g.setColor(0.3,0.3,0.3):g.setColor(0,0,0)).fillRect(x,y,x+79,y+89);
|
2022-03-18 15:02:14 +00:00
|
|
|
g.setColor(g.theme.fg);
|
2023-03-08 10:27:31 +00:00
|
|
|
//bad g.drawImage(s.read(apps[p*6+n].icon),x+10,y+10,{scale:1.25});
|
|
|
|
if ((apps[p*6+n].icon)){
|
|
|
|
if (s.read(apps[p*6+n].icon)) //ensure that graph exist
|
|
|
|
g.drawImage(s.read(apps[p*6+n].icon),x+10,y+10,{scale:1.25});
|
|
|
|
else console.log("icon file NOT exist :"+apps[p*6+n].icon);
|
|
|
|
}
|
|
|
|
else console.log("icon property NOT exist");
|
2020-12-28 10:51:40 +00:00
|
|
|
g.setColor(-1).setFontAlign(0,-1,0).setFont("6x8",1);
|
|
|
|
var txt = apps[p*6+n].name.split(" ");
|
|
|
|
for (var i = 0; i < txt.length; i++) {
|
|
|
|
txt[i] = txt[i].trim();
|
|
|
|
g.drawString(txt[i],x+40,y+70+i*8);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function drawPage(p){
|
|
|
|
g.setColor(0,0,0).fillRect(0,0,239,239);
|
|
|
|
g.setFont("6x8",2).setFontAlign(0,-1,0).setColor(1,1,1).drawString("Bangle ("+(p+1)+"/"+Npages+")",120,12);
|
|
|
|
for (var i=0;i<6;i++) {
|
|
|
|
if (!apps[p*6+i]) return i;
|
|
|
|
draw_icon(p,i,selected==i);
|
|
|
|
}
|
2023-03-08 10:27:31 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// case was not working
|
|
|
|
Bangle.on("touch", function(tzone){
|
|
|
|
//(tzone)=>{
|
|
|
|
//console.log("tzone"+tzone);
|
|
|
|
switch(tzone){
|
|
|
|
case 1: //left managed by
|
|
|
|
console.log("1, left or back to clock?");
|
|
|
|
load();//clock
|
|
|
|
//nextapp(-1);
|
|
|
|
break;
|
|
|
|
case 2: // right
|
|
|
|
nextapp(1);
|
|
|
|
break;
|
|
|
|
case 3: //center 1+2 no for emul
|
|
|
|
doselect();
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
console.log("no match");
|
|
|
|
}
|
|
|
|
});
|
2020-12-28 10:51:40 +00:00
|
|
|
|
|
|
|
Bangle.on("swipe",(dir)=>{
|
2023-03-08 10:27:31 +00:00
|
|
|
wdog();
|
2020-12-28 10:51:40 +00:00
|
|
|
selected = 0;
|
|
|
|
oldselected=-1;
|
|
|
|
if (dir<0){
|
2021-01-11 07:40:45 +00:00
|
|
|
++page; if (page>maxPage) page=0;
|
2020-12-28 10:51:40 +00:00
|
|
|
drawPage(page);
|
|
|
|
} else {
|
2021-01-11 07:40:45 +00:00
|
|
|
--page; if (page<0) page=maxPage;
|
2020-12-28 10:51:40 +00:00
|
|
|
drawPage(page);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
function nextapp(d){
|
2021-07-11 19:13:18 +00:00
|
|
|
wdog();
|
2020-12-28 10:51:40 +00:00
|
|
|
oldselected = selected;
|
|
|
|
selected+=d;
|
|
|
|
selected = selected<0?5:selected>5?0:selected;
|
|
|
|
selected = (page*6+selected)>=Napps?0:selected;
|
|
|
|
draw_icon(page,selected,true);
|
|
|
|
if (oldselected>=0) draw_icon(page,oldselected,false);
|
|
|
|
}
|
|
|
|
|
|
|
|
function doselect(){
|
|
|
|
load(apps[page*6+selected].src);
|
|
|
|
}
|
|
|
|
|
|
|
|
setWatch(nextapp.bind(null,-1), BTN1, {repeat:true,edge:"falling"});
|
|
|
|
setWatch(doselect, BTN2, {repeat:true,edge:"falling"});
|
|
|
|
setWatch(nextapp.bind(null,1), BTN3, {repeat:true,edge:"falling"});
|
|
|
|
|
|
|
|
drawPage(0);
|