mirror of https://github.com/espruino/BangleApps
Nifty Clock B - Some code refactoring
parent
496cdbfa79
commit
c895040055
17
apps.json
17
apps.json
|
@ -4009,6 +4009,23 @@
|
||||||
{"name":"ffcniftya.img","url":"app-icon.js","evaluate":true}
|
{"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",
|
"id": "stopwatch",
|
||||||
"name": "Stopwatch Touch",
|
"name": "Stopwatch Touch",
|
||||||
|
|
|
@ -1 +1,2 @@
|
||||||
0.01: New Clock Nifty B
|
0.01: New Clock Nifty B
|
||||||
|
0.02: Added configuration
|
|
@ -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=="))
|
require("heatshrink").decompress(atob("mEwwkB/4A/AH4ARgMRBA3xBBIJCAYIFDAAYHGCAYJBDYQABj4PD+AXFCwgXGCAg9ECwwJBJQooGCxAXCIYQpBAgg9IC5yPCCw4XKBYIsFPwUBXQQXHAYREIF5ZEC+MfWQYXODQYTGC5ZDEOw0QMAIXMPggvSC44vRL5b8EAYIACC5i0FCwaOBC5C0DA4ZLCC5hfC/4DBIwwXKCInwgAWEKIwXJAA4XXCxYXCEwR2EgJeLR5LbCGRYXIAgzvKh7zGZg4XGIYisBA4JJCC6B5DAoYXWF6xfRC4fwAgMBC6cBU5I6CC5AECCo0QJwQXJaZJHMEYR1JC5QKBXo8QC4oCBAZAwHgKXBTQwSDBIKmGgJ3DEYheEA4ZfJKgkPdJQXHDAQWBC44eIC4QAMDA4A=="))
|
|
@ -1,7 +1,8 @@
|
||||||
// setTimeout(load,100);Bangle.factoryReset();
|
|
||||||
console.log('mem', process.memory().usage);
|
|
||||||
const locale = require("locale");
|
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 *********************************************/
|
/* Clock *********************************************/
|
||||||
|
@ -17,39 +18,10 @@ const center = {
|
||||||
y: screen.height / 2,
|
y: screen.height / 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
const color = g.toColor(255, 0, 0);
|
|
||||||
console.log('color', color);
|
|
||||||
|
|
||||||
function d02(value) {
|
function d02(value) {
|
||||||
return ('0' + value).substr(-2);
|
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) {
|
function renderEllipse(g) {
|
||||||
g.fillEllipse(center.x - 5 * scale, center.y - 70 * scale, center.x + 160 * scale, center.y + 90 * scale);
|
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);
|
g.drawString(day2, center.x + 80 * scale, center.y + 60 * scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, {
|
||||||
|
msb: true
|
||||||
|
});
|
||||||
|
|
||||||
function draw() {
|
function draw() {
|
||||||
const s = new Date().getTime();
|
|
||||||
console.log('mem.b', process.memory().usage);
|
|
||||||
|
|
||||||
let buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, {
|
const img = {
|
||||||
msb: true
|
|
||||||
});
|
|
||||||
|
|
||||||
let img = {
|
|
||||||
width: screen.width,
|
width: screen.width,
|
||||||
height: screen.height,
|
height: screen.height,
|
||||||
transparent: 0,
|
transparent: 0,
|
||||||
|
@ -108,12 +78,6 @@ function draw() {
|
||||||
renderEllipse(buf.setColor(1));
|
renderEllipse(buf.setColor(1));
|
||||||
renderText(buf.setColor(0));
|
renderText(buf.setColor(0));
|
||||||
g.setColor(color).drawImage(img, 0, 24);
|
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();
|
g.clear();
|
||||||
startTick(draw);
|
startTick(draw);
|
||||||
|
|
||||||
// Stop updates when LCD is off, restart when on
|
|
||||||
Bangle.on('lcdPower', (on) => {
|
Bangle.on('lcdPower', (on) => {
|
||||||
if (on) {
|
if (on) {
|
||||||
startTick(draw);
|
startTick(draw);
|
||||||
|
@ -149,10 +112,7 @@ Bangle.on('lcdPower', (on) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Load widgets
|
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
||||||
// Show launcher when middle button pressed
|
|
||||||
Bangle.setUI("clock");
|
Bangle.setUI("clock");
|
||||||
console.log('mem', process.memory().usage);
|
|
Binary file not shown.
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -1,13 +1,19 @@
|
||||||
(function(back) {
|
(function (back) {
|
||||||
const storage = require('Storage');
|
const storage = require('Storage');
|
||||||
const SETTINGS_FILE = "ffcniftyb.json";
|
const SETTINGS_FILE = "ffcniftyb.json";
|
||||||
|
|
||||||
|
const colors = {
|
||||||
|
65535: 'White',
|
||||||
|
63488: 'Red',
|
||||||
|
65504: 'Yellow',
|
||||||
|
2047: 'Cyan',
|
||||||
|
2016: 'Green',
|
||||||
|
31: 'Blue',
|
||||||
|
0: 'Black',
|
||||||
|
}
|
||||||
|
|
||||||
function load(settings) {
|
function load(settings) {
|
||||||
const saved = storage.readJSON(SETTINGS_FILE, 1) || {};
|
return Object.assign(settings, storage.readJSON(SETTINGS_FILE, 1) || {});
|
||||||
for (const key in saved) {
|
|
||||||
settings[key] = saved[key];
|
|
||||||
}
|
|
||||||
return settings;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function save(settings) {
|
function save(settings) {
|
||||||
|
@ -15,36 +21,29 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
const settings = load({
|
const settings = load({
|
||||||
color: 65535,
|
color: 63488 /* red */,
|
||||||
});
|
});
|
||||||
|
|
||||||
function showColors() {
|
const saveColor = (color) => () => {
|
||||||
const saveColor = (color) => () => {
|
settings.color = color;
|
||||||
settings.color = color;
|
save(settings);
|
||||||
save(settings);
|
back();
|
||||||
showSettings();
|
};
|
||||||
|
|
||||||
|
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();
|
|
||||||
})
|
|
||||||
|
|
Loading…
Reference in New Issue