Improved smpltmr clock info to be not specialiset for bw clock.

master
David Peer 2022-10-02 14:30:13 +02:00
parent 3809c91f1f
commit ae84bc9a18
4 changed files with 127 additions and 125 deletions

View File

@ -217,57 +217,57 @@ function drawCursor(){
} }
function drawCmd(cmd){ function drawCmd(cmd){
var c = 0; var c = 0;
var x = 10; var x = 10;
var y = 28; var y = 28;
g.setColor("#0f0"); g.setColor("#0f0");
g.drawString("bjs", x+c, y); g.drawString("bjs", x+c, y);
c += g.stringWidth("bjs"); c += g.stringWidth("bjs");
g.setColor(g.theme.fg); g.setColor(g.theme.fg);
g.drawString(":", x+c, y); g.drawString(":", x+c, y);
c += g.stringWidth(":"); c += g.stringWidth(":");
g.setColor("#0ff"); g.setColor("#0ff");
g.drawString("$ ", x+c, y); g.drawString("$ ", x+c, y);
c += g.stringWidth("$ "); c += g.stringWidth("$ ");
g.setColor(g.theme.fg); g.setColor(g.theme.fg);
g.drawString(cmd, x+c, y); g.drawString(cmd, x+c, y);
} }
function twoD(str){ function twoD(str){
return ("0" + str).slice(-2) return ("0" + str).slice(-2)
} }
/************************************************ /************************************************
* Listener * Listener
*/ */
// timeout used to update every minute // timeout used to update every minute
var drawTimeout; var drawTimeout;
// schedule a draw for the next minute // schedule a draw for the next minute
function queueDraw() { function queueDraw() {
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() { drawTimeout = setTimeout(function() {
drawTimeout = undefined; drawTimeout = undefined;
draw(); draw();
}, 60000 - (Date.now() % 60000)); }, 60000 - (Date.now() % 60000));
} }
// Stop updates when LCD is off, restart when on // Stop updates when LCD is off, restart when on
Bangle.on('lcdPower',on=>{ Bangle.on('lcdPower',on=>{
if (on) { if (on) {
draw(); // draw immediately, queue redraw draw(); // draw immediately, queue redraw
} else { // stop draw timer } else { // stop draw timer
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined; drawTimeout = undefined;
} }
}); });
Bangle.on('lock', function(isLocked) { Bangle.on('lock', function(isLocked) {
@ -275,97 +275,97 @@ Bangle.on('lock', function(isLocked) {
}); });
Bangle.on('charging',function(charging) { Bangle.on('charging',function(charging) {
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined; drawTimeout = undefined;
settings.menuPosX=0; settings.menuPosX=0;
settings.menuPosY=0; settings.menuPosY=0;
draw(); draw();
}); });
var lock_input = 0; var lock_input = 0;
Bangle.on('touch', function(btn, e){ Bangle.on('touch', function(btn, e){
if(lock_input > 0){ if(lock_input > 0){
return; return;
} }
lock_input = 0; lock_input = 0;
var left = parseInt(g.getWidth() * 0.22); var left = parseInt(g.getWidth() * 0.22);
var right = g.getWidth() - left; var right = g.getWidth() - left;
var upper = parseInt(g.getHeight() * 0.22) + 20; var upper = parseInt(g.getHeight() * 0.22) + 20;
var lower = g.getHeight() - upper; var lower = g.getHeight() - upper;
var is_upper = e.y < upper; var is_upper = e.y < upper;
var is_lower = e.y > lower; var is_lower = e.y > lower;
var is_left = e.x < left && !is_upper && !is_lower; var is_left = e.x < left && !is_upper && !is_lower;
var is_right = e.x > right && !is_upper && !is_lower; var is_right = e.x > right && !is_upper && !is_lower;
var is_center = !is_upper && !is_lower && !is_left && !is_right; var is_center = !is_upper && !is_lower && !is_left && !is_right;
var oldYScreen = parseInt(settings.menuPosY/4); var oldYScreen = parseInt(settings.menuPosY/4);
if(is_lower){ if(is_lower){
if(settings.menuPosY >= menu[settings.menuPosX].items.length-1){ if(settings.menuPosY >= menu[settings.menuPosX].items.length-1){
return; return;
} }
Bangle.buzz(40, 0.6); Bangle.buzz(40, 0.6);
settings.menuPosY++; settings.menuPosY++;
if(parseInt(settings.menuPosY/4) == oldYScreen){ if(parseInt(settings.menuPosY/4) == oldYScreen){
drawCursor(); drawCursor();
return; return;
} }
} }
if(is_upper){ if(is_upper){
if(e.y < 20){ // Reserved for widget clicks if(e.y < 20){ // Reserved for widget clicks
return;
}
if(settings.menuPosY <= 0){
return;
}
Bangle.buzz(40, 0.6);
settings.menuPosY--;
settings.menuPosY = settings.menuPosY < 0 ? 0 : settings.menuPosY;
if(parseInt(settings.menuPosY/4) == oldYScreen){
drawCursor();
return;
}
}
if(is_right){
Bangle.buzz(40, 0.6);
settings.menuPosX = (settings.menuPosX+1) % menu.length;
settings.menuPosY = 0;
}
if(is_left){
Bangle.buzz(40, 0.6);
settings.menuPosY = 0;
settings.menuPosX = settings.menuPosX-1;
settings.menuPosX = settings.menuPosX < 0 ? menu.length-1 : settings.menuPosX;
}
if(is_center){
if(!canRunMenuItem()){
return; return;
} }
runMenuItem();
}
draw(); if(settings.menuPosY <= 0){
}); return;
}
Bangle.buzz(40, 0.6);
settings.menuPosY--;
settings.menuPosY = settings.menuPosY < 0 ? 0 : settings.menuPosY;
E.on("kill", function(){ if(parseInt(settings.menuPosY/4) == oldYScreen){
try{ drawCursor();
storage.write(SETTINGS_FILE, settings); return;
} catch(ex){ }
// If this fails, we still kill the app... }
}
}); if(is_right){
Bangle.buzz(40, 0.6);
settings.menuPosX = (settings.menuPosX+1) % menu.length;
settings.menuPosY = 0;
}
if(is_left){
Bangle.buzz(40, 0.6);
settings.menuPosY = 0;
settings.menuPosX = settings.menuPosX-1;
settings.menuPosX = settings.menuPosX < 0 ? menu.length-1 : settings.menuPosX;
}
if(is_center){
if(!canRunMenuItem()){
return;
}
runMenuItem();
}
draw();
});
E.on("kill", function(){
try{
storage.write(SETTINGS_FILE, settings);
} catch(ex){
// If this fails, we still kill the app...
}
});
/************************************************ /************************************************

View File

@ -1,3 +1,4 @@
0.01: Release 0.01: Release
0.02: Rewrite with new interface 0.02: Rewrite with new interface
0.03: Added clock infos to expose timer functionality to clocks. 0.03: Added clock infos to expose timer functionality to clocks.
0.04: Improvements of clock infos.

View File

@ -69,7 +69,7 @@
img: img, img: img,
items: [ items: [
{ {
name: "Timer", name: null,
get: () => ({ text: getAlarmMinutesText() + (isAlarmEnabled() ? " min" : ""), img: null}), get: () => ({ text: getAlarmMinutesText() + (isAlarmEnabled() ? " min" : ""), img: null}),
show: function() { smpltmrItems.items[0].emit("redraw"); }, show: function() { smpltmrItems.items[0].emit("redraw"); },
hide: function () {}, hide: function () {},
@ -78,17 +78,18 @@
] ]
}; };
var offsets = [+1,+5,-1,-5]; var offsets = [+5,-5];
offsets.forEach((o, i) => { offsets.forEach((o, i) => {
smpltmrItems.items = smpltmrItems.items.concat({ smpltmrItems.items = smpltmrItems.items.concat({
name: String(o), name: null,
get: () => ({ text: getAlarmMinutesText() + " (" + (o > 0 ? "+" : "") + o + ")", img: null}), get: () => ({ text: (o > 0 ? "+" : "") + o + " min.", img: null}),
show: function() { smpltmrItems.items[i+1].emit("redraw"); }, show: function() { smpltmrItems.items[i+1].emit("redraw"); },
hide: function () {}, hide: function () {},
run: function() { run: function() {
if(o > 0) increaseAlarm(o); if(o > 0) increaseAlarm(o);
else decreaseAlarm(Math.abs(o)); else decreaseAlarm(Math.abs(o));
this.show(); this.show();
return true;
} }
}); });
}); });

View File

@ -2,7 +2,7 @@
"id": "smpltmr", "id": "smpltmr",
"name": "Simple Timer", "name": "Simple Timer",
"shortName": "Simple Timer", "shortName": "Simple Timer",
"version": "0.03", "version": "0.04",
"description": "A very simple app to start a timer.", "description": "A very simple app to start a timer.",
"icon": "app.png", "icon": "app.png",
"tags": "tool,alarm,timer", "tags": "tool,alarm,timer",