diff --git a/apps/7x7dotsclock/7x7dotsclock.app.js b/apps/7x7dotsclock/7x7dotsclock.app.js index 3f2e9b9b1..aa174b2d2 100644 --- a/apps/7x7dotsclock/7x7dotsclock.app.js +++ b/apps/7x7dotsclock/7x7dotsclock.app.js @@ -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); diff --git a/apps/7x7dotsclock/7x7dotsclock.settings.js b/apps/7x7dotsclock/7x7dotsclock.settings.js index 42473ec17..34935d668 100644 --- a/apps/7x7dotsclock/7x7dotsclock.settings.js +++ b/apps/7x7dotsclock/7x7dotsclock.settings.js @@ -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 ( diff --git a/apps/7x7dotsclock/ChangeLog b/apps/7x7dotsclock/ChangeLog index 50c5eca4a..d2c98a472 100644 --- a/apps/7x7dotsclock/ChangeLog +++ b/apps/7x7dotsclock/ChangeLog @@ -1 +1,2 @@ 0.01: Initial version for upload +0.02: better theme support, configurable colors, small improvements diff --git a/apps/7x7dotsclock/README.md b/apps/7x7dotsclock/README.md index 7f899ff0f..28fcac1b1 100644 --- a/apps/7x7dotsclock/README.md +++ b/apps/7x7dotsclock/README.md @@ -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 - diff --git a/apps/7x7dotsclock/dotsfontclock-scr1.png b/apps/7x7dotsclock/dotsfontclock-scr1.png index dc86396c0..5ab2e4863 100644 Binary files a/apps/7x7dotsclock/dotsfontclock-scr1.png and b/apps/7x7dotsclock/dotsfontclock-scr1.png differ diff --git a/apps/7x7dotsclock/dotsfontclock-scr2.png b/apps/7x7dotsclock/dotsfontclock-scr2.png new file mode 100644 index 000000000..f301bb50c Binary files /dev/null and b/apps/7x7dotsclock/dotsfontclock-scr2.png differ diff --git a/apps/7x7dotsclock/metadata.json b/apps/7x7dotsclock/metadata.json index 7b2c52512..41f0836d3 100644 --- a/apps/7x7dotsclock/metadata.json +++ b/apps/7x7dotsclock/metadata.json @@ -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"}] }