BangleApps/apps/smpltmr/clkinfo.js

98 lines
2.5 KiB
JavaScript
Raw Normal View History

(function() {
const TIMER_IDX = "smpltmr";
var alarm = require('sched');
function isAlarmEnabled(){
try{
var alarmObj = alarm.getAlarm(TIMER_IDX);
if(alarmObj===undefined || !alarmObj.on){
return false;
}
return true;
} catch(ex){ }
return false;
}
function getAlarmMinutes(){
if(!isAlarmEnabled()){
return -1;
}
var alarmObj = alarm.getAlarm(TIMER_IDX);
return Math.round(alarm.getTimeToAlarm(alarmObj)/(60*1000));
}
function getAlarmMinutesText(){
var min = getAlarmMinutes();
if(min < 0)
return "OFF";
return min + " min";
}
function increaseAlarm(t){
try{
var minutes = isAlarmEnabled() ? getAlarmMinutes() : 0;
alarm.setAlarm(TIMER_IDX, {
timer : (minutes+t)*60*1000,
});
alarm.reload();
} catch(ex){ }
}
function decreaseAlarm(t){
try{
var minutes = getAlarmMinutes();
minutes -= t;
alarm.setAlarm(TIMER_IDX, undefined);
if(minutes > 0){
alarm.setAlarm(TIMER_IDX, {
timer : minutes*60*1000,
});
}
alarm.reload();
} catch(ex){ }
}
var smpltmrItems = {
name: "Timer",
img: atob("GBiBAAB+AAB+AAAYAAAYAAB+AA3/sA+B8A4AcAwMMBgPGBgPmDAPjDAPzDAPzDP/zDP/zDH/jBn/mBj/GAw8MA4AcAeB4AH/gAB+AA=="),
items: [
{
name: null,
get: () => ({ text: getAlarmMinutesText(), img: smpltmrItems.img } ),
show: function() { this.interval = setInterval(()=>this.emit('redraw'), 60000); },
hide: function () { clearInterval(this.interval); delete this.interval; },
//run: function() { } // should tapping do something?
},
]
};
const restoreMainItem = function(clkinfo) {
clkinfo.menuB = 0;
// clock info redraws after this
};
var offsets = [+5,-5];
offsets.forEach((o, i) => {
smpltmrItems.items = smpltmrItems.items.concat({
name: null,
get: () => ({ text: (o > 0 ? "+" : "") + o + " min", img: (o>0)?atob("GBiBAAB+AAB+AAAYAAAYAAB+AA3/sA+B8A4AcAwAMBgYGBgYGDAYDDAYDDH/jDH/jDAYDDAYDBgYGBgYGAwAMA4AcAeB4AH/gAB+AA=="):atob("GBiBAAB+AAB+AAAYAAAYAAB+AA3/sA+B8A4AcAwAMBgAGBgAGDAADDAADDH/jDH/jDAADDAADBgAGBgAGAwAMA4AcAeB4AH/gAB+AA==") }),
show: function() { },
hide: function() { },
blur: restoreMainItem,
run: function() {
if(o > 0) increaseAlarm(o);
else decreaseAlarm(Math.abs(o));
this.show();
return true;
}
});
});
return smpltmrItems;
})