timeout to clock copied from Icon Launcher
parent
84837228f9
commit
a46c76a2ff
|
|
@ -1,22 +1,28 @@
|
|||
{ // must be inside our own scope here so that when we are unloaded everything disappears
|
||||
|
||||
/* Desktop launcher
|
||||
*
|
||||
*/
|
||||
/* Desktop launcher
|
||||
*
|
||||
*/
|
||||
|
||||
let settings = Object.assign({
|
||||
let settings = Object.assign({
|
||||
showClocks: true,
|
||||
showLaunchers: true,
|
||||
direct: false,
|
||||
oneClickExit:false,
|
||||
oneClickExit: false,
|
||||
swipeExit: false,
|
||||
}, require('Storage').readJSON("dtlaunch.json", true) || {});
|
||||
timeOut: "Off"
|
||||
}, require('Storage').readJSON("dtlaunch.json", true) || {});
|
||||
|
||||
if (settings.oneClickExit) {
|
||||
if (settings.oneClickExit) {
|
||||
var buttonWatch = setWatch(_=> returnToClock, BTN1);
|
||||
}
|
||||
}
|
||||
|
||||
let s = require("Storage");
|
||||
// taken from Icon Launcher with minor alterations
|
||||
if (settings.timeOut!="Off"){
|
||||
let time=parseInt(settings.timeOut); //the "s" will be trimmed by the parseInt
|
||||
var timeoutToClock = setTimeout(returnToClock,time*1000);
|
||||
}
|
||||
let s = require("Storage");
|
||||
var apps = s.list(/\.info$/).map(app=>{
|
||||
let a=s.readJSON(app,1);
|
||||
return a && {
|
||||
|
|
@ -24,28 +30,28 @@ let s = require("Storage");
|
|||
};}).filter(
|
||||
app=>app && (app.type=="app" || (app.type=="clock" && settings.showClocks) || (app.type=="launch" && settings.showLaunchers) || !app.type));
|
||||
|
||||
apps.sort((a,b)=>{
|
||||
apps.sort((a,b)=>{
|
||||
let 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;
|
||||
});
|
||||
apps.forEach(app=>{
|
||||
});
|
||||
apps.forEach(app=>{
|
||||
if (app.icon)
|
||||
app.icon = s.read(app.icon); // should just be a link to a memory area
|
||||
});
|
||||
|
||||
let Napps = apps.length;
|
||||
let Npages = Math.ceil(Napps/4);
|
||||
let maxPage = Npages-1;
|
||||
let selected = -1;
|
||||
let oldselected = -1;
|
||||
let page = 0;
|
||||
const XOFF = 24;
|
||||
const YOFF = 30;
|
||||
let Napps = apps.length;
|
||||
let Npages = Math.ceil(Napps/4);
|
||||
let maxPage = Npages-1;
|
||||
let selected = -1;
|
||||
let oldselected = -1;
|
||||
let page = 0;
|
||||
const XOFF = 24;
|
||||
const YOFF = 30;
|
||||
|
||||
let drawIcon= function(p,n,selected) {
|
||||
let drawIcon= function(p,n,selected) {
|
||||
let x = (n%2)*72+XOFF;
|
||||
let y = n>1?72+YOFF:YOFF;
|
||||
(selected?g.setColor(g.theme.fgH):g.setColor(g.theme.bg)).fillRect(x+11,y+3,x+60,y+52);
|
||||
|
|
@ -69,9 +75,9 @@ let drawIcon= function(p,n,selected) {
|
|||
}
|
||||
}
|
||||
g.drawString(line.trim(),x+36,y+54+lineY*8);
|
||||
};
|
||||
};
|
||||
|
||||
let drawPage = function(p){
|
||||
let drawPage = function(p){
|
||||
g.reset();
|
||||
g.clearRect(0,24,175,175);
|
||||
let O = 88+YOFF/2-12*(Npages/2);
|
||||
|
|
@ -86,14 +92,14 @@ let drawPage = function(p){
|
|||
drawIcon(p,i,selected==i && !settings.direct);
|
||||
}
|
||||
g.flip();
|
||||
};
|
||||
};
|
||||
|
||||
Bangle.loadWidgets();
|
||||
//g.clear();
|
||||
Bangle.drawWidgets();
|
||||
drawPage(0);
|
||||
Bangle.loadWidgets();
|
||||
//g.clear();
|
||||
Bangle.drawWidgets();
|
||||
drawPage(0);
|
||||
|
||||
let swipeListenerDt = function(dirLeftRight, dirUpDown){
|
||||
let swipeListenerDt = function(dirLeftRight, dirUpDown){
|
||||
selected = 0;
|
||||
oldselected=-1;
|
||||
if(settings.swipeExit && dirLeftRight==1) returnToClock();
|
||||
|
|
@ -104,17 +110,17 @@ let swipeListenerDt = function(dirLeftRight, dirUpDown){
|
|||
--page; if (page<0) page=maxPage;
|
||||
drawPage(page);
|
||||
}
|
||||
};
|
||||
Bangle.on("swipe",swipeListenerDt);
|
||||
};
|
||||
Bangle.on("swipe",swipeListenerDt);
|
||||
|
||||
let isTouched = function(p,n){
|
||||
let isTouched = function(p,n){
|
||||
if (n<0 || n>3) return false;
|
||||
let x1 = (n%2)*72+XOFF; let y1 = n>1?72+YOFF:YOFF;
|
||||
let x2 = x1+71; let y2 = y1+81;
|
||||
return (p.x>x1 && p.y>y1 && p.x<x2 && p.y<y2);
|
||||
};
|
||||
};
|
||||
|
||||
let touchListenerDt = function(_,p){
|
||||
let touchListenerDt = function(_,p){
|
||||
let i;
|
||||
for (i=0;i<4;i++){
|
||||
if((page*4+i)<Napps){
|
||||
|
|
@ -136,12 +142,15 @@ let touchListenerDt = function(_,p){
|
|||
drawIcon(page,selected,false);
|
||||
selected=-1;
|
||||
}
|
||||
};
|
||||
Bangle.on("touch",touchListenerDt);
|
||||
};
|
||||
Bangle.on("touch",touchListenerDt);
|
||||
|
||||
const returnToClock = function() {
|
||||
const returnToClock = function() {
|
||||
Bangle.setUI();
|
||||
clearWatch(buttonWatch);
|
||||
delete buttonWatch;
|
||||
clearTimeout(timeoutToClock);
|
||||
delete timeoutToClock;
|
||||
delete s;
|
||||
delete a;
|
||||
delete n;
|
||||
|
|
@ -175,6 +184,6 @@ const returnToClock = function() {
|
|||
delete returnToClock;
|
||||
delete settings;
|
||||
setTimeout(eval, 0, s.read(".bootcde"));
|
||||
};
|
||||
};
|
||||
|
||||
} // end of app scope
|
||||
|
|
|
|||
|
|
@ -6,50 +6,63 @@
|
|||
showLaunchers: true,
|
||||
direct: false,
|
||||
oneClickExit:false,
|
||||
swipeExit: false
|
||||
swipeExit: false,
|
||||
timeOut: "Off"
|
||||
}, require('Storage').readJSON(FILE, true) || {});
|
||||
|
||||
function writeSettings() {
|
||||
require('Storage').writeJSON(FILE, settings);
|
||||
}
|
||||
|
||||
const timeOutChoices = [/*LANG*/"Off", "10s", "15s", "20s", "30s"];
|
||||
|
||||
E.showMenu({
|
||||
"" : { "title" : "Desktop launcher" },
|
||||
"< Back" : () => back(),
|
||||
'Show clocks': {
|
||||
/*LANG*/"< Back" : () => back(),
|
||||
/*LANG*/'Show clocks': {
|
||||
value: settings.showClocks,
|
||||
onchange: v => {
|
||||
settings.showClocks = v;
|
||||
writeSettings();
|
||||
}
|
||||
},
|
||||
'Show launchers': {
|
||||
/*LANG*/'Show launchers': {
|
||||
value: settings.showLaunchers,
|
||||
onchange: v => {
|
||||
settings.showLaunchers = v;
|
||||
writeSettings();
|
||||
}
|
||||
},
|
||||
'Direct launch': {
|
||||
/*LANG*/'Direct launch': {
|
||||
value: settings.direct,
|
||||
onchange: v => {
|
||||
settings.direct = v;
|
||||
writeSettings();
|
||||
}
|
||||
},
|
||||
'Swipe Exit': {
|
||||
/*LANG*/'Swipe Exit': {
|
||||
value: settings.swipeExit,
|
||||
onchange: v => {
|
||||
settings.swipeExit = v;
|
||||
writeSettings();
|
||||
}
|
||||
},
|
||||
'One click exit': {
|
||||
/*LANG*/'One click exit': {
|
||||
value: settings.oneClickExit,
|
||||
onchange: v => {
|
||||
settings.oneClickExit = v;
|
||||
writeSettings();
|
||||
}
|
||||
},
|
||||
/*LANG*/'Time Out': {
|
||||
value: timeOutChoices.indexOf(settings.timeOut),
|
||||
min: 0,
|
||||
max: timeOutChoices.length-1,
|
||||
format: v => timeOutChoices[v],
|
||||
onchange: m => {
|
||||
settings.timeOut = m;
|
||||
writeSettings();
|
||||
}
|
||||
},
|
||||
});
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue