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}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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",
|
||||
|
|
|
@ -1 +1,2 @@
|
|||
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 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);
|
||||
}
|
||||
|
||||
function draw() {
|
||||
const s = new Date().getTime();
|
||||
console.log('mem.b', process.memory().usage);
|
||||
|
||||
let buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, {
|
||||
const buf = Graphics.createArrayBuffer(screen.width, screen.height, 1, {
|
||||
msb: true
|
||||
});
|
||||
|
||||
let img = {
|
||||
function draw() {
|
||||
|
||||
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);
|
Binary file not shown.
Before Width: | Height: | Size: 2.1 KiB After Width: | Height: | Size: 1.2 KiB |
|
@ -2,12 +2,18 @@
|
|||
const storage = require('Storage');
|
||||
const SETTINGS_FILE = "ffcniftyb.json";
|
||||
|
||||
function load(settings) {
|
||||
const saved = storage.readJSON(SETTINGS_FILE, 1) || {};
|
||||
for (const key in saved) {
|
||||
settings[key] = saved[key];
|
||||
const colors = {
|
||||
65535: 'White',
|
||||
63488: 'Red',
|
||||
65504: 'Yellow',
|
||||
2047: 'Cyan',
|
||||
2016: 'Green',
|
||||
31: 'Blue',
|
||||
0: 'Black',
|
||||
}
|
||||
return settings;
|
||||
|
||||
function load(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();
|
||||
back();
|
||||
};
|
||||
|
||||
function showMenu(items, opt) {
|
||||
items[''] = opt || {};
|
||||
items['< Back'] = back;
|
||||
E.showMenu(items);
|
||||
}
|
||||
|
||||
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),
|
||||
})
|
||||
showMenu(
|
||||
Object.keys(colors).reduce((menu, color) => {
|
||||
menu[colors[color]] = saveColor(color);
|
||||
return menu;
|
||||
}, {}),
|
||||
{
|
||||
title: 'Color',
|
||||
selected: Object.keys(colors).indexOf(settings.color)
|
||||
}
|
||||
|
||||
function showSettings() {
|
||||
E.showMenu({
|
||||
'': { 'title': 'Nifty B Clock' },
|
||||
'< Back': back,
|
||||
'Color': showColors,
|
||||
})
|
||||
}
|
||||
|
||||
showColors();
|
||||
})
|
||||
);
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue