forked from FOSS/BangleApps
More testing and tweaking of existing clock apps
parent
c1d06ef4d9
commit
6d73d175eb
18
apps.json
18
apps.json
|
@ -312,7 +312,7 @@
|
|||
{ "id": "impwclock",
|
||||
"name": "Imprecise Word Clock",
|
||||
"icon": "clock-impword.png",
|
||||
"version":"0.02",
|
||||
"version":"0.03",
|
||||
"description": "Imprecise word clock for vacations, weekends, and those who never need accurate time.",
|
||||
"tags": "clock",
|
||||
"type":"clock",
|
||||
|
@ -1785,7 +1785,7 @@
|
|||
"name": "SWL Clock / Short Wave Listner Clock",
|
||||
"shortName": "SWL Clock",
|
||||
"icon": "swlclk.png",
|
||||
"version":"0.01",
|
||||
"version":"0.02",
|
||||
"description": "Display Local, UTC time and some programs on the shorts waves along the day, with the frequencies",
|
||||
"tags": "tool,clock",
|
||||
"type":"clock",
|
||||
|
@ -1801,7 +1801,7 @@
|
|||
"name": "Round clock with seconds, minutes and date",
|
||||
"shortName": "Round Clock",
|
||||
"icon": "app.png",
|
||||
"version": "0.05",
|
||||
"version": "0.06",
|
||||
"description": "Designed round clock with ticks for minutes and seconds and heart rate indication",
|
||||
"tags": "clock",
|
||||
"type": "clock",
|
||||
|
@ -1815,7 +1815,7 @@
|
|||
"name": "fclock",
|
||||
"shortName": "F Clock",
|
||||
"icon": "app.png",
|
||||
"version": "0.01",
|
||||
"version": "0.02",
|
||||
"description": "Simple design of a digital clock",
|
||||
"tags": "clock",
|
||||
"type": "clock",
|
||||
|
@ -2623,7 +2623,7 @@
|
|||
"name": "ISO Compliant Clock Face",
|
||||
"shortName":"ISO Clock",
|
||||
"icon": "isoclock.png",
|
||||
"version":"0.01",
|
||||
"version":"0.02",
|
||||
"description": "Tweaked fork of digiclock for ISO date and time",
|
||||
"tags": "clock",
|
||||
"type" : "clock",
|
||||
|
@ -2781,7 +2781,7 @@
|
|||
{ "id": "lazyclock",
|
||||
"name": "Lazy Clock",
|
||||
"icon": "lazyclock.png",
|
||||
"version":"0.02",
|
||||
"version":"0.03",
|
||||
"readme": "README.md",
|
||||
"description": "Tells the time, roughly",
|
||||
"tags": "clock",
|
||||
|
@ -2821,13 +2821,13 @@
|
|||
"name": "Game of Life Clock",
|
||||
"shortName":"Conway's Clock",
|
||||
"icon": "app.png",
|
||||
"version":"0.05",
|
||||
"version":"0.06",
|
||||
"description": "Modification and clockification of Conway's Game of Life",
|
||||
"tags": "clock",
|
||||
"type" : "clock",
|
||||
"readme": "README.md",
|
||||
"storage": [
|
||||
{"name":"lifeclk.app.js","url":"app.js"},
|
||||
{"name":"lifeclk.app.js","url":"app.min.js"},
|
||||
{"name":"lifeclk.img","url":"app-icon.js","evaluate":true}
|
||||
]
|
||||
},
|
||||
|
@ -3347,7 +3347,7 @@
|
|||
{ "id": "mysticclock",
|
||||
"name": "Mystic Clock",
|
||||
"icon": "mystic-clock.png",
|
||||
"version":"1.00",
|
||||
"version":"1.01",
|
||||
"description": "A retro-inspired watchface featuring time, date, and an interactive data display line.",
|
||||
"tags": "clock",
|
||||
"type":"clock",
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
0.01: First published version of app
|
||||
0.02: Move to Bangle.setUI to launcher support
|
||||
|
|
|
@ -1,206 +1,203 @@
|
|||
{
|
||||
var minutes;
|
||||
var seconds;
|
||||
var hours;
|
||||
var date;
|
||||
var first = true;
|
||||
var locale = require('locale');
|
||||
var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false;
|
||||
var minutes;
|
||||
var seconds;
|
||||
var hours;
|
||||
var date;
|
||||
var first = true;
|
||||
var locale = require('locale');
|
||||
var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false;
|
||||
|
||||
//HR variables
|
||||
var id = 0;
|
||||
var grow = true;
|
||||
var size=10;
|
||||
//HR variables
|
||||
var id = 0;
|
||||
var grow = true;
|
||||
var size=10;
|
||||
|
||||
//Screen dimensions
|
||||
const screen = {
|
||||
width: g.getWidth(),
|
||||
height: g.getWidth(),
|
||||
middle: g.getWidth() / 2,
|
||||
center: g.getHeight() / 2,
|
||||
};
|
||||
//Screen dimensions
|
||||
const screen = {
|
||||
width: g.getWidth(),
|
||||
height: g.getWidth(),
|
||||
middle: g.getWidth() / 2,
|
||||
center: g.getHeight() / 2,
|
||||
};
|
||||
|
||||
// Ssettings
|
||||
const settings = {
|
||||
time: {
|
||||
color: '#dddddd',
|
||||
font: 'Vector',
|
||||
size: 100,
|
||||
middle: screen.middle,
|
||||
center: screen.center,
|
||||
},
|
||||
date: {
|
||||
color: '#dddddd',
|
||||
font: 'Vector',
|
||||
size: 15,
|
||||
middle: screen.height-17, // at bottom of screen
|
||||
center: screen.center,
|
||||
},
|
||||
circle: {
|
||||
colormin: '#ffffff',
|
||||
colorsec: '#ffffff',
|
||||
width: 10,
|
||||
middle: screen.middle,
|
||||
center: screen.center,
|
||||
height: screen.height
|
||||
},
|
||||
hr: {
|
||||
color: '#333333',
|
||||
size: 20,
|
||||
x: screen.center,
|
||||
y: screen.middle + 65
|
||||
}
|
||||
};
|
||||
// Ssettings
|
||||
const settings = {
|
||||
time: {
|
||||
color: '#dddddd',
|
||||
font: 'Vector',
|
||||
size: 100,
|
||||
middle: screen.middle,
|
||||
center: screen.center,
|
||||
},
|
||||
date: {
|
||||
color: '#dddddd',
|
||||
font: 'Vector',
|
||||
size: 15,
|
||||
middle: screen.height-17, // at bottom of screen
|
||||
center: screen.center,
|
||||
},
|
||||
circle: {
|
||||
colormin: '#ffffff',
|
||||
colorsec: '#ffffff',
|
||||
width: 10,
|
||||
middle: screen.middle,
|
||||
center: screen.center,
|
||||
height: screen.height
|
||||
},
|
||||
hr: {
|
||||
color: '#333333',
|
||||
size: 20,
|
||||
x: screen.center,
|
||||
y: screen.middle + 65
|
||||
}
|
||||
};
|
||||
|
||||
const dateStr = function (date) {
|
||||
return locale.date(new Date(), 1);
|
||||
};
|
||||
const dateStr = function (date) {
|
||||
return locale.date(new Date(), 1);
|
||||
};
|
||||
|
||||
const getFormated = function(val) {
|
||||
if (val<10) {
|
||||
val='0'+val;
|
||||
}
|
||||
const getFormated = function(val) {
|
||||
if (val<10) {
|
||||
val='0'+val;
|
||||
}
|
||||
|
||||
return val;
|
||||
};
|
||||
return val;
|
||||
};
|
||||
|
||||
const drawMin = function (sections, color) {
|
||||
|
||||
g.setFontAlign(0, 0, 0);
|
||||
g.setColor('#000000');
|
||||
g.setFont(settings.time.font, settings.time.size/2);
|
||||
g.drawString(getFormated(sections-1), settings.time.center+50, settings.time.middle);
|
||||
g.setColor(settings.time.color);
|
||||
g.setFont(settings.time.font, settings.time.size/2);
|
||||
g.drawString(getFormated(sections), settings.time.center+50, settings.time.middle);
|
||||
};
|
||||
const drawMin = function (sections, color) {
|
||||
|
||||
const drawSec = function (sections, color) {
|
||||
g.setFontAlign(0, 0, 0);
|
||||
g.setColor('#000000');
|
||||
g.setFont(settings.time.font, settings.time.size/4);
|
||||
g.drawString(getFormated(sections-1), settings.time.center+100, settings.time.middle);
|
||||
g.setColor(settings.time.color);
|
||||
g.setFont(settings.time.font, settings.time.size/4);
|
||||
g.drawString(getFormated(sections), settings.time.center+100, settings.time.middle);
|
||||
};
|
||||
g.setFontAlign(0, 0, 0);
|
||||
g.setColor('#000000');
|
||||
g.setFont(settings.time.font, settings.time.size/2);
|
||||
g.drawString(getFormated(sections-1), settings.time.center+50, settings.time.middle);
|
||||
g.setColor(settings.time.color);
|
||||
g.setFont(settings.time.font, settings.time.size/2);
|
||||
g.drawString(getFormated(sections), settings.time.center+50, settings.time.middle);
|
||||
};
|
||||
|
||||
const drawClock = function () {
|
||||
const drawSec = function (sections, color) {
|
||||
g.setFontAlign(0, 0, 0);
|
||||
g.setColor('#000000');
|
||||
g.setFont(settings.time.font, settings.time.size/4);
|
||||
g.drawString(getFormated(sections-1), settings.time.center+100, settings.time.middle);
|
||||
g.setColor(settings.time.color);
|
||||
g.setFont(settings.time.font, settings.time.size/4);
|
||||
g.drawString(getFormated(sections), settings.time.center+100, settings.time.middle);
|
||||
};
|
||||
|
||||
currentTime = new Date();
|
||||
const drawClock = function () {
|
||||
|
||||
//Get date as a string
|
||||
date = dateStr(currentTime);
|
||||
|
||||
if(seconds==59) {
|
||||
g.clear();
|
||||
}
|
||||
currentTime = new Date();
|
||||
|
||||
// Update minutes when needed
|
||||
if (minutes != currentTime.getMinutes()) {
|
||||
minutes = currentTime.getMinutes();
|
||||
drawMin(minutes, settings.circle.colormin);
|
||||
}
|
||||
//Get date as a string
|
||||
date = dateStr(currentTime);
|
||||
|
||||
//Update seconds when needed
|
||||
if (seconds != currentTime.getSeconds()) {
|
||||
seconds = currentTime.getSeconds();
|
||||
drawSec(seconds, settings.circle.colorsec);
|
||||
}
|
||||
if(seconds==59) {
|
||||
g.clear();
|
||||
}
|
||||
|
||||
//Write the time as configured in the settings
|
||||
hours = currentTime.getHours();
|
||||
if (_12hour && hours > 13) {
|
||||
hours = hours - 12;
|
||||
}
|
||||
// Update minutes when needed
|
||||
if (minutes != currentTime.getMinutes()) {
|
||||
minutes = currentTime.getMinutes();
|
||||
drawMin(minutes, settings.circle.colormin);
|
||||
}
|
||||
|
||||
var meridian;
|
||||
//Update seconds when needed
|
||||
if (seconds != currentTime.getSeconds()) {
|
||||
seconds = currentTime.getSeconds();
|
||||
drawSec(seconds, settings.circle.colorsec);
|
||||
}
|
||||
|
||||
if (typeof locale.meridian === "function") {
|
||||
meridian = locale.meridian(new Date());
|
||||
} else {
|
||||
meridian = "";
|
||||
}
|
||||
//Write the time as configured in the settings
|
||||
hours = currentTime.getHours();
|
||||
if (_12hour && hours > 13) {
|
||||
hours = hours - 12;
|
||||
}
|
||||
|
||||
var timestr;
|
||||
var meridian;
|
||||
|
||||
if (meridian.length > 0 && _12hour) {
|
||||
timestr = hours + " " + meridian;
|
||||
} else {
|
||||
timestr = hours;
|
||||
}
|
||||
g.setFontAlign(0, 0, 0);
|
||||
g.setColor(settings.time.color);
|
||||
g.setFont(settings.time.font, settings.time.size);
|
||||
g.drawString(timestr, settings.time.center-40, settings.time.middle);
|
||||
if (typeof locale.meridian === "function") {
|
||||
meridian = locale.meridian(new Date());
|
||||
} else {
|
||||
meridian = "";
|
||||
}
|
||||
|
||||
//Write the date as configured in the settings
|
||||
g.setColor(settings.date.color);
|
||||
g.setFont(settings.date.font, settings.date.size);
|
||||
g.drawString(date, settings.date.center, settings.date.middle);
|
||||
};
|
||||
var timestr;
|
||||
|
||||
//setInterval for HR visualisation
|
||||
const newBeats = function (hr) {
|
||||
if (id != 0) {
|
||||
changeInterval(id, 6e3 / hr.bpm);
|
||||
} else {
|
||||
id = setInterval(drawHR, 6e3 / hr.bpm);
|
||||
}
|
||||
};
|
||||
if (meridian.length > 0 && _12hour) {
|
||||
timestr = hours + " " + meridian;
|
||||
} else {
|
||||
timestr = hours;
|
||||
}
|
||||
g.setFontAlign(0, 0, 0);
|
||||
g.setColor(settings.time.color);
|
||||
g.setFont(settings.time.font, settings.time.size);
|
||||
g.drawString(timestr, settings.time.center-40, settings.time.middle);
|
||||
|
||||
//visualize HR with circles pulsating
|
||||
const drawHR = function () {
|
||||
if (grow && size < settings.hr.size) {
|
||||
size++;
|
||||
}
|
||||
//Write the date as configured in the settings
|
||||
g.setColor(settings.date.color);
|
||||
g.setFont(settings.date.font, settings.date.size);
|
||||
g.drawString(date, settings.date.center, settings.date.middle);
|
||||
};
|
||||
|
||||
if (!grow && size > 3) {
|
||||
size--;
|
||||
}
|
||||
//setInterval for HR visualisation
|
||||
const newBeats = function (hr) {
|
||||
if (id != 0) {
|
||||
changeInterval(id, 6e3 / hr.bpm);
|
||||
} else {
|
||||
id = setInterval(drawHR, 6e3 / hr.bpm);
|
||||
}
|
||||
};
|
||||
|
||||
if (size == settings.hr.size || size == 3) {
|
||||
grow = !grow;
|
||||
}
|
||||
//visualize HR with circles pulsating
|
||||
const drawHR = function () {
|
||||
if (grow && size < settings.hr.size) {
|
||||
size++;
|
||||
}
|
||||
|
||||
if (grow) {
|
||||
color = settings.hr.color;
|
||||
g.setColor(color);
|
||||
g.fillCircle(settings.hr.x, settings.hr.y, size);
|
||||
} else {
|
||||
color = "#000000";
|
||||
g.setColor(color);
|
||||
g.drawCircle(settings.hr.x, settings.hr.y, size);
|
||||
}
|
||||
};
|
||||
if (!grow && size > 3) {
|
||||
size--;
|
||||
}
|
||||
|
||||
// clean app screen
|
||||
g.clear();
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
if (size == settings.hr.size || size == 3) {
|
||||
grow = !grow;
|
||||
}
|
||||
|
||||
//manage when things should be enabled and not
|
||||
Bangle.on('lcdPower', function (on) {
|
||||
if (on) {
|
||||
Bangle.setHRMPower(1);
|
||||
} else {
|
||||
Bangle.setHRMPower(0);
|
||||
}
|
||||
});
|
||||
if (grow) {
|
||||
color = settings.hr.color;
|
||||
g.setColor(color);
|
||||
g.fillCircle(settings.hr.x, settings.hr.y, size);
|
||||
} else {
|
||||
color = "#000000";
|
||||
g.setColor(color);
|
||||
g.drawCircle(settings.hr.x, settings.hr.y, size);
|
||||
}
|
||||
};
|
||||
|
||||
// refesh every second
|
||||
setInterval(drawClock, 1E3);
|
||||
// clean app screen
|
||||
g.clear();
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
||||
//start HR monitor and update frequency of update
|
||||
Bangle.setHRMPower(1);
|
||||
Bangle.on('HRM', function (d) {
|
||||
newBeats(d);
|
||||
});
|
||||
//manage when things should be enabled and not
|
||||
Bangle.on('lcdPower', function (on) {
|
||||
if (on) {
|
||||
Bangle.setHRMPower(1);
|
||||
} else {
|
||||
Bangle.setHRMPower(0);
|
||||
}
|
||||
});
|
||||
|
||||
// draw now
|
||||
drawClock();
|
||||
// refesh every second
|
||||
setInterval(drawClock, 1E3);
|
||||
|
||||
// Show launcher when middle button pressed
|
||||
setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" });
|
||||
//start HR monitor and update frequency of update
|
||||
Bangle.setHRMPower(1);
|
||||
Bangle.on('HRM', function (d) {
|
||||
newBeats(d);
|
||||
});
|
||||
|
||||
}
|
||||
// draw now
|
||||
drawClock();
|
||||
|
||||
// Show launcher when button pressed
|
||||
Bangle.setUI("clock");
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
0.01: New App!
|
||||
0.02: Stopped watchface from flashing every interval
|
||||
0.03: Move to Bangle.setUI to launcher support
|
||||
|
|
|
@ -47,10 +47,9 @@ const activeColorNight = 0xF800 /*red*/ ;
|
|||
const activeColorDay = 0xFFFF /* white */;
|
||||
|
||||
var hidxPrev;
|
||||
var showDigitalTime = false;
|
||||
|
||||
function drawWordClock() {
|
||||
|
||||
|
||||
// get time
|
||||
var t = new Date();
|
||||
var h = t.getHours();
|
||||
|
@ -141,7 +140,7 @@ function drawWordClock() {
|
|||
|
||||
// Display digital time while button 1 is pressed
|
||||
g.clearRect(0, 215, 240, 240);
|
||||
if (BTN1.read()){
|
||||
if (showDigitalTime){
|
||||
g.setColor(activeColor);
|
||||
g.drawString(time, 120, 215);
|
||||
}
|
||||
|
@ -158,8 +157,20 @@ Bangle.drawWidgets();
|
|||
setInterval(drawWordClock, 1E4);
|
||||
drawWordClock();
|
||||
|
||||
// Show digital time while top button is pressed
|
||||
setWatch(drawWordClock, BTN1, {repeat:true,edge:"both"});
|
||||
// Show digital time while top button is pressed (if we have physical buttons)
|
||||
if (global.BTN3) setWatch(function() {
|
||||
showDigitalTime = BTN1.read();
|
||||
drawWordClock();
|
||||
}, BTN1, {repeat:true,edge:"both"});
|
||||
|
||||
// Show launcher when middle button pressed
|
||||
setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"});
|
||||
// If LCD pressed (on Bangle.js 2) draw digital time
|
||||
Bangle.on('drag',e=>{
|
||||
var pressed = e.b!=0;
|
||||
if (pressed!=showDigitalTime) {
|
||||
showDigitalTime = pressed;
|
||||
drawWordClock();
|
||||
}
|
||||
});
|
||||
|
||||
// Show launcher when button pressed
|
||||
Bangle.setUI("clock");
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
0.01: Created app based on digiclock with some small tweaks.
|
||||
0.02: Swap to Bangle.setUI for launcher/buttons
|
||||
|
|
|
@ -1,82 +1,82 @@
|
|||
//load fonts
|
||||
require("Font7x11Numeric7Seg").add(Graphics);
|
||||
require("FontHaxorNarrow7x17").add(Graphics);
|
||||
require("FontHaxorNarrow7x17").add(Graphics);
|
||||
//screen position
|
||||
const X = 170;
|
||||
const Y = 140;
|
||||
const X = 170;
|
||||
const Y = 140;
|
||||
|
||||
function draw() {
|
||||
// Date Variables
|
||||
var date = new Date();
|
||||
var h = date.getHours();
|
||||
var m = date.getMinutes();
|
||||
var day = date.getDay();
|
||||
var date = new Date();
|
||||
var h = date.getHours();
|
||||
var m = date.getMinutes();
|
||||
var day = date.getDay();
|
||||
var month = date.getMonth()+1;
|
||||
var dateNum = date.getDate();
|
||||
var year = date.getFullYear();
|
||||
var half = "AM";
|
||||
var time = ("0" + h).substr(-2) + ":" + ("0" + m).substr(-2);
|
||||
|
||||
//convert day into string
|
||||
var dateNum = date.getDate();
|
||||
var year = date.getFullYear();
|
||||
var half = "AM";
|
||||
var time = ("0" + h).substr(-2) + ":" + ("0" + m).substr(-2);
|
||||
|
||||
//convert day into string
|
||||
switch (day) {
|
||||
case 0:
|
||||
day = "Sunday";
|
||||
break;
|
||||
|
||||
day = "Sunday";
|
||||
break;
|
||||
|
||||
case 1:
|
||||
day = "Monday";
|
||||
break;
|
||||
|
||||
day = "Monday";
|
||||
break;
|
||||
|
||||
case 2:
|
||||
day = "Tuesday";
|
||||
break;
|
||||
|
||||
day = "Tuesday";
|
||||
break;
|
||||
|
||||
case 3:
|
||||
day = "Wednesday";
|
||||
break;
|
||||
|
||||
day = "Wednesday";
|
||||
break;
|
||||
|
||||
case 4:
|
||||
day = "Thursday";
|
||||
break;
|
||||
|
||||
day = "Thursday";
|
||||
break;
|
||||
|
||||
case 5:
|
||||
day = "Friday";
|
||||
break;
|
||||
|
||||
day = "Friday";
|
||||
break;
|
||||
|
||||
case 6:
|
||||
day = "Saturday";
|
||||
break;
|
||||
|
||||
day = "Saturday";
|
||||
break;
|
||||
|
||||
default:
|
||||
day = "ERROR";
|
||||
break;
|
||||
day = "ERROR";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (h > 12) {
|
||||
half = "PM";
|
||||
h = h - 12;
|
||||
half = "PM";
|
||||
h = h - 12;
|
||||
}
|
||||
//reset graphics
|
||||
g.reset();
|
||||
g.reset();
|
||||
//draw the time
|
||||
g.setFont("7x11Numeric7Seg", 5);
|
||||
g.setFontAlign(1,1);
|
||||
g.drawString(time, X+10, Y, true /*clear background*/);
|
||||
g.setFont("7x11Numeric7Seg", 3);
|
||||
g.drawString(("0"+date.getSeconds()).substr(-2), X+55, Y, true /*clear background*/);
|
||||
g.setFont("7x11Numeric7Seg", 3);
|
||||
g.drawString(("0"+date.getSeconds()).substr(-2), X+55, Y, true /*clear background*/);
|
||||
g.setFontAlign(0,1);
|
||||
g.setFont("HaxorNarrow7x17", 3);
|
||||
g.drawString(day, X-60, Y+53, true);
|
||||
g.drawString(year+"-"+month+"-"+dateNum, X-55, Y-55, true);
|
||||
|
||||
|
||||
g.drawString(year+"-"+month+"-"+dateNum, X-55, Y-55, true);
|
||||
|
||||
|
||||
}
|
||||
|
||||
//clear screen at startup
|
||||
g.clear();
|
||||
g.clear();
|
||||
//draw immediatly
|
||||
draw();
|
||||
draw();
|
||||
|
||||
var secondInterval = setInterval(draw, 1000);
|
||||
// Stop updates when LCD is off, restart when on
|
||||
|
@ -92,4 +92,5 @@ Bangle.on('lcdPower',on=>{
|
|||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
||||
setWatch(Bangle.showLauncher, BTN2, {repeat : false, edge: "falling"});
|
||||
// Show launcher when button pressed
|
||||
Bangle.setUI("clock");
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
0.01: Launch app
|
||||
0.02: Fix bug with the elusive one o'clock monster; Only change template when going over boundaries; Re-jig wording options
|
||||
0.02: Fix bug with the elusive one o'clock monster; Only change template when going over boundaries; Re-jig wording options
|
||||
0.03: Use Bangle.setUI for launcher/buttons
|
||||
|
|
|
@ -221,22 +221,13 @@ function addEvents() {
|
|||
}
|
||||
});
|
||||
|
||||
setWatch(switchMode, BTN1, {
|
||||
repeat: true,
|
||||
edge: "falling"
|
||||
});
|
||||
|
||||
setWatch(Bangle.showLauncher, BTN2, {
|
||||
repeat: false,
|
||||
edge: "falling"
|
||||
});
|
||||
|
||||
setWatch(() => {
|
||||
currentFormatter = null;
|
||||
refreshTime();
|
||||
}, BTN3, {
|
||||
repeat: true,
|
||||
edge: "falling"
|
||||
// Show launcher when button pressed
|
||||
Bangle.setUI("clockupdown", btn=>{
|
||||
if (btn<0) switchMode();
|
||||
if (btn>0) {
|
||||
currentFormatter = null;
|
||||
refreshTime();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -245,9 +236,9 @@ function init() {
|
|||
|
||||
startClock();
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
||||
addEvents();
|
||||
}
|
||||
|
||||
init();
|
||||
init();
|
||||
|
|
|
@ -2,4 +2,5 @@
|
|||
0.02: Faster algorithm, hours and minutes are now displayable whenever, using the upper button 2021-01-14
|
||||
0.03: Ah yes. Some people prefer the 12 hour system 2021-01-14
|
||||
0.04: Fixed a bug, doesn't run while display's on now 2021-01-18
|
||||
0.05: Fixed a bug, doesn't count the time it was asleep when calculating the update time 2021-01-19
|
||||
0.05: Fixed a bug, doesn't count the time it was asleep when calculating the update time 2021-01-19
|
||||
0.06: Use Bangle.set UI, change to unminified upload to ensure this works ok on Bangle.js
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Bangle.setLCDTimeout(30);
|
||||
// Name as .min.js so we don't try and pretokenise (which stops Bangle.js running this somehow)
|
||||
|
||||
const is12Hour = (require("Storage").readJSON("setting.json",1)||{})["12hour"];
|
||||
|
||||
|
@ -435,9 +435,11 @@ function showMinAgain(){
|
|||
}
|
||||
|
||||
function setButtons(){
|
||||
setWatch(showMinAgain, BTN1, {repeat:true,edge:"falling"});
|
||||
setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"});
|
||||
setWatch(regen, BTN3, {repeat:true,edge:"falling"});
|
||||
// Show launcher when button pressed
|
||||
Bangle.setUI("clockupdown", btn=>{
|
||||
if (btn<0) showMinAgain();
|
||||
if (btn>0) regen();
|
||||
});
|
||||
}
|
||||
|
||||
let wentToSleepAt;
|
|
@ -1 +1,2 @@
|
|||
1.00: First published version.
|
||||
1.01: Use Bangle.setUI for Launcher/buttons
|
||||
|
|
|
@ -200,16 +200,9 @@ if (Bangle.isLCDOn()) {
|
|||
drawAll(); // draw immediately
|
||||
}
|
||||
|
||||
// show launcher when middle button pressed
|
||||
setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" });
|
||||
|
||||
// rotate through info when the buttons are pressed
|
||||
setWatch(() => {
|
||||
nextInfo();
|
||||
// Show launcher when button pressed
|
||||
Bangle.setUI("clockupdown", btn=>{
|
||||
if (btn<0) prevInfo();
|
||||
if (btn>0) nextInfo();
|
||||
drawAll();
|
||||
}, BTN3, { repeat: true });
|
||||
|
||||
setWatch(() => {
|
||||
prevInfo();
|
||||
drawAll();
|
||||
}, BTN1, { repeat: true });
|
||||
});
|
||||
|
|
|
@ -2,4 +2,6 @@
|
|||
0.02: Added support for locale and 12H clock
|
||||
0.03: Added HR indication to clock
|
||||
0.04: Update font size and alignment
|
||||
0.05: Changes which circle show minutes and seconds
|
||||
0.05: Changes which circle show minutes and seconds
|
||||
0.06: Avoid function wrapper, use setUI for launcher
|
||||
Clock face smaller so no longer breaks widgets
|
||||
|
|
|
@ -1,229 +1,226 @@
|
|||
{
|
||||
var minutes;
|
||||
var seconds;
|
||||
var hours;
|
||||
var date;
|
||||
var first = true;
|
||||
var locale = require('locale');
|
||||
var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false;
|
||||
var minutes;
|
||||
var seconds;
|
||||
var hours;
|
||||
var date;
|
||||
var first = true;
|
||||
var locale = require('locale');
|
||||
var _12hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"] || false;
|
||||
|
||||
//HR variables
|
||||
var id = 0;
|
||||
var grow = true;
|
||||
var size=10;
|
||||
//HR variables
|
||||
var id = 0;
|
||||
var grow = true;
|
||||
var size=10;
|
||||
|
||||
//Screen dimensions
|
||||
const screen = {
|
||||
width: g.getWidth(),
|
||||
height: g.getWidth(),
|
||||
middle: g.getWidth() / 2,
|
||||
center: g.getHeight() / 2,
|
||||
};
|
||||
//Screen dimensions
|
||||
const screen = {
|
||||
width: g.getWidth(),
|
||||
height: g.getWidth(),
|
||||
middle: g.getWidth() / 2,
|
||||
center: g.getHeight() / 2,
|
||||
};
|
||||
|
||||
// Ssettings
|
||||
const settings = {
|
||||
time: {
|
||||
color: '#D6ED17',
|
||||
font: 'Vector',
|
||||
size: 60,
|
||||
middle: screen.middle,
|
||||
center: screen.center,
|
||||
},
|
||||
date: {
|
||||
color: '#D6ED17',
|
||||
font: 'Vector',
|
||||
size: 15,
|
||||
middle: screen.height-17, // at bottom of screen
|
||||
center: screen.center,
|
||||
},
|
||||
circle: {
|
||||
colormin: '#ffffff',
|
||||
colorsec: '#ffffff',
|
||||
width: 10,
|
||||
middle: screen.middle,
|
||||
center: screen.center,
|
||||
height: screen.height
|
||||
},
|
||||
hr: {
|
||||
color: '#333333',
|
||||
size: 10,
|
||||
x: screen.center,
|
||||
y: screen.middle + 45
|
||||
// Settings
|
||||
const settings = {
|
||||
time: {
|
||||
color: '#D6ED17',
|
||||
font: 'Vector',
|
||||
size: 60,
|
||||
middle: screen.middle,
|
||||
center: screen.center,
|
||||
},
|
||||
date: {
|
||||
color: '#D6ED17',
|
||||
font: 'Vector',
|
||||
size: 15,
|
||||
middle: screen.height-17, // at bottom of screen
|
||||
center: screen.center,
|
||||
},
|
||||
circle: {
|
||||
colormin: '#ffffff',
|
||||
colorsec: '#ffffff',
|
||||
width: 10,
|
||||
middle: screen.middle,
|
||||
center: screen.center,
|
||||
height: screen.height-24
|
||||
},
|
||||
hr: {
|
||||
color: '#333333',
|
||||
size: 10,
|
||||
x: screen.center,
|
||||
y: screen.middle + 45
|
||||
}
|
||||
};
|
||||
|
||||
const dateStr = function (date) {
|
||||
return locale.date(new Date(), 1);
|
||||
};
|
||||
|
||||
const getArcXY = function (centerX, centerY, radius, angle) {
|
||||
var s, r = [];
|
||||
s = 2 * Math.PI * angle / 360;
|
||||
r.push(centerX + Math.round(Math.cos(s) * radius));
|
||||
r.push(centerY + Math.round(Math.sin(s) * radius));
|
||||
|
||||
return r;
|
||||
};
|
||||
|
||||
const drawMinArc = function (sections, color) {
|
||||
g.setColor(color);
|
||||
var rad = (settings.circle.height / 2) - 40;
|
||||
var r1 = getArcXY(settings.circle.middle, settings.circle.center, rad, sections * (360 / 60) - 90);
|
||||
//g.setPixel(r[0],r[1]);
|
||||
var r2 = getArcXY(settings.circle.middle, settings.circle.center, rad - settings.circle.width, sections * (360 / 60) - 90);
|
||||
//g.setPixel(r[0],r[1]);
|
||||
g.drawLine(r1[0], r1[1], r2[0], r2[1]);
|
||||
g.setColor('#333333');
|
||||
g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width - 4);
|
||||
};
|
||||
|
||||
const drawSecArc = function (sections, color) {
|
||||
g.setColor(color);
|
||||
var rad = (settings.circle.height / 2) - 20;
|
||||
var r1 = getArcXY(settings.circle.middle, settings.circle.center, rad, sections * (360 / 60) - 90);
|
||||
//g.setPixel(r[0],r[1]);
|
||||
var r2 = getArcXY(settings.circle.middle, settings.circle.center, rad - settings.circle.width, sections * (360 / 60) - 90);
|
||||
//g.setPixel(r[0],r[1]);
|
||||
g.drawLine(r1[0], r1[1], r2[0], r2[1]);
|
||||
g.setColor('#333333');
|
||||
g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width - 4);
|
||||
};
|
||||
|
||||
const drawClock = function () {
|
||||
g.reset();
|
||||
currentTime = new Date();
|
||||
|
||||
//Set to initial time when started
|
||||
if (first == true) {
|
||||
minutes = currentTime.getMinutes();
|
||||
seconds = currentTime.getSeconds();
|
||||
for (count = 0; count <= minutes; count++) {
|
||||
drawMinArc(count, settings.circle.colormin);
|
||||
}
|
||||
};
|
||||
|
||||
const dateStr = function (date) {
|
||||
return locale.date(new Date(), 1);
|
||||
};
|
||||
for (count = 0; count <= seconds; count++) {
|
||||
drawSecArc(count, settings.circle.colorsec);
|
||||
}
|
||||
first = false;
|
||||
}
|
||||
|
||||
const getArcXY = function (centerX, centerY, radius, angle) {
|
||||
var s, r = [];
|
||||
s = 2 * Math.PI * angle / 360;
|
||||
r.push(centerX + Math.round(Math.cos(s) * radius));
|
||||
r.push(centerY + Math.round(Math.sin(s) * radius));
|
||||
// Reset
|
||||
if (seconds == 59) {
|
||||
g.setColor('#000000');
|
||||
g.fillCircle(settings.circle.middle, settings.circle.center, (settings.circle.height / 2));
|
||||
for (count = 0; count <= minutes; count++) {
|
||||
drawMinArc(count, settings.circle.colormin);
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
};
|
||||
//Get date as a string
|
||||
date = dateStr(currentTime);
|
||||
|
||||
const drawMinArc = function (sections, color) {
|
||||
// Update minutes when needed
|
||||
if (minutes != currentTime.getMinutes()) {
|
||||
minutes = currentTime.getMinutes();
|
||||
drawMinArc(minutes, settings.circle.colormin);
|
||||
}
|
||||
|
||||
//Update seconds when needed
|
||||
if (seconds != currentTime.getSeconds()) {
|
||||
seconds = currentTime.getSeconds();
|
||||
drawSecArc(seconds, settings.circle.colorsec);
|
||||
}
|
||||
|
||||
//Write the time as configured in the settings
|
||||
hours = currentTime.getHours();
|
||||
if (_12hour && hours > 13) {
|
||||
hours = hours - 12;
|
||||
}
|
||||
|
||||
var meridian;
|
||||
|
||||
if (typeof locale.meridian === "function") {
|
||||
meridian = locale.meridian(new Date());
|
||||
} else {
|
||||
meridian = "";
|
||||
}
|
||||
|
||||
var timestr;
|
||||
|
||||
if (meridian.length > 0 && _12hour) {
|
||||
timestr = hours + " " + meridian;
|
||||
} else {
|
||||
timestr = hours;
|
||||
}
|
||||
g.setFontAlign(0, 0, 0);
|
||||
g.setColor(settings.time.color);
|
||||
g.setFont(settings.time.font, settings.time.size);
|
||||
g.drawString(timestr, settings.time.center, settings.time.middle);
|
||||
|
||||
//Write the date as configured in the settings
|
||||
g.setColor(settings.date.color);
|
||||
g.setFont(settings.date.font, settings.date.size);
|
||||
g.drawString(date, settings.date.center, settings.date.middle);
|
||||
};
|
||||
|
||||
//setInterval for HR visualisation
|
||||
const newBeats = function (hr) {
|
||||
if (id != 0) {
|
||||
changeInterval(id, 6e3 / hr.bpm);
|
||||
} else {
|
||||
id = setInterval(drawHR, 6e3 / hr.bpm);
|
||||
}
|
||||
};
|
||||
|
||||
//visualize HR with circles pulsating
|
||||
const drawHR = function () {
|
||||
if (grow && size < settings.hr.size) {
|
||||
size++;
|
||||
}
|
||||
|
||||
if (!grow && size > 3) {
|
||||
size--;
|
||||
}
|
||||
|
||||
if (size == settings.hr.size || size == 3) {
|
||||
grow = !grow;
|
||||
}
|
||||
|
||||
if (grow) {
|
||||
color = settings.hr.color;
|
||||
g.setColor(color);
|
||||
rad = (settings.circle.height / 2) - 40;
|
||||
r1 = getArcXY(settings.circle.middle, settings.circle.center, rad, sections * (360 / 60) - 90);
|
||||
//g.setPixel(r[0],r[1]);
|
||||
r2 = getArcXY(settings.circle.middle, settings.circle.center, rad - settings.circle.width, sections * (360 / 60) - 90);
|
||||
//g.setPixel(r[0],r[1]);
|
||||
g.drawLine(r1[0], r1[1], r2[0], r2[1]);
|
||||
g.setColor('#333333');
|
||||
g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width - 4);
|
||||
};
|
||||
|
||||
const drawSecArc = function (sections, color) {
|
||||
g.fillCircle(settings.hr.x, settings.hr.y, size);
|
||||
} else {
|
||||
color = "#000000";
|
||||
g.setColor(color);
|
||||
rad = (settings.circle.height / 2) - 20;
|
||||
r1 = getArcXY(settings.circle.middle, settings.circle.center, rad, sections * (360 / 60) - 90);
|
||||
//g.setPixel(r[0],r[1]);
|
||||
r2 = getArcXY(settings.circle.middle, settings.circle.center, rad - settings.circle.width, sections * (360 / 60) - 90);
|
||||
//g.setPixel(r[0],r[1]);
|
||||
g.drawLine(r1[0], r1[1], r2[0], r2[1]);
|
||||
g.setColor('#333333');
|
||||
g.drawCircle(settings.circle.middle, settings.circle.center, rad - settings.circle.width - 4);
|
||||
};
|
||||
g.drawCircle(settings.hr.x, settings.hr.y, size);
|
||||
}
|
||||
};
|
||||
|
||||
const drawClock = function () {
|
||||
// clean app screen
|
||||
g.clear();
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
||||
currentTime = new Date();
|
||||
//manage when things should be enabled and not
|
||||
Bangle.on('lcdPower', function (on) {
|
||||
if (on) {
|
||||
Bangle.setHRMPower(1);
|
||||
} else {
|
||||
Bangle.setHRMPower(0);
|
||||
}
|
||||
});
|
||||
|
||||
//Set to initial time when started
|
||||
if (first == true) {
|
||||
minutes = currentTime.getMinutes();
|
||||
seconds = currentTime.getSeconds();
|
||||
for (count = 0; count <= minutes; count++) {
|
||||
drawMinArc(count, settings.circle.colormin);
|
||||
}
|
||||
// refesh every second
|
||||
setInterval(drawClock, 1E3);
|
||||
|
||||
for (count = 0; count <= seconds; count++) {
|
||||
drawSecArc(count, settings.circle.colorsec);
|
||||
}
|
||||
first = false;
|
||||
}
|
||||
//start HR monitor and update frequency of update
|
||||
Bangle.setHRMPower(1);
|
||||
Bangle.on('HRM', function (d) {
|
||||
newBeats(d);
|
||||
});
|
||||
|
||||
// Reset
|
||||
if (seconds == 59) {
|
||||
g.setColor('#000000');
|
||||
g.fillCircle(settings.circle.middle, settings.circle.center, (settings.circle.height / 2));
|
||||
for (count = 0; count <= minutes; count++) {
|
||||
drawMinArc(count, settings.circle.colormin);
|
||||
}
|
||||
}
|
||||
// draw now
|
||||
drawClock();
|
||||
|
||||
//Get date as a string
|
||||
date = dateStr(currentTime);
|
||||
|
||||
// Update minutes when needed
|
||||
if (minutes != currentTime.getMinutes()) {
|
||||
minutes = currentTime.getMinutes();
|
||||
drawMinArc(minutes, settings.circle.colormin);
|
||||
}
|
||||
|
||||
//Update seconds when needed
|
||||
if (seconds != currentTime.getSeconds()) {
|
||||
seconds = currentTime.getSeconds();
|
||||
drawSecArc(seconds, settings.circle.colorsec);
|
||||
}
|
||||
|
||||
//Write the time as configured in the settings
|
||||
hours = currentTime.getHours();
|
||||
if (_12hour && hours > 13) {
|
||||
hours = hours - 12;
|
||||
}
|
||||
|
||||
var meridian;
|
||||
|
||||
if (typeof locale.meridian === "function") {
|
||||
meridian = locale.meridian(new Date());
|
||||
} else {
|
||||
meridian = "";
|
||||
}
|
||||
|
||||
var timestr;
|
||||
|
||||
if (meridian.length > 0 && _12hour) {
|
||||
timestr = hours + " " + meridian;
|
||||
} else {
|
||||
timestr = hours;
|
||||
}
|
||||
g.setFontAlign(0, 0, 0);
|
||||
g.setColor(settings.time.color);
|
||||
g.setFont(settings.time.font, settings.time.size);
|
||||
g.drawString(timestr, settings.time.center, settings.time.middle);
|
||||
|
||||
//Write the date as configured in the settings
|
||||
g.setColor(settings.date.color);
|
||||
g.setFont(settings.date.font, settings.date.size);
|
||||
g.drawString(date, settings.date.center, settings.date.middle);
|
||||
};
|
||||
|
||||
//setInterval for HR visualisation
|
||||
const newBeats = function (hr) {
|
||||
if (id != 0) {
|
||||
changeInterval(id, 6e3 / hr.bpm);
|
||||
} else {
|
||||
id = setInterval(drawHR, 6e3 / hr.bpm);
|
||||
}
|
||||
};
|
||||
|
||||
//visualize HR with circles pulsating
|
||||
const drawHR = function () {
|
||||
if (grow && size < settings.hr.size) {
|
||||
size++;
|
||||
}
|
||||
|
||||
if (!grow && size > 3) {
|
||||
size--;
|
||||
}
|
||||
|
||||
if (size == settings.hr.size || size == 3) {
|
||||
grow = !grow;
|
||||
}
|
||||
|
||||
if (grow) {
|
||||
color = settings.hr.color;
|
||||
g.setColor(color);
|
||||
g.fillCircle(settings.hr.x, settings.hr.y, size);
|
||||
} else {
|
||||
color = "#000000";
|
||||
g.setColor(color);
|
||||
g.drawCircle(settings.hr.x, settings.hr.y, size);
|
||||
}
|
||||
};
|
||||
|
||||
// clean app screen
|
||||
g.clear();
|
||||
Bangle.loadWidgets();
|
||||
Bangle.drawWidgets();
|
||||
|
||||
//manage when things should be enabled and not
|
||||
Bangle.on('lcdPower', function (on) {
|
||||
if (on) {
|
||||
Bangle.setHRMPower(1);
|
||||
} else {
|
||||
Bangle.setHRMPower(0);
|
||||
}
|
||||
});
|
||||
|
||||
// refesh every second
|
||||
setInterval(drawClock, 1E3);
|
||||
|
||||
//start HR monitor and update frequency of update
|
||||
Bangle.setHRMPower(1);
|
||||
Bangle.on('HRM', function (d) {
|
||||
newBeats(d);
|
||||
});
|
||||
|
||||
// draw now
|
||||
drawClock();
|
||||
|
||||
// Show launcher when middle button pressed
|
||||
setWatch(Bangle.showLauncher, BTN2, { repeat: false, edge: "falling" });
|
||||
|
||||
}
|
||||
// Show launcher when button pressed
|
||||
Bangle.setUI("clock");
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
0.01: New App!
|
||||
0.02: Fix text alignment, move to setUI
|
||||
|
|
|
@ -17,126 +17,119 @@ function drawTime(){
|
|||
var utc = getUTCTime(d);
|
||||
var beats = Math.floor((((utc[0] + 1) % 24) + utc[1] / 60 + utc[2] / 3600) * 1000 / 24);
|
||||
|
||||
function drawStation(){
|
||||
g.setFont("Vector",10);
|
||||
g.setColor("#ffffff");
|
||||
switch (utc[0]) {
|
||||
case 0:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("00h00-00h30 Radio Havane Cuba\n15730\n00h00-01h00 Radio for Peace Int.\n9395\n00h30-01h00 Radio Havane Cuba\n5040",xyCenter,30);
|
||||
break;
|
||||
case 1:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("01h00-02h00 Radio Roumanie Int.\n6040 7375\n01h00-01h30 R. Argentine vers le monde\n9395",xyCenter,30);
|
||||
break;
|
||||
case 2:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("02h30-03h00 R. Argentine vers le monde\n5800",xyCenter,30);
|
||||
break;
|
||||
case 4:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("04h00-05h00 R.F.I.\n9790 11700\n04h00-05h00 Voix de la Corée\n13650 15105\n04h30-05h00 A.W.R.\n6155",xyCenter,30);
|
||||
break;
|
||||
case 5:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("05h00-05h30 Radio Roumanie Int.\n6015 15340 17520\n05h00-06h00 Radio Ndarason Int.\n5960\n05h30-06h00 Radio Japon\n11730 13840\n",xyCenter,30);
|
||||
break;
|
||||
case 6:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("06h00-06h30 B.B.C.\n5875 9440 11620\n06h00-06h30 Voix de l'Amérique\n4960 6180 9885 13830\n06h30-06h45 Vatican News\n11935",xyCenter,30);
|
||||
break;
|
||||
case 7:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("07h00-07h30 B.B.C.\n9440 13810?\n07h00-08h00 Radio Chine Int.\n17865\n07h00-08h00 R.F.I.\n11700 13695 15300 17850 21580?",xyCenter,30);
|
||||
break;
|
||||
case 8:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("08h00-08h30 A.W.R.\n15145\n08h00-09h00 W.B.C.Q.\n9330\n08h30-09h00 Voix de l'Amérique\n9410 13830 17530",xyCenter,30);
|
||||
break;
|
||||
case 9:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("09h00-10h00 R. Argentine vers le monde\n5950\n09h00-10h00 R.F.I.\n13695 15300 15320",xyCenter,30);
|
||||
break;
|
||||
case 10:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("10h00-10h30 Voix du Nigéria\n11770\n10h00-11h00 Radio MiAmigo\n6085",xyCenter,30);
|
||||
break;
|
||||
case 11:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("11h00-12h00 Voix de la Corée\n11710 11735 13650 15180\n11h30-12h00 Radio Slovaquie Int.\n6005",xyCenter,30);
|
||||
break;
|
||||
case 12:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("12h00-12h30 Voix du Vietnam\n7285\n12h00-13h00 Radio MiAmigo\n6085",xyCenter,30);
|
||||
break;
|
||||
case 13:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("13h00-14h00 Radio for Peace Int.\n15770\n13h30-14h00 Radio Slovaquie Int.\n6005",xyCenter,30);
|
||||
break;
|
||||
case 14:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("14h00-16h00 Radio saoudienne Int.\n17660\n14h00-16h00 Radio Chine Int.\n11920 13670\n14h55-15h25 T.W.R. Swaziland\n9585",xyCenter,30);
|
||||
break;
|
||||
case 15:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("15h00-15h30 Radio Tirana\n3985\n15h00-15h30 Radio Nationale Lao\n6130 567",xyCenter,30);
|
||||
break;
|
||||
case 16:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("16h00-16h15 Vatican News\n11950\n16h30-17h15 Voix de l'Afrique\n9505",xyCenter,30);
|
||||
break;
|
||||
case 17:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("17h00-18h00 R.F.I.\n13740 13770 17850\n17h30-18h25 Voix de la Turquie\n7360",xyCenter,30);
|
||||
break;
|
||||
case 18:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("18h00-18h11 Radio Algérie Int.\n13820\n18h30-19h00 Radio Slovaquie Int.\n3985",xyCenter,30);
|
||||
break;
|
||||
case 19:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("19h00-19h30 Radio Taiwan Int.\n6005\n19h23-20h23 Voix de la République\nIslamique d'Iran\n7235",xyCenter,30);
|
||||
break;
|
||||
case 20:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("20h00-21h15 Radio Le Caire\n9810\n20h00-21h00 Voix de l'Indonésie\n3325 4750\n20h30-20h50 Radio Belarus\n3985",xyCenter,30);
|
||||
break;
|
||||
case 21:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("21h00-21h30 Voix de l'Amérique\n5970 9490 9740 11900\n21h00-22h00 Radio for Peace Int.\n6070",xyCenter,30);
|
||||
break;
|
||||
case 22:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("22h00-22h15 T.W.R. Bénin\n1566\n22h30-23h00 Radio Extérieure d'Espagne\n9690 11670 11940",xyCenter,30);
|
||||
break;
|
||||
case 23:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("23h23-00h23 Voix de la République\nIslamique d'Iran\n7230\n23h30-00h00 R. Argentine vers le monde\n7780",xyCenter,30);
|
||||
break;
|
||||
default:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("17h00-18h00 R.F.I.\n13740 15300 17850\n17h00-18h00 R.F.I.\n7205 9790",xyCenter,30);
|
||||
break;
|
||||
}
|
||||
g.reset().setFont("Vector",10).setFontAlign(0,0);
|
||||
g.setColor("#ffffff");
|
||||
switch (utc[0]) {
|
||||
case 0:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("00h00-00h30 Radio Havane Cuba\n15730\n00h00-01h00 Radio for Peace Int.\n9395\n00h30-01h00 Radio Havane Cuba\n5040",xyCenter,30);
|
||||
break;
|
||||
case 1:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("01h00-02h00 Radio Roumanie Int.\n6040 7375\n01h00-01h30 R. Argentine vers le monde\n9395",xyCenter,30);
|
||||
break;
|
||||
case 2:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("02h30-03h00 R. Argentine vers le monde\n5800",xyCenter,30);
|
||||
break;
|
||||
case 4:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("04h00-05h00 R.F.I.\n9790 11700\n04h00-05h00 Voix de la Corée\n13650 15105\n04h30-05h00 A.W.R.\n6155",xyCenter,30);
|
||||
break;
|
||||
case 5:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("05h00-05h30 Radio Roumanie Int.\n6015 15340 17520\n05h00-06h00 Radio Ndarason Int.\n5960\n05h30-06h00 Radio Japon\n11730 13840\n",xyCenter,30);
|
||||
break;
|
||||
case 6:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("06h00-06h30 B.B.C.\n5875 9440 11620\n06h00-06h30 Voix de l'Amérique\n4960 6180 9885 13830\n06h30-06h45 Vatican News\n11935",xyCenter,30);
|
||||
break;
|
||||
case 7:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("07h00-07h30 B.B.C.\n9440 13810?\n07h00-08h00 Radio Chine Int.\n17865\n07h00-08h00 R.F.I.\n11700 13695 15300 17850 21580?",xyCenter,30);
|
||||
break;
|
||||
case 8:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("08h00-08h30 A.W.R.\n15145\n08h00-09h00 W.B.C.Q.\n9330\n08h30-09h00 Voix de l'Amérique\n9410 13830 17530",xyCenter,30);
|
||||
break;
|
||||
case 9:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("09h00-10h00 R. Argentine vers le monde\n5950\n09h00-10h00 R.F.I.\n13695 15300 15320",xyCenter,30);
|
||||
break;
|
||||
case 10:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("10h00-10h30 Voix du Nigéria\n11770\n10h00-11h00 Radio MiAmigo\n6085",xyCenter,30);
|
||||
break;
|
||||
case 11:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("11h00-12h00 Voix de la Corée\n11710 11735 13650 15180\n11h30-12h00 Radio Slovaquie Int.\n6005",xyCenter,30);
|
||||
break;
|
||||
case 12:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("12h00-12h30 Voix du Vietnam\n7285\n12h00-13h00 Radio MiAmigo\n6085",xyCenter,30);
|
||||
break;
|
||||
case 13:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("13h00-14h00 Radio for Peace Int.\n15770\n13h30-14h00 Radio Slovaquie Int.\n6005",xyCenter,30);
|
||||
break;
|
||||
case 14:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("14h00-16h00 Radio saoudienne Int.\n17660\n14h00-16h00 Radio Chine Int.\n11920 13670\n14h55-15h25 T.W.R. Swaziland\n9585",xyCenter,30);
|
||||
break;
|
||||
case 15:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("15h00-15h30 Radio Tirana\n3985\n15h00-15h30 Radio Nationale Lao\n6130 567",xyCenter,30);
|
||||
break;
|
||||
case 16:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("16h00-16h15 Vatican News\n11950\n16h30-17h15 Voix de l'Afrique\n9505",xyCenter,30);
|
||||
break;
|
||||
case 17:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("17h00-18h00 R.F.I.\n13740 13770 17850\n17h30-18h25 Voix de la Turquie\n7360",xyCenter,30);
|
||||
break;
|
||||
case 18:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("18h00-18h11 Radio Algérie Int.\n13820\n18h30-19h00 Radio Slovaquie Int.\n3985",xyCenter,30);
|
||||
break;
|
||||
case 19:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("19h00-19h30 Radio Taiwan Int.\n6005\n19h23-20h23 Voix de la République\nIslamique d'Iran\n7235",xyCenter,30);
|
||||
break;
|
||||
case 20:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("20h00-21h15 Radio Le Caire\n9810\n20h00-21h00 Voix de l'Indonésie\n3325 4750\n20h30-20h50 Radio Belarus\n3985",xyCenter,30);
|
||||
break;
|
||||
case 21:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("21h00-21h30 Voix de l'Amérique\n5970 9490 9740 11900\n21h00-22h00 Radio for Peace Int.\n6070",xyCenter,30);
|
||||
break;
|
||||
case 22:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("22h00-22h15 T.W.R. Bénin\n1566\n22h30-23h00 Radio Extérieure d'Espagne\n9690 11670 11940",xyCenter,30);
|
||||
break;
|
||||
case 23:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("23h23-00h23 Voix de la République\nIslamique d'Iran\n7230\n23h30-00h00 R. Argentine vers le monde\n7780",xyCenter,30);
|
||||
break;
|
||||
default:
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("17h00-18h00 R.F.I.\n13740 15300 17850\n17h00-18h00 R.F.I.\n7205 9790",xyCenter,30);
|
||||
break;
|
||||
}
|
||||
drawStation();
|
||||
|
||||
// Local time
|
||||
g.setFont("6x8",1);
|
||||
g.setColor("#cccccc");
|
||||
g.setFont("6x8",1).setColor("#cccccc");
|
||||
g.drawString("Loc",10,85);
|
||||
|
||||
g.setFont("7x11Numeric7Seg",4);
|
||||
g.setColor("#ffffff");
|
||||
g.setFont("7x11Numeric7Seg",4).setColor("#ffffff");
|
||||
g.drawString(`${hours}:${minutes}:${seconds}`, xyCenter, 115, true);
|
||||
|
||||
// UTC time
|
||||
g.setFont("6x8",1);
|
||||
g.setColor("#cccccc");
|
||||
g.setFont("6x8",1).setColor("#cccccc");
|
||||
g.drawString("UTC",10,155);
|
||||
|
||||
g.setFont("7x11Numeric7Seg",4);
|
||||
g.setColor("#ff0000");
|
||||
g.setFont("7x11Numeric7Seg",4).setColor("#ff0000");
|
||||
g.drawString(utc[0]+`:${minutes}:${seconds}`, xyCenter, 185,true);
|
||||
|
||||
// footer date
|
||||
|
@ -147,6 +140,7 @@ function drawTime(){
|
|||
}
|
||||
|
||||
function setGpsTime(){
|
||||
print("set GPS time");
|
||||
Bangle.setGPSPower(1);
|
||||
Bangle.on('GPS',function(fix) {
|
||||
if (fix.fix) {
|
||||
|
@ -157,7 +151,7 @@ function setGpsTime(){
|
|||
start();
|
||||
} else {
|
||||
stop();
|
||||
g.setFont("Vector",10);
|
||||
g.reset().setFont("Vector",10).setFontAlign(0,0);
|
||||
g.setColor("#cccccc");
|
||||
g.clearRect(0,25,240,80);
|
||||
g.drawString("Mise à l'heure\npar satellites\nen cours...",xyCenter,40);
|
||||
|
@ -166,14 +160,13 @@ function setGpsTime(){
|
|||
}
|
||||
|
||||
function setButtons(){
|
||||
// BTN 1
|
||||
setWatch(() => {
|
||||
// Show launcher when button pressed
|
||||
Bangle.setUI("clockupdown", btn=>{
|
||||
if (btn!=-1) return;
|
||||
// if up pressed, turn GPS on and wait for new time
|
||||
setGpsTime();
|
||||
Bangle.beep(500, 4000);
|
||||
}, BTN1, {edge:"rising", repeat:true});
|
||||
|
||||
// BTN 2
|
||||
setWatch(Bangle.showLauncher, BTN2, {repeat:false,edge:"falling"});
|
||||
});
|
||||
}
|
||||
|
||||
var intervalRef = null;
|
||||
|
|
Loading…
Reference in New Issue