mirror of https://github.com/espruino/BangleApps
Added option to only show the time as well as the week number. This also fixes issue #2459
parent
059a2e7af7
commit
a3c5a723bc
|
@ -27,3 +27,4 @@
|
||||||
0.26: Use clkinfo.addInteractive instead of a custom implementation
|
0.26: Use clkinfo.addInteractive instead of a custom implementation
|
||||||
0.27: Clean out some leftovers in the remove function after switching to
|
0.27: Clean out some leftovers in the remove function after switching to
|
||||||
clkinfo.addInteractive that would cause ReferenceError.
|
clkinfo.addInteractive that would cause ReferenceError.
|
||||||
|
0.28: Option to show (1) time only and (2) week of year.
|
|
@ -3,16 +3,14 @@ A very minimalistic clock.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## ToDos and known issues
|
|
||||||
- [ ] The clkinfo is always shown and its, therefore, not possible to only show the time as shown in the screenshot.
|
|
||||||
- [ ] The weeknumber is currently not an option in clkinfo.
|
|
||||||
- [ ] Its not possible to run clkinfo items (e.g. trigger home assistant).
|
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
The BW clock implements features that are exposed by other apps through the `clkinfo` module.
|
The BW clock implements features that are exposed by other apps through the `clkinfo` module.
|
||||||
For example, if you install the HomeAssistant app, this menu item will be shown if you first
|
For example, if you install the HomeAssistant app, this menu item will be shown if you first
|
||||||
touch the bottom of the screen and then swipe left/right to the home assistant menu. To select
|
touch the bottom of the screen and then swipe left/right to the home assistant menu. To select
|
||||||
sub-items simply swipe up/down.
|
sub-items simply swipe up/down. To run an action (e.g. trigger home assistant), simply select the clkinfo (border) and touch on the item again. See also the screenshot below:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
|
||||||
## Settings
|
## Settings
|
||||||
- Screen: Normal (widgets shown), Dynamic (widgets shown if unlocked) or Full (widgets are hidden).
|
- Screen: Normal (widgets shown), Dynamic (widgets shown if unlocked) or Full (widgets are hidden).
|
||||||
|
|
|
@ -100,12 +100,45 @@ let imgLock = function() {
|
||||||
* Clock Info
|
* Clock Info
|
||||||
*/
|
*/
|
||||||
let clockInfoItems = clock_info.load();
|
let clockInfoItems = clock_info.load();
|
||||||
|
|
||||||
|
// Add some custom clock-infos
|
||||||
|
function weekOfYear() {
|
||||||
|
var date = new Date();
|
||||||
|
date.setHours(0, 0, 0, 0);
|
||||||
|
// Thursday in current week decides the year.
|
||||||
|
date.setDate(date.getDate() + 3 - (date.getDay() + 6) % 7);
|
||||||
|
// January 4 is always in week 1.
|
||||||
|
var week1 = new Date(date.getFullYear(), 0, 4);
|
||||||
|
// Adjust to Thursday in week 1 and count number of weeks from date to week1.
|
||||||
|
return 1 + Math.round(((date.getTime() - week1.getTime()) / 86400000
|
||||||
|
- 3 + (week1.getDay() + 6) % 7) / 7);
|
||||||
|
}
|
||||||
|
|
||||||
|
clockInfoItems[0].items.unshift({ name : "weekofyear",
|
||||||
|
get : function() { return { text : "Week " + weekOfYear(),
|
||||||
|
img : null}},
|
||||||
|
show : function() {},
|
||||||
|
hide : function() {},
|
||||||
|
})
|
||||||
|
|
||||||
|
// Empty for large time
|
||||||
|
clockInfoItems[0].items.unshift({ name : "nop",
|
||||||
|
get : function() { return { text : null,
|
||||||
|
img : null}},
|
||||||
|
show : function() {},
|
||||||
|
hide : function() {},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
let clockInfoMenu = clock_info.addInteractive(clockInfoItems, {
|
let clockInfoMenu = clock_info.addInteractive(clockInfoItems, {
|
||||||
x : 0,
|
x : 0,
|
||||||
y: 135,
|
y: 135,
|
||||||
w: W,
|
w: W,
|
||||||
h: H-135,
|
h: H-135,
|
||||||
draw : (itm, info, options) => {
|
draw : (itm, info, options) => {
|
||||||
|
var isLarge = info.text == null;
|
||||||
|
|
||||||
g.setColor(g.theme.fg);
|
g.setColor(g.theme.fg);
|
||||||
g.fillRect(options.x, options.y, options.x+options.w, options.y+options.h);
|
g.fillRect(options.x, options.y, options.x+options.w, options.y+options.h);
|
||||||
|
|
||||||
|
@ -113,11 +146,18 @@ let clockInfoMenu = clock_info.addInteractive(clockInfoItems, {
|
||||||
g.setColor(g.theme.bg);
|
g.setColor(g.theme.bg);
|
||||||
|
|
||||||
if (options.focus){
|
if (options.focus){
|
||||||
g.drawRect(options.x, options.y, options.x+options.w-2, options.y+options.h-1); // show if focused
|
var y = isLarge ? options.y+20 : options.y+2;
|
||||||
g.drawRect(options.x+1, options.y+1, options.x+options.w-3, options.y+options.h-2); // show if focused
|
var h = isLarge ? options.h-20 : options.h-2;
|
||||||
|
g.drawRect(options.x, y, options.x+options.w-2, y+h-1); // show if focused
|
||||||
|
g.drawRect(options.x+1, y+1, options.x+options.w-3, y+h-2); // show if focused
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set text and font
|
// Set text and font
|
||||||
|
if(isLarge){
|
||||||
|
drawTime();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var image = info.img;
|
var image = info.img;
|
||||||
var text = String(info.text);
|
var text = String(info.text);
|
||||||
if(text.split('\n').length > 1){
|
if(text.split('\n').length > 1){
|
||||||
|
@ -137,6 +177,8 @@ let clockInfoMenu = clock_info.addInteractive(clockInfoItems, {
|
||||||
g.drawImage(image, midx-parseInt(imgWidth*1.3/2)-parseInt(strWidth/2), options.y+6, {scale: scale});
|
g.drawImage(image, midx-parseInt(imgWidth*1.3/2)-parseInt(strWidth/2), options.y+6, {scale: scale});
|
||||||
}
|
}
|
||||||
g.drawString(text, midx+parseInt(imgWidth*1.3/2), options.y+20);
|
g.drawString(text, midx+parseInt(imgWidth*1.3/2), options.y+20);
|
||||||
|
|
||||||
|
drawTime();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -187,6 +229,8 @@ let drawDate = function() {
|
||||||
|
|
||||||
|
|
||||||
let drawTime = function() {
|
let drawTime = function() {
|
||||||
|
var isLarge = clockInfoMenu.menuA == 0 && clockInfoMenu.menuB == 0;
|
||||||
|
|
||||||
// Draw background
|
// Draw background
|
||||||
var y1 = getLineY();
|
var y1 = getLineY();
|
||||||
var y = y1;
|
var y = y1;
|
||||||
|
@ -199,13 +243,19 @@ let drawTime = function() {
|
||||||
var timeStr = hours + colon + minutes;
|
var timeStr = hours + colon + minutes;
|
||||||
|
|
||||||
// Set y coordinates correctly
|
// Set y coordinates correctly
|
||||||
y += parseInt((H - y)/2)-10;
|
y += parseInt((H - y)/2) + 5;
|
||||||
|
|
||||||
// Clear region
|
|
||||||
g.setColor(g.theme.fg);
|
|
||||||
g.fillRect(0,y1,W,y+20);
|
|
||||||
|
|
||||||
|
if (isLarge){
|
||||||
|
g.setLargeFont();
|
||||||
|
} else {
|
||||||
|
y -= 15;
|
||||||
g.setMediumFont();
|
g.setMediumFont();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Clear region and draw time
|
||||||
|
g.setColor(g.theme.fg);
|
||||||
|
g.fillRect(0,y1,W,y+20 + (isLarge ? 1 : 0));
|
||||||
|
|
||||||
g.setColor(g.theme.bg);
|
g.setColor(g.theme.bg);
|
||||||
g.setFontAlign(0,0);
|
g.setFontAlign(0,0);
|
||||||
g.drawString(timeStr, W/2, y);
|
g.drawString(timeStr, W/2, y);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"id": "bwclk",
|
"id": "bwclk",
|
||||||
"name": "BW Clock",
|
"name": "BW Clock",
|
||||||
"version": "0.27",
|
"version": "0.28",
|
||||||
"description": "A very minimalistic clock.",
|
"description": "A very minimalistic clock.",
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.8 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.0 KiB |
Loading…
Reference in New Issue