Merge branch 'espruino:master' into master
commit
59692c8ca1
16
apps.json
16
apps.json
|
|
@ -51,6 +51,7 @@
|
||||||
{
|
{
|
||||||
"id": "android",
|
"id": "android",
|
||||||
"name": "Android Integration",
|
"name": "Android Integration",
|
||||||
|
"shortName": "Android",
|
||||||
"version": "0.03",
|
"version": "0.03",
|
||||||
"description": "(BETA) App to display notifications from Gadgetbridge on Android. This will eventually replace the Gadgetbridge widget.",
|
"description": "(BETA) App to display notifications from Gadgetbridge on Android. This will eventually replace the Gadgetbridge widget.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
|
|
@ -213,7 +214,7 @@
|
||||||
"id": "welcome",
|
"id": "welcome",
|
||||||
"name": "Welcome",
|
"name": "Welcome",
|
||||||
"shortName": "Welcome",
|
"shortName": "Welcome",
|
||||||
"version": "0.13",
|
"version": "0.14",
|
||||||
"description": "Appears at first boot and explains how to use Bangle.js",
|
"description": "Appears at first boot and explains how to use Bangle.js",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"screenshots": [{"url":"screenshot_welcome.png"}],
|
"screenshots": [{"url":"screenshot_welcome.png"}],
|
||||||
|
|
@ -4431,5 +4432,18 @@
|
||||||
"data": [
|
"data": [
|
||||||
{"name":"app.json"}
|
{"name":"app.json"}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{ "id": "timecal",
|
||||||
|
"name": "TimeCal",
|
||||||
|
"shortName":"TimeCal",
|
||||||
|
"icon": "icon.png",
|
||||||
|
"version":"0.01",
|
||||||
|
"description": "TimeCal shows the Time along with a 3 week calendar",
|
||||||
|
"tags": "clock",
|
||||||
|
"type": "clock",
|
||||||
|
"supports":["BANGLEJS2"],
|
||||||
|
"storage": [
|
||||||
|
{"name":"timecal.app.js","url":"timecal.app.js"}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 3.7 KiB |
|
|
@ -0,0 +1,94 @@
|
||||||
|
var center = g.getWidth() / 2;
|
||||||
|
var lastDayDraw;
|
||||||
|
var lastTimeDraw;
|
||||||
|
|
||||||
|
var fontColor = g.theme.fg;
|
||||||
|
var accentColor = "#FF0000";
|
||||||
|
var locale = require("locale");
|
||||||
|
|
||||||
|
function loop() {
|
||||||
|
var d = new Date();
|
||||||
|
var cleared = false;
|
||||||
|
if(lastDayDraw != d.getDate()){
|
||||||
|
lastDayDraw = d.getDate();
|
||||||
|
drawDate(d);
|
||||||
|
drawCal(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lastTimeDraw != d.getMinutes() || cleared){
|
||||||
|
lastTimeDraw = d.getMinutes();
|
||||||
|
drawTime(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function drawTime(d){
|
||||||
|
var hour = ("0" + d.getHours()).slice(-2);
|
||||||
|
var min = ("0" + d.getMinutes()).slice(-2);
|
||||||
|
g.setFontAlign(0,-1,0);
|
||||||
|
g.setFont("Vector",40);
|
||||||
|
g.setColor(fontColor);
|
||||||
|
g.clearRect(0,50,g.getWidth(),90);
|
||||||
|
g.drawString(hour + ":" + min,center,50);
|
||||||
|
}
|
||||||
|
function drawDate(d){
|
||||||
|
var day = ("0" + d.getDate()).slice(-2);
|
||||||
|
var month = ("0" + d.getMonth()).slice(-2);
|
||||||
|
var dateStr = locale.date(d,1);
|
||||||
|
g.clearRect(0,24,g.getWidth(),44);
|
||||||
|
g.setFont("Vector",20);
|
||||||
|
g.setColor(fontColor);
|
||||||
|
g.setFontAlign(0,-1,0);
|
||||||
|
g.drawString(dateStr,center,24);
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawCal(d){
|
||||||
|
var calStart = 101;
|
||||||
|
var cellSize = g.getWidth() / 7;
|
||||||
|
var halfSize = cellSize / 2;
|
||||||
|
g.clearRect(0,calStart,g.getWidth(),g.getHeight());
|
||||||
|
g.drawLine(0,calStart,g.getWidth(),calStart);
|
||||||
|
var days = ["Mo","Tu","We","Th","Fr","Sa","Su"];
|
||||||
|
g.setFont("Vector",10);
|
||||||
|
g.setColor(fontColor);
|
||||||
|
g.setFontAlign(-1,-1,0);
|
||||||
|
for(var i = 0; i < days.length;i++){
|
||||||
|
g.drawString(days[i],i*cellSize+5,calStart -11);
|
||||||
|
if(i!=0){
|
||||||
|
g.drawLine(i*cellSize,calStart,i*cellSize,g.getHeight());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var cellHeight = (g.getHeight() -calStart ) / 3;
|
||||||
|
for(var i = 0;i < 3;i++){
|
||||||
|
var starty = calStart + i * cellHeight;
|
||||||
|
g.drawLine(0,starty,g.getWidth(),starty);
|
||||||
|
}
|
||||||
|
|
||||||
|
g.setFont("Vector",15);
|
||||||
|
|
||||||
|
var dayOfWeek = d.getDay();
|
||||||
|
var dayRem = d.getDay() - 1;
|
||||||
|
if(dayRem <0){
|
||||||
|
dayRem = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var start = new Date();
|
||||||
|
start.setDate(start.getDate()-(7+dayRem));
|
||||||
|
g.setFontAlign(0,-1,0);
|
||||||
|
for (var y = 0;y < 3; y++){
|
||||||
|
for(var x = 0;x < 7; x++){
|
||||||
|
if(start.getDate() === d.getDate()){
|
||||||
|
g.setColor(accentColor);
|
||||||
|
}else{
|
||||||
|
g.setColor(fontColor);
|
||||||
|
}
|
||||||
|
g.drawString(start.getDate(),x*cellSize +(cellSize / 2) + 2,calStart+(cellHeight*y) + 5);
|
||||||
|
start.setDate(start.getDate()+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g.clear();
|
||||||
|
Bangle.setUI("clock");
|
||||||
|
Bangle.loadWidgets();
|
||||||
|
Bangle.drawWidgets();
|
||||||
|
loop();
|
||||||
|
setInterval(loop,1000);
|
||||||
|
|
@ -15,3 +15,4 @@
|
||||||
0.11: Fix initial screen fill colour
|
0.11: Fix initial screen fill colour
|
||||||
0.12: Fix swipe direction (#800)
|
0.12: Fix swipe direction (#800)
|
||||||
0.13: Mods for Bangle.js 2
|
0.13: Mods for Bangle.js 2
|
||||||
|
0.14: Turn off and run later to use softOff to time is set right
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,8 @@
|
||||||
'Run Now': () => load('welcome.app.js'),
|
'Run Now': () => load('welcome.app.js'),
|
||||||
'Turn off & run next': () => {
|
'Turn off & run next': () => {
|
||||||
require('Storage').write('welcome.json', {welcomed: false});
|
require('Storage').write('welcome.json', {welcomed: false});
|
||||||
Bangle.off();
|
Bangle.setLocked(true); // fix for pre-2v11 firmware that can accidentally leave touchscreen on
|
||||||
|
if (Bangle.softOff()) Bangle.softOff(); else Bangle.off();
|
||||||
},
|
},
|
||||||
'< Back': back,
|
'< Back': back,
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -171,7 +171,9 @@ function onAppJSONLoaded() {
|
||||||
if (deviceId !== undefined)
|
if (deviceId !== undefined)
|
||||||
filterAppsForDevice(deviceId);
|
filterAppsForDevice(deviceId);
|
||||||
|
|
||||||
return new Promise(resolve => {
|
/* Disable external screenshot loading - seems we probably have enough
|
||||||
|
screenshots added manually in apps.json */
|
||||||
|
/*return new Promise(resolve => {
|
||||||
httpGet("screenshots.json").then(screenshotJSON=>{
|
httpGet("screenshots.json").then(screenshotJSON=>{
|
||||||
var screenshots = [];
|
var screenshots = [];
|
||||||
try {
|
try {
|
||||||
|
|
@ -189,5 +191,5 @@ function onAppJSONLoaded() {
|
||||||
console.log("No screenshots.json found");
|
console.log("No screenshots.json found");
|
||||||
resolve();
|
resolve();
|
||||||
});
|
});
|
||||||
});
|
});*/
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue