1
0
Fork 0

Merge branch 'master' of github.com:espruino/BangleApps

master
Gordon Williams 2022-02-23 12:10:24 +00:00
commit 2f571f9600
7 changed files with 115 additions and 53 deletions

View File

@ -5,7 +5,7 @@ by Peter Kuppelwieser
*/
let settings = Object.assign({ swupApp: "",swdownApp: "", swleftApp: "", swrightApp: ""}, require("Storage").readJSON("7x7dotsclock.json", true) || {});
let settings = Object.assign({ swupApp: "",swdownApp: "", swleftApp: "", swrightApp: "", ColorMinutes: ""}, require("Storage").readJSON("7x7dotsclock.json", true) || {});
// position on screen
var Xs = 0, Ys = 30,Xe = 175, Ye=175;
@ -13,9 +13,33 @@ var Xs = 0, Ys = 30,Xe = 175, Ye=175;
var SegH = (Ye-Ys)/2,SegW = (Xe-Xs)/2;
var Dx = SegW/14, Dy = SegH/16;
const hColor = [1,1,1];
const mColor = [0.3,0.3,1];
const bColor = [0.2,0.2,0.2];
switch(settings.ColorMinutes) {
case "blue":
var mColor = [0.3,0.3,1];
var sColor = [0,0,1];
var sbColor = [1,1,1];
break;
case "pink":
var mColor = [1,0.3,1];
var sColor = [1,0,1];
var sbColor = [1,1,1];
break;
case "green":
var mColor = [0.3,1,0.3];
var sColor = [0,1,0];
var sbColor = [1,1,1];
break;
case "yellow":
var mColor = [1,1,0.3];
var sColor = [1,1,0];
var sbColor = [0,0,0];
break;
default:
var sColor = [0,0,1];
var mColor = [0.3,0.3,1];
var sbColor = [1,1,1];
}
const bColor = [0.3,0.3,0.3];
const Font = [
[
@ -114,16 +138,22 @@ const Font = [
var dho = -1, eho = -1, dmo = -1, emo = -1;
function drawHSeg(x1,y1,x2,y2,Num,dColor,Size) {
g.setColor(0,0,0);
function drawHSeg(x1,y1,x2,y2,Num,Color,Size) {
g.setColor(g.theme.bg);
g.fillRect(x1, y1, x2, y2);
for (let i = 1; i < 8; i++) {
for (let j = 1; j < 8; j++) {
if (Font[Num][j-1][i-1] == 1) {
g.setColor(dColor[0],dColor[1],dColor[2]);
if (Color == "fg") {
g.setColor(g.theme.fg);
} else {
g.setColor(mColor[0],mColor[1],mColor[2]);
}
g.fillCircle(x1+Dx+(i-1)*(x2-x1)/7,y1+Dy+(j-1)*(y2-y1)/7,Size);
} else {
g.setColor(bColor[0],bColor[1],bColor[2]);
g.setColor(bColor[0],bColor[1],bColor[2]);
g.fillCircle(x1+Dx+(i-1)*(x2-x1)/7,y1+Dy+(j-1)*(y2-y1)/7,1);
}
}
@ -131,11 +161,16 @@ function drawHSeg(x1,y1,x2,y2,Num,dColor,Size) {
}
function drawSSeg(x1,y1,x2,y2,Num,dColor,Size) {
function drawSSeg(x1,y1,x2,y2,Num,Color,Size) {
for (let i = 1; i < 8; i++) {
for (let j = 1; j < 8; j++) {
if (Font[Num][j-1][i-1] == 1) {
g.setColor(dColor[0],dColor[1],dColor[2]);
if (Color == "fg") {
g.setColor(sColor[0],sColor[1],sColor[2]);
} else {
g.setColor(g.theme.fg);
//g.setColor(0.7,0.7,0.7);
}
g.fillCircle(x1+(i-1)*(x2-x1)/7,y1+(j-1)*(y2-y1)/7,Size);
}
}
@ -143,25 +178,27 @@ function drawSSeg(x1,y1,x2,y2,Num,dColor,Size) {
}
function ShowSecons() {
g.setColor(1,1,1);
g.fillRect((Xe-Xs) / 2 - 14 + Xs -3,
(Ye-Ys) / 2 - 7 + Ys -3,
(Xe-Xs) / 2 + 14 + Xs +1,
(Ye-Ys) / 2 + 7 + Ys +1);
function ShowSeconds() {
g.setColor(sbColor[0],sbColor[1],sbColor[2]);
g.fillRect((Xe-Xs) / 2 - 14 + Xs -4,
(Ye-Ys) / 2 - 7 + Ys -4,
(Xe-Xs) / 2 + 14 + Xs +4,
(Ye-Ys) / 2 + 7 + Ys +4);
drawSSeg( (Xe-Xs) / 2 - 14 + Xs -1,
(Ye-Ys) / 2 - 7 + Ys ,
(Ye-Ys) / 2 - 7 + Ys +1,
(Xe-Xs) / 2 + Xs -1,
(Ye-Ys) / 2 + 7 + Ys,
ds,mColor,1);
(Ye-Ys) / 2 + 7 + Ys +1,
ds,"fg",1);
drawSSeg( (Xe-Xs) / 2 + Xs +1,
(Ye-Ys) / 2 - 7 + Ys,
(Xe-Xs) / 2 + 14 + Xs +1,
(Ye-Ys) / 2 + 7 + Ys,
es,mColor,1);
drawSSeg( (Xe-Xs) / 2 + Xs +2,
(Ye-Ys) / 2 - 7 + Ys +1,
(Xe-Xs) / 2 + 14 + Xs +2,
(Ye-Ys) / 2 + 7 + Ys +1,
es,"fg",1);
}
@ -185,29 +222,29 @@ function draw() {
g.reset();
if (dh != dho) {
g.setColor(1,1,1);
drawHSeg(Xs, Ys, Xs+SegW, Ys+SegH,dh,hColor,4);
drawHSeg(Xs, Ys, Xs+SegW, Ys+SegH,dh,"fg",4);
dho = dh;
}
if (eh != eho) {
g.setColor(1,1,1);
drawHSeg(Xs+SegW+Dx, Ys, Xs+SegW*2, Ys+SegH,eh,hColor,4);
drawHSeg(Xs+SegW+Dx, Ys, Xs+SegW*2, Ys+SegH,eh,"fg",4);
eho = eh;
}
if (dm != dmo) {
g.setColor(0.3,0.3,1);
drawHSeg(Xs, Ys+SegH+Dy, Xs+SegW, Ys+SegH*2,dm,mColor,4);
drawHSeg(Xs, Ys+SegH+Dy, Xs+SegW, Ys+SegH*2,dm,"",4);
dmo = dm;
}
if (em != emo) {
g.setColor(0.3,0.3,1);
drawHSeg(Xs+SegW+Dx, Ys+SegH+Dy, Xs+SegW*2, Ys+SegH*2,em,mColor,4);
drawHSeg(Xs+SegW+Dx, Ys+SegH+Dy, Xs+SegW*2, Ys+SegH*2,em,"",4);
emo = em;
}
if (!Bangle.isLocked()) ShowSecons();
if (!Bangle.isLocked()) ShowSeconds();
}
@ -278,7 +315,7 @@ function drawWidgeds() {
var x1M = 100;
var y1M = y1B;
var x2M = x1M + 30;
var x2M = x1M + 25;
var y2M = y2B;
if (messages.some(m=>m.new)) {
@ -295,6 +332,7 @@ function drawWidgeds() {
print(strDow[dow] + ' ' + day + '.' + month + ' ' + year);
g.setColor(g.theme.fg);
g.setFontAlign(-1, -1,0);
g.setFont("Vector", 20);
g.drawString(strDow[dow] + ' ' + day, 0, 0, true);

View File

@ -1,21 +1,8 @@
(function(back) {
let settings = Object.assign({ swupApp: "",swdownApp: "", swleftApp: "", swrightApp: ""}, require("Storage").readJSON("7x7dotsclock.json", true) || {});
let settings = Object.assign({ swupApp: "",swdownApp: "", swleftApp: "", swrightApp: "",ColorMinutes: ""}, require("Storage").readJSON("7x7dotsclock.json", true) || {});
function showMainMenu() {
const mainMenu = {
"": {"title": "7x7 Dots Clock Settings"},
"< Back": ()=>load(),
"sw-up": ()=>showSelAppMenu("swupApp"),
"sw-down": ()=>showSelAppMenu("swdownApp"),
"sw-left": ()=>showSelAppMenu("swleftApp"),
"sw-right": ()=>showSelAppMenu("swrightApp")
};
E.showMenu(mainMenu);
}
function setSetting(key,value) {
print("call " + key + " = " + value);
@ -26,6 +13,42 @@ function setSetting(key,value) {
}
// Helper method which uses int-based menu item for set of string values
function stringItems(key, startvalue, values) {
return {
value: (startvalue === undefined ? 0 : values.indexOf(startvalue)),
format: v => values[v],
min: 0,
max: values.length - 1,
wrap: true,
step: 1,
onchange: v => {
setSetting(key,values[v]);
}
};
}
// Helper method which breaks string set settings down to local settings object
function stringInSettings(name, values) {
return stringItems(name,settings[name], values);
}
function showMainMenu() {
const mainMenu = {
"": {"title": "7x7 Dots Clock Settings"},
"< Back": ()=>load(),
"Minutes": stringInSettings("ColorMinutes", ["blue","pink","green","yellow"]),
"swipe-up": ()=>showSelAppMenu("swupApp"),
"swipe-down": ()=>showSelAppMenu("swdownApp"),
"swipe-left": ()=>showSelAppMenu("swleftApp"),
"swipe-right": ()=>showSelAppMenu("swrightApp")
};
E.showMenu(mainMenu);
}
function showSelAppMenu(key) {
var Apps = require("Storage").list(/\.info$/)
.map(app => {var a=storage.readJSON(app, 1);return (

View File

@ -1 +1,2 @@
0.01: Initial version for upload
0.02: better theme support, configurable colors, small improvements

View File

@ -2,16 +2,14 @@
![](dotsfontclock.png)
looks best with dark theme so far
* A Clock with big numbers made of 7x7 dots
* system widgeds ar not (yet) supported
* when screen is locked it shows hours and minutes in full screen mode
* adjustable color for minutes and seconds
![](dotsfontclock-scr1.png)
* when screen is unlocked it shows additional info: bluetooth, battery, new message, date and seconds
* you can configure a app per swipe direction
* when swiping the configured apps are launced
* when screen is unlocked it shows additional info: bluetooth, battery, new message state, date and seconds
* you can configure an app per swipe direction
* when swiping the configured apps are launched
* button press opens launcher

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -1,17 +1,19 @@
{ "id": "7x7dotsclock",
"name": "7x7 Dots Clock",
"shortName":"7x7 Dots Clock",
"version":"0.01",
"version":"0.02",
"description": "A clock with a big 7x7 dots Font",
"icon": "dotsfontclock.png",
"tags": "clock",
"type": "clock",
"supports" : ["BANGLEJS2"],
"supports" : ["BANGLEJS2"],
"allow_emulator": true,
"readme": "README.md",
"storage": [
{"name":"7x7dotsclock.app.js","url":"7x7dotsclock.app.js"},
{"name":"7x7dotsclock.settings.js","url":"7x7dotsclock.settings.js"},
{"name":"7x7dotsclock.img","url":"7x7dotsclock.img.js","evaluate":true}
],
"data": [{"name":"7x7dotsclock.json"}]
"data": [{"name":"7x7dotsclock.json"}],
"screenshots": [{"url":"dotsfontclock.png"},{"url":"dotsfontclock-scr1.png"},{"url":"dotsfontclock-scr2.png"}]
}