forked from FOSS/BangleApps
Merge branch 'master' of github.com:espruino/BangleApps
commit
2f571f9600
|
@ -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
|
// position on screen
|
||||||
var Xs = 0, Ys = 30,Xe = 175, Ye=175;
|
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 SegH = (Ye-Ys)/2,SegW = (Xe-Xs)/2;
|
||||||
var Dx = SegW/14, Dy = SegH/16;
|
var Dx = SegW/14, Dy = SegH/16;
|
||||||
|
|
||||||
const hColor = [1,1,1];
|
switch(settings.ColorMinutes) {
|
||||||
const mColor = [0.3,0.3,1];
|
case "blue":
|
||||||
const bColor = [0.2,0.2,0.2];
|
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 = [
|
const Font = [
|
||||||
[
|
[
|
||||||
|
@ -114,16 +138,22 @@ const Font = [
|
||||||
var dho = -1, eho = -1, dmo = -1, emo = -1;
|
var dho = -1, eho = -1, dmo = -1, emo = -1;
|
||||||
|
|
||||||
|
|
||||||
function drawHSeg(x1,y1,x2,y2,Num,dColor,Size) {
|
function drawHSeg(x1,y1,x2,y2,Num,Color,Size) {
|
||||||
g.setColor(0,0,0);
|
|
||||||
|
|
||||||
|
g.setColor(g.theme.bg);
|
||||||
g.fillRect(x1, y1, x2, y2);
|
g.fillRect(x1, y1, x2, y2);
|
||||||
for (let i = 1; i < 8; i++) {
|
for (let i = 1; i < 8; i++) {
|
||||||
for (let j = 1; j < 8; j++) {
|
for (let j = 1; j < 8; j++) {
|
||||||
if (Font[Num][j-1][i-1] == 1) {
|
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);
|
g.fillCircle(x1+Dx+(i-1)*(x2-x1)/7,y1+Dy+(j-1)*(y2-y1)/7,Size);
|
||||||
} else {
|
} 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);
|
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 i = 1; i < 8; i++) {
|
||||||
for (let j = 1; j < 8; j++) {
|
for (let j = 1; j < 8; j++) {
|
||||||
if (Font[Num][j-1][i-1] == 1) {
|
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);
|
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() {
|
function ShowSeconds() {
|
||||||
g.setColor(1,1,1);
|
|
||||||
g.fillRect((Xe-Xs) / 2 - 14 + Xs -3,
|
g.setColor(sbColor[0],sbColor[1],sbColor[2]);
|
||||||
(Ye-Ys) / 2 - 7 + Ys -3,
|
|
||||||
(Xe-Xs) / 2 + 14 + Xs +1,
|
g.fillRect((Xe-Xs) / 2 - 14 + Xs -4,
|
||||||
(Ye-Ys) / 2 + 7 + Ys +1);
|
(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,
|
drawSSeg( (Xe-Xs) / 2 - 14 + Xs -1,
|
||||||
(Ye-Ys) / 2 - 7 + Ys ,
|
(Ye-Ys) / 2 - 7 + Ys +1,
|
||||||
(Xe-Xs) / 2 + Xs -1,
|
(Xe-Xs) / 2 + Xs -1,
|
||||||
(Ye-Ys) / 2 + 7 + Ys,
|
(Ye-Ys) / 2 + 7 + Ys +1,
|
||||||
ds,mColor,1);
|
ds,"fg",1);
|
||||||
|
|
||||||
drawSSeg( (Xe-Xs) / 2 + Xs +1,
|
drawSSeg( (Xe-Xs) / 2 + Xs +2,
|
||||||
(Ye-Ys) / 2 - 7 + Ys,
|
(Ye-Ys) / 2 - 7 + Ys +1,
|
||||||
(Xe-Xs) / 2 + 14 + Xs +1,
|
(Xe-Xs) / 2 + 14 + Xs +2,
|
||||||
(Ye-Ys) / 2 + 7 + Ys,
|
(Ye-Ys) / 2 + 7 + Ys +1,
|
||||||
es,mColor,1);
|
es,"fg",1);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -185,29 +222,29 @@ function draw() {
|
||||||
g.reset();
|
g.reset();
|
||||||
if (dh != dho) {
|
if (dh != dho) {
|
||||||
g.setColor(1,1,1);
|
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;
|
dho = dh;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eh != eho) {
|
if (eh != eho) {
|
||||||
g.setColor(1,1,1);
|
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;
|
eho = eh;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dm != dmo) {
|
if (dm != dmo) {
|
||||||
g.setColor(0.3,0.3,1);
|
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;
|
dmo = dm;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (em != emo) {
|
if (em != emo) {
|
||||||
g.setColor(0.3,0.3,1);
|
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;
|
emo = em;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Bangle.isLocked()) ShowSecons();
|
if (!Bangle.isLocked()) ShowSeconds();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -278,7 +315,7 @@ function drawWidgeds() {
|
||||||
|
|
||||||
var x1M = 100;
|
var x1M = 100;
|
||||||
var y1M = y1B;
|
var y1M = y1B;
|
||||||
var x2M = x1M + 30;
|
var x2M = x1M + 25;
|
||||||
var y2M = y2B;
|
var y2M = y2B;
|
||||||
|
|
||||||
if (messages.some(m=>m.new)) {
|
if (messages.some(m=>m.new)) {
|
||||||
|
@ -295,6 +332,7 @@ function drawWidgeds() {
|
||||||
|
|
||||||
print(strDow[dow] + ' ' + day + '.' + month + ' ' + year);
|
print(strDow[dow] + ' ' + day + '.' + month + ' ' + year);
|
||||||
|
|
||||||
|
g.setColor(g.theme.fg);
|
||||||
g.setFontAlign(-1, -1,0);
|
g.setFontAlign(-1, -1,0);
|
||||||
g.setFont("Vector", 20);
|
g.setFont("Vector", 20);
|
||||||
g.drawString(strDow[dow] + ' ' + day, 0, 0, true);
|
g.drawString(strDow[dow] + ' ' + day, 0, 0, true);
|
||||||
|
|
|
@ -1,21 +1,8 @@
|
||||||
(function(back) {
|
(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) {
|
function setSetting(key,value) {
|
||||||
print("call " + 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) {
|
function showSelAppMenu(key) {
|
||||||
var Apps = require("Storage").list(/\.info$/)
|
var Apps = require("Storage").list(/\.info$/)
|
||||||
.map(app => {var a=storage.readJSON(app, 1);return (
|
.map(app => {var a=storage.readJSON(app, 1);return (
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
0.01: Initial version for upload
|
0.01: Initial version for upload
|
||||||
|
0.02: better theme support, configurable colors, small improvements
|
||||||
|
|
|
@ -2,16 +2,14 @@
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
looks best with dark theme so far
|
|
||||||
|
|
||||||
* A Clock with big numbers made of 7x7 dots
|
* A Clock with big numbers made of 7x7 dots
|
||||||
* system widgeds ar not (yet) supported
|
* system widgeds ar not (yet) supported
|
||||||
* when screen is locked it shows hours and minutes in full screen mode
|
* when screen is locked it shows hours and minutes in full screen mode
|
||||||
|
* adjustable color for minutes and seconds
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
* when screen is unlocked it shows additional info: bluetooth, battery, new message, date and seconds
|
* when screen is unlocked it shows additional info: bluetooth, battery, new message state, date and seconds
|
||||||
* you can configure a app per swipe direction
|
* you can configure an app per swipe direction
|
||||||
* when swiping the configured apps are launced
|
* when swiping the configured apps are launched
|
||||||
* button press opens launcher
|
* 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 |
|
@ -1,17 +1,19 @@
|
||||||
{ "id": "7x7dotsclock",
|
{ "id": "7x7dotsclock",
|
||||||
"name": "7x7 Dots Clock",
|
"name": "7x7 Dots Clock",
|
||||||
"shortName":"7x7 Dots Clock",
|
"shortName":"7x7 Dots Clock",
|
||||||
"version":"0.01",
|
"version":"0.02",
|
||||||
"description": "A clock with a big 7x7 dots Font",
|
"description": "A clock with a big 7x7 dots Font",
|
||||||
"icon": "dotsfontclock.png",
|
"icon": "dotsfontclock.png",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"supports" : ["BANGLEJS2"],
|
"supports" : ["BANGLEJS2"],
|
||||||
|
"allow_emulator": true,
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"7x7dotsclock.app.js","url":"7x7dotsclock.app.js"},
|
{"name":"7x7dotsclock.app.js","url":"7x7dotsclock.app.js"},
|
||||||
{"name":"7x7dotsclock.settings.js","url":"7x7dotsclock.settings.js"},
|
{"name":"7x7dotsclock.settings.js","url":"7x7dotsclock.settings.js"},
|
||||||
{"name":"7x7dotsclock.img","url":"7x7dotsclock.img.js","evaluate":true}
|
{"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"}]
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue