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

pull/2162/head
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){
var c = 0;
var x = 10;
var y = 28;
function drawCmd(cmd){
var c = 0;
var x = 10;
var y = 28;
g.setColor("#0f0");
g.drawString("bjs", x+c, y);
c += g.stringWidth("bjs");
g.setColor("#0f0");
g.drawString("bjs", x+c, y);
c += g.stringWidth("bjs");
g.setColor(g.theme.fg);
g.drawString(":", x+c, y);
c += g.stringWidth(":");
g.setColor(g.theme.fg);
g.drawString(":", x+c, y);
c += g.stringWidth(":");
g.setColor("#0ff");
g.drawString("$ ", x+c, y);
c += g.stringWidth("$ ");
g.setColor("#0ff");
g.drawString("$ ", x+c, y);
c += g.stringWidth("$ ");
g.setColor(g.theme.fg);
g.drawString(cmd, x+c, y);
}
g.setColor(g.theme.fg);
g.drawString(cmd, x+c, y);
}
function twoD(str){
return ("0" + str).slice(-2)
}
function twoD(str){
return ("0" + str).slice(-2)
}
/************************************************
* Listener
*/
// timeout used to update every minute
var drawTimeout;
/************************************************
* Listener
*/
// timeout used to update every minute
var drawTimeout;
// schedule a draw for the next minute
function queueDraw() {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() {
drawTimeout = undefined;
draw();
}, 60000 - (Date.now() % 60000));
}
// schedule a draw for the next minute
function queueDraw() {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = setTimeout(function() {
drawTimeout = undefined;
draw();
}, 60000 - (Date.now() % 60000));
}
// Stop updates when LCD is off, restart when on
Bangle.on('lcdPower',on=>{
if (on) {
draw(); // draw immediately, queue redraw
} else { // stop draw timer
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
}
});
// Stop updates when LCD is off, restart when on
Bangle.on('lcdPower',on=>{
if (on) {
draw(); // draw immediately, queue redraw
} else { // stop draw timer
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
}
});
Bangle.on('lock', function(isLocked) {
@ -275,97 +275,97 @@ Bangle.on('lock', function(isLocked) {
});
Bangle.on('charging',function(charging) {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
Bangle.on('charging',function(charging) {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
settings.menuPosX=0;
settings.menuPosY=0;
settings.menuPosX=0;
settings.menuPosY=0;
draw();
});
draw();
});
var lock_input = 0;
var lock_input = 0;
Bangle.on('touch', function(btn, e){
if(lock_input > 0){
return;
}
lock_input = 0;
Bangle.on('touch', function(btn, e){
if(lock_input > 0){
return;
}
lock_input = 0;
var left = parseInt(g.getWidth() * 0.22);
var right = g.getWidth() - left;
var upper = parseInt(g.getHeight() * 0.22) + 20;
var lower = g.getHeight() - upper;
var left = parseInt(g.getWidth() * 0.22);
var right = g.getWidth() - left;
var upper = parseInt(g.getHeight() * 0.22) + 20;
var lower = g.getHeight() - upper;
var is_upper = e.y < upper;
var is_lower = e.y > lower;
var is_left = e.x < left && !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_upper = e.y < upper;
var is_lower = e.y > lower;
var is_left = e.x < left && !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 oldYScreen = parseInt(settings.menuPosY/4);
if(is_lower){
if(settings.menuPosY >= menu[settings.menuPosX].items.length-1){
return;
}
var oldYScreen = parseInt(settings.menuPosY/4);
if(is_lower){
if(settings.menuPosY >= menu[settings.menuPosX].items.length-1){
return;
}
Bangle.buzz(40, 0.6);
settings.menuPosY++;
if(parseInt(settings.menuPosY/4) == oldYScreen){
drawCursor();
return;
}
}
Bangle.buzz(40, 0.6);
settings.menuPosY++;
if(parseInt(settings.menuPosY/4) == oldYScreen){
drawCursor();
return;
}
}
if(is_upper){
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()){
if(is_upper){
if(e.y < 20){ // Reserved for widget clicks
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(){
try{
storage.write(SETTINGS_FILE, settings);
} catch(ex){
// If this fails, we still kill the app...
}
});
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;
}
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.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,
items: [
{
name: "Timer",
name: null,
get: () => ({ text: getAlarmMinutesText() + (isAlarmEnabled() ? " min" : ""), img: null}),
show: function() { smpltmrItems.items[0].emit("redraw"); },
hide: function () {},
@ -78,17 +78,18 @@
]
};
var offsets = [+1,+5,-1,-5];
var offsets = [+5,-5];
offsets.forEach((o, i) => {
smpltmrItems.items = smpltmrItems.items.concat({
name: String(o),
get: () => ({ text: getAlarmMinutesText() + " (" + (o > 0 ? "+" : "") + o + ")", img: null}),
name: null,
get: () => ({ text: (o > 0 ? "+" : "") + o + " min.", img: null}),
show: function() { smpltmrItems.items[i+1].emit("redraw"); },
hide: function () {},
run: function() {
if(o > 0) increaseAlarm(o);
else decreaseAlarm(Math.abs(o));
this.show();
return true;
}
});
});

View File

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