diff --git a/apps.json b/apps.json index 51cca784b..102def062 100644 --- a/apps.json +++ b/apps.json @@ -4009,6 +4009,23 @@ {"name":"ffcniftya.img","url":"app-icon.js","evaluate":true} ] }, + { + "id": "ffcniftyb", + "name": "Nifty-B Clock", + "version": "0.02", + "description": "A nifty clock (series B) with time, date and color configuration", + "icon": "app.png", + "type": "clock", + "tags": "clock", + "supports": ["BANGLEJS","BANGLEJS2"], + "allow_emulator": true, + "storage": [ + {"name":"ffcniftyb.app.js","url":"app.js"}, + {"name":"ffcniftyb.img","url":"app-icon.js","evaluate":true}, + {"name":"ffcniftyb.settings.js","url":"settings.js"} + ], + "data": [{"name":"ffcniftyb.json"}] + }, { "id": "stopwatch", "name": "Stopwatch Touch", diff --git a/apps/ffcniftyb/ChangeLog b/apps/ffcniftyb/ChangeLog index f6516c6de..dedd31452 100644 --- a/apps/ffcniftyb/ChangeLog +++ b/apps/ffcniftyb/ChangeLog @@ -1 +1,2 @@ 0.01: New Clock Nifty B +0.02: Added configuration \ No newline at end of file diff --git a/apps/ffcniftyb/app-icon.js b/apps/ffcniftyb/app-icon.js index f0a2393b1..1aac04351 100644 --- a/apps/ffcniftyb/app-icon.js +++ b/apps/ffcniftyb/app-icon.js @@ -1 +1 @@ -require("heatshrink").decompress(atob("mEwwkEIf4A5gX/+AGEn//mIWLgP/C4gGCAAMgC5UvC4sDC4YICkIhBgMQiEBE4Uxn4XDj//iEAn/yA4ICBgUikEikYXBBAIXEn/xJYURAYMygERkQHBiYLBKYIXF+AVDC4czgUSmIXBCQgED+ZeBR4YXBLYICDC5CPGC4IAIC40zmaPDC4MSLQQXK+ayCR4QXCiRoEC44ECh4bCC4MTiTDBC6ZHOC5B3NLYcvC4kBgL5BAAUikT+BfIIrB/8ykf/eYQXBkUTI4cBW4YQCgQGDmAXDkJfEC46GBAoJKCR4geCAAMRAAZRDAoIODO4UBPRIAJR5QXWgKNCTApNDC5Mv/6/DAwR3GAAyHCC4anJIo3/+bvEa4Uia4oXHkEvC4cvIgUf+YXKHYIvEAgcPC5QSGC5UBSwYXJLYQXFkUhgABBC5Ef/4mBl4XEmETmIXKgaXBmYCBC4cTkMxiQXJS4IACL4p3MgESCwJHFR5oxCiB3FkERC5cSToQXFmUyiAZFR48Bn7zCAQMjkfykQkBN4n/XgKPBAAQgCUQIfBUwYXHFgIGCdI4XDmYADmIIEkAWJAH4A4A==")) \ No newline at end of file +require("heatshrink").decompress(atob("mEwwkB/4A/AH4ARgMRBA3xBBIJCAYIFDAAYHGCAYJBDYQABj4PD+AXFCwgXGCAg9ECwwJBJQooGCxAXCIYQpBAgg9IC5yPCCw4XKBYIsFPwUBXQQXHAYREIF5ZEC+MfWQYXODQYTGC5ZDEOw0QMAIXMPggvSC44vRL5b8EAYIACC5i0FCwaOBC5C0DA4ZLCC5hfC/4DBIwwXKCInwgAWEKIwXJAA4XXCxYXCEwR2EgJeLR5LbCGRYXIAgzvKh7zGZg4XGIYisBA4JJCC6B5DAoYXWF6xfRC4fwAgMBC6cBU5I6CC5AECCo0QJwQXJaZJHMEYR1JC5QKBXo8QC4oCBAZAwHgKXBTQwSDBIKmGgJ3DEYheEA4ZfJKgkPdJQXHDAQWBC44eIC4QAMDA4A==")) \ No newline at end of file diff --git a/apps/ffcniftyb/app.js b/apps/ffcniftyb/app.js index 60d76ff0a..b5fc94c32 100644 --- a/apps/ffcniftyb/app.js +++ b/apps/ffcniftyb/app.js @@ -1,7 +1,8 @@ -// setTimeout(load,100);Bangle.factoryReset(); -console.log('mem', process.memory().usage); const locale = require("locale"); -const is12Hour = (require("Storage").readJSON("setting.json", 1) || {})["12hour"]; +const storage = require('Storage'); + +const is12Hour = (storage.readJSON("setting.json", 1) || {})["12hour"]; +const color = (storage.readJSON("ffcniftyb.json", 1) || {})["color"] || 63488 /* red */; /* Clock *********************************************/ @@ -17,39 +18,10 @@ const center = { y: screen.height / 2, }; -const color = g.toColor(255, 0, 0); -console.log('color', color); - function d02(value) { return ('0' + value).substr(-2); } -// const c = E.compiledC(` -// // void xor(int, int, int) -// void xor(int len, int *dst, int *src){ -// len = len>>2; -// while (len--) { -// *dst ^= *src; -// dst++; -// src++; -// } -// } -// `); - -// function combineLayers(l1, l2) { -// // const l1ptr = E.getAddressOf(l1.buffer, true); -// // const l2ptr = E.getAddressOf(l2.buffer, true); -// // if (l1ptr && l2ptr) { -// // c.xor(l1.buffer.length, l1ptr, l2ptr); -// // } -// if (l1 && l1.buffer && l2 && l2.buffer) { -// for (let i = 0; i < l1.buffer.length; i++) { -// l1.buffer[i] ^= l2.buffer[i]; -// } -// } -// return l1; -// } - function renderEllipse(g) { g.fillEllipse(center.x - 5 * scale, center.y - 70 * scale, center.x + 160 * scale, center.y + 90 * scale); } @@ -78,15 +50,13 @@ function renderText(g) { g.drawString(day2, center.x + 80 * scale, center.y + 60 * scale); } +const buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, { + msb: true +}); + function draw() { - const s = new Date().getTime(); - console.log('mem.b', process.memory().usage); - let buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, { - msb: true - }); - - let img = { + const img = { width: screen.width, height: screen.height, transparent: 0, @@ -108,12 +78,6 @@ function draw() { renderEllipse(buf.setColor(1)); renderText(buf.setColor(0)); g.setColor(color).drawImage(img, 0, 24); - - buf = undefined; - img = undefined; - - console.log('mem.e', process.memory().usage); - console.log('draw', new Date().getTime() - s); } @@ -140,7 +104,6 @@ function startTick(run) { g.clear(); startTick(draw); -// Stop updates when LCD is off, restart when on Bangle.on('lcdPower', (on) => { if (on) { startTick(draw); @@ -149,10 +112,7 @@ Bangle.on('lcdPower', (on) => { } }); -// Load widgets Bangle.loadWidgets(); Bangle.drawWidgets(); -// Show launcher when middle button pressed Bangle.setUI("clock"); -console.log('mem', process.memory().usage); \ No newline at end of file diff --git a/apps/ffcniftyb/app.png b/apps/ffcniftyb/app.png index 1cd8a49b7..a6acf0121 100644 Binary files a/apps/ffcniftyb/app.png and b/apps/ffcniftyb/app.png differ diff --git a/apps/ffcniftyb/settings.js b/apps/ffcniftyb/settings.js index 0a9f7808c..00abf80b5 100644 --- a/apps/ffcniftyb/settings.js +++ b/apps/ffcniftyb/settings.js @@ -1,13 +1,19 @@ -(function(back) { +(function (back) { const storage = require('Storage'); const SETTINGS_FILE = "ffcniftyb.json"; + const colors = { + 65535: 'White', + 63488: 'Red', + 65504: 'Yellow', + 2047: 'Cyan', + 2016: 'Green', + 31: 'Blue', + 0: 'Black', + } + function load(settings) { - const saved = storage.readJSON(SETTINGS_FILE, 1) || {}; - for (const key in saved) { - settings[key] = saved[key]; - } - return settings; + return Object.assign(settings, storage.readJSON(SETTINGS_FILE, 1) || {}); } function save(settings) { @@ -15,36 +21,29 @@ } const settings = load({ - color: 65535, + color: 63488 /* red */, }); - function showColors() { - const saveColor = (color) => () => { - settings.color = color; - save(settings); - showSettings(); + const saveColor = (color) => () => { + settings.color = color; + save(settings); + back(); + }; + + function showMenu(items, opt) { + items[''] = opt || {}; + items['< Back'] = back; + E.showMenu(items); + } + + showMenu( + Object.keys(colors).reduce((menu, color) => { + menu[colors[color]] = saveColor(color); + return menu; + }, {}), + { + title: 'Color', + selected: Object.keys(colors).indexOf(settings.color) } - - E.showMenu({ - '': { 'title': 'Colors' }, - '< Back': showSettings, - 'White': saveColor(65535), - 'Red': saveColor(63488), - 'Yellow': saveColor(65504), - 'Cyan': saveColor(2047), - 'Green': saveColor(2016), - 'Blue': saveColor(31), - 'Black': saveColor(0), - }) - } - - function showSettings() { - E.showMenu({ - '': { 'title': 'Nifty B Clock' }, - '< Back': back, - 'Color': showColors, - }) - } - - showColors(); -}) + ); +});