Merge branch 'master' of github.com:espruino/BangleApps
|
@ -4296,7 +4296,7 @@
|
|||
"name": "LCARS Clock",
|
||||
"shortName":"LCARS",
|
||||
"icon": "lcars.png",
|
||||
"version":"0.03",
|
||||
"version":"0.04",
|
||||
"supports": ["BANGLEJS2"],
|
||||
"description": "Library Computer Access Retrieval System (LCARS) clock.",
|
||||
"type": "clock",
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
0.01: Launch app
|
||||
0.02: Swipe left/right to set an alarm.
|
||||
0.03: New design with different icons if gps, hrm or compass is on.
|
||||
0.04: Inluded LCARS Logo.
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 8.3 KiB |
Before Width: | Height: | Size: 1.3 KiB |
|
@ -3,12 +3,12 @@
|
|||
*/
|
||||
const locale = require('locale');
|
||||
var alarm = -1;
|
||||
var hrmStr = "-"
|
||||
var hrmValue = "-";
|
||||
|
||||
var backgroundImage = {
|
||||
width : 176, height : 151, bpp : 3,
|
||||
transparent : 2,
|
||||
buffer : require("heatshrink").decompress(atob("AEcEiFBASFADpETps06YCcEYXnz15ASBBJzVp0wCdEYU8+fPASHAIJCAdQf6DpoUIkGCATCDWIBCDDzANJAGaDC6BB9QYWAQf804CD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/QbhA9Qf6D2oMEiFAQfoyB6ZBKQeYyBzVgQf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6Dnz1586D+AGaDNAGaD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qc8Bg8euPv337ASHwDQNz588+YCC5AlCjR6CARCDN+/fvoCV6AbBj158+eAQV4EwUTPQQCIQZcB859SQdkPQCyDpvaAWQbmYIBUDQC6DQAC8eQC6DQAC8XQf6D/AASAYQdCAYQf6DHAESDeAESD/Qf6D/Qf6DK+2LtmXQfu8FEiDb8BB9QYRA9QYZB+Qf6D/AAccuPHIPwA/AH4A/AH4AHyVJkhB+zVp0yD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6DlwCD/02QQf8kyVIkGChACeFAMo0WKAQOIC56/CQYQCi0kAgMv33794CUQYYChQYU9+/fvoCTviD/Qf6D/Qf6D/Qf6DLjSD/94="))
|
||||
buffer : require("heatshrink").decompress(atob("jlx44CdEQMHnnz54Ca/+OnHjAThlC8+evICaQf4CBQDqD/Qf6DruAlCAHJlC8BA8gCDDIPqD/Qf6D/QZEUQf6D/QYUEG2VwQf8D/yD/j//4CD+IIP4Qf6D/gH/Qf8HIIP/QfpBDGpCDzGQJBCj/x4CD4gY/CAAPj//4QZDCw+DFD/kBAQKD2n44Bn5BDJQWAQeh6BAQRBEgEf+CD0h7+CQYaACgf+Qel/4CDFYQYLCQeJ3DIJCPDQeNwII/wBASD0HAUPIJCDzj44DIJH/QeUffwZBE/yD6v5BE//AQesDIISD/QYvHj6D4PQRBCAoJBDh6DzgF+IIiJBIId/AQKDxGoZBCwCMB/6ABIIiDwF4RBB/hKEjlwCAaDwgP/8aCBGQcP/DLCQecB4/8QYJKFRIaDyAAKCB/AGDh6JEQeQABj//48cgEHHAKJEAGkD/0/QwIABAoJB4j/wQASGDIPQHFg/gIO59BIIyD4AH4A/AH4A/AH4A/AH4A/AEMcuPHAQoLLARvADQUYsOGASgZBkv/AA39EwUbtu27YCSwAaC6dNmgCUgEBNZImCj158+eASSDDjVp02aAScAh6CHQfDvKQesTQRCD3QBCD4QRKD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6DNxkgwUIAQYmCiZoVDIUAyaDaD4YA5QQXgIPr+FQfxB+Qf6DD/qD/Qf4A/AH4A/AH4A/AH4A/AB0cuPHIP3z588Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6DbwCD/Qf6DC8CD/48cQf88+fNmnTpoCLkAXCi/fvv3ASgvCARk4QYYCP4CbGAUpQNAQqDE/4Am/qD/Qf6D/Qf6D/Qf6D/ARoA="))
|
||||
}
|
||||
|
||||
var iconPlanet = {
|
||||
|
@ -23,12 +23,6 @@ var iconGps = {
|
|||
buffer : require("heatshrink").decompress(atob("pMkyQCFpH0BAwCJv/6CJ8l589CJ0kyf//wIDpVEChM8+/fBAdZ8QRIp++///0gIBlMkxI4IuZKB+/SKAPHzpKJ/YkB//pKAP2BYeXhIFDx88+fPvqYBnibEkmUAofv34lC/RQBBYdcmPCXIYjBEwPfvnzJoILBQoUlHAUuJQYmCDodw48cuBKGTA0WEYIEBJQ6YEQwMMuImBJQyYEkmZFAVkyVSJQ6YCyUcmPDjgmBTAJKETAlJiS4ETANPJQpxCJQtxTALgBEwnfvohBI4NZkmWpNlcAgAD/wzBEYaYCy8cJQiYEyIjCTAWS3wlGTAVIEwkerJKFTAkmOIclToK8GAAIPBIgImCufHyxxG59pEIS8DvfypMr968HEwOHEwfx8+cEYkpCIeSoiYByVf/uSkmTEQP7ZIiYDnl5AQNwBYgCGyOn38k2+2pIRKyVeuPPj1x4ccCJVKSgP/5cJA4NSExMps+cSoMMKAIVCCg7SBpd7TANZkmUHBMevPnjlwcwXCCJFEzYDBA4WWKIIRHpEw4+eNwUxEwKYIkVJk1IyIKFHA+DR4VcJQYCBJRBoCkxHBAgNkyyYKkmXEYaYMAQMSEYKYNAQOHEwnSfBYjBAgVaCJdJJSMkTAK8KYQyVKAQ4jBNxiYEcBCYJXIkgA="))
|
||||
}
|
||||
|
||||
var iconHrm = {
|
||||
width : 50, height : 50, bpp : 3,
|
||||
transparent : 1,
|
||||
buffer : require("heatshrink").decompress(atob("kmSpIC/AX4CT+PHjlxARfBkmGjFhAR2REZwCC7AjPAQIjQ48dw0//4ANsOB49/CJv8JQNjEh32JQN3BY/5AwpKLkhKQ8+eBIhKK/jZBJR/+vPnJR/JkmTJR3xJQN5JRPypMkz5uByfJk5KI/zXCFQMev/nC4JKIkhrBn4pB/+Sp5KJfwnnOIqVHSQS5CFgaVIDQPHj4FBOIJNCSo/9EAI/CFIJNCSo/njiSC/KYDcBH6IgQAFcBHx44RGcBYAHcBIAHJRAAJJRAAJJSrdEARfYsOGjACOngjP48EyQdHx04BAtkyTnCAQYsCDoILGAQ2OnfvCJ2TIgNwCJuSpHj335CJnxNYvBChU48ZKC3378gRJp6SGiQ4JkaSBJQP7EwIOEyA"))
|
||||
}
|
||||
|
||||
var iconCompass = {
|
||||
width : 50, height : 50, bpp : 3,
|
||||
transparent : 2,
|
||||
|
@ -72,50 +66,51 @@ function draw(queue){
|
|||
g.drawImage(backgroundImage, 0, 24);
|
||||
|
||||
// Draw raster
|
||||
for(var x=0; x<6; x++){
|
||||
g.drawLine(115+x*10, 100, 115+x*10, 160);
|
||||
// g.drawLine(112, 100, 112, 165);
|
||||
for(var x=1; x<7; x++){
|
||||
g.drawLine(110+x*10, 100, 110+x*10, 160);
|
||||
}
|
||||
|
||||
for(var y=0; y<6; y++){
|
||||
g.drawLine(110, 105+y*10, 170, 105+y*10);
|
||||
g.drawLine(113, 105+y*10, 180, 105+y*10);
|
||||
}
|
||||
|
||||
// Draw symbol
|
||||
var iconImg =
|
||||
alarm >= 0 ? iconAlarm :
|
||||
Bangle.isGPSOn() ? iconGps :
|
||||
Bangle.isHRMOn() ? iconHrm :
|
||||
Bangle.isCompassOn() ? iconCompass :
|
||||
iconPlanet;
|
||||
g.drawImage(iconImg, 115, 105);
|
||||
alarm >= 0 ? iconAlarm :
|
||||
Bangle.isGPSOn() ? iconGps :
|
||||
Bangle.isCompassOn() ? iconCompass :
|
||||
iconPlanet;
|
||||
g.drawImage(iconImg, 120, 107);
|
||||
|
||||
// Alarm within symbol
|
||||
g.setFontAntonioMedium();
|
||||
if(alarm > 0){
|
||||
g.setFontAlign(0,0,0);
|
||||
g.drawString(alarm, 120+25, 107+25);
|
||||
g.setFontAlign(-1,-1,0);
|
||||
}
|
||||
|
||||
// Write time
|
||||
var currentDate = new Date();
|
||||
var timeStr = locale.time(currentDate,1);
|
||||
g.setFontAlign(0,0,0);
|
||||
g.setFontAntonioLarge();
|
||||
g.drawString(timeStr, 57, 57);
|
||||
g.drawString(timeStr, 55, 57);
|
||||
|
||||
// Write date
|
||||
g.setFontAlign(1,-1, 0);
|
||||
g.setFontAlign(-1,-1, 0);
|
||||
g.setFontAntonioMedium();
|
||||
|
||||
var dayName = locale.dow(currentDate, true).toUpperCase();
|
||||
var day = currentDate.getDate();
|
||||
g.drawString(day, 133, 37);
|
||||
g.drawString(dayName, 133, 57);
|
||||
g.drawString(day, 100, 37);
|
||||
g.drawString(dayName, 100, 57);
|
||||
|
||||
// Alarm within symbol
|
||||
if(alarm > 0){
|
||||
g.setFontAlign(0,0,0);
|
||||
g.drawString(alarm, 115+25, 105+25);
|
||||
g.setFontAlign(-1,-1,0);
|
||||
}
|
||||
|
||||
// HRM
|
||||
// Temperature
|
||||
g.setFontAlign(-1,-1,0);
|
||||
g.drawString("HRM:", 20, 104);
|
||||
g.drawString(hrmStr, 60, 104);
|
||||
g.drawString(hrmValue, 60, 104);
|
||||
|
||||
// Draw steps
|
||||
var steps = getSteps();
|
||||
|
@ -128,7 +123,6 @@ function draw(queue){
|
|||
g.drawString("BAT:", 20, 144);
|
||||
g.drawString(charging + bat+ "%", 60, 144);
|
||||
|
||||
|
||||
// Queue draw in one minute
|
||||
if(queue){
|
||||
queueDraw();
|
||||
|
@ -153,6 +147,13 @@ function stepsWidget() {
|
|||
return undefined;
|
||||
}
|
||||
|
||||
/*
|
||||
* HRM
|
||||
*/
|
||||
Bangle.on('HRM',function(hrm) {
|
||||
hrmValue = hrm.bpm;
|
||||
});
|
||||
|
||||
/*
|
||||
* Handle alarm
|
||||
*/
|
||||
|
@ -214,14 +215,6 @@ Bangle.on('swipe',function(dir) {
|
|||
});
|
||||
|
||||
|
||||
/*
|
||||
* Measure heart rate
|
||||
*/
|
||||
Bangle.on('HRM', function(hrm) {
|
||||
hrmStr = hrm.bpm;
|
||||
});
|
||||
|
||||
|
||||
/*
|
||||
* Stop updates when LCD is off, restart when on
|
||||
*/
|
||||
|
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 26 KiB |