options for onewordclock

master
kkayam 2025-02-13 10:44:13 +00:00
parent 6c75c85876
commit 14b95d6a5e
3 changed files with 79 additions and 39 deletions

View File

@ -3,6 +3,17 @@
var drawTimeout;
require('Font4x5Numeric').add(Graphics);
// Load settings
const SETTINGS_FILE = "onewordclock.setting.json";
let settings = {
mode: "Named",
smallNumeralClock: true
};
let stored = require('Storage').readJSON(SETTINGS_FILE, 1) || {};
for (const key in stored) {
settings[key] = stored[key];
}
// https://www.espruino.com/Bangle.js+Locale
// schedule a draw for the next 3 minutes
const queueDraw = () => {
@ -13,35 +24,62 @@
}, 180000 - (Date.now() % 180000));
};
const wordFromHour = (h) => {
const HOUR_WORDS = [
'Midnight',
'Early',
'Quiet',
'Still',
'Dawn',
'Earlybird',
'Sunrise',
'Morning',
'Bright',
'Active',
'Busy',
'Pre-noon',
'Noon',
'Post-noon',
'Afternoon',
'Siesta',
'Breezy',
'Evening',
'Twilight',
'Dinner',
'Cozy',
'Relax',
'Quietude',
'Night',
];
const HOUR_WORDS = [
'Midnight',
'Early',
'Quiet',
'Still',
'Dawn',
'Earlybird',
'Sunrise',
'Morning',
'Bright',
'Active',
'Busy',
'Pre-noon',
'Noon',
'Post-noon',
'Afternoon',
'Siesta',
'Breezy',
'Evening',
'Twilight',
'Dinner',
'Cozy',
'Relax',
'Quietude',
'Night',
];
return HOUR_WORDS[h];
const LITERAL_HOURS = [
'Twelve',
'One',
'Two',
'Three',
'Four',
'Five',
'Six',
'Seven',
'Eight',
'Nine',
'Ten',
'Eleven',
'Twelve',
'One',
'Two',
'Three',
'Four',
'Five',
'Six',
'Seven',
'Eight',
'Nine',
'Ten',
'Eleven'
];
const wordFromHour = (h) => {
return settings.mode === "Named" ? HOUR_WORDS[h] : LITERAL_HOURS[h];
};
const wordsFromDayMonth = (day) => {
@ -67,11 +105,13 @@
g.setBgColor(g.theme.bg);
g.clear();
// Draw military time at the top
g.setColor(g.theme.bg2);
g.setFontAlign(0, 0).setFont('4x5Numeric', 2);
var militaryTime = ('0' + h).slice(-2) + ('0' + m).slice(-2);
g.drawString(militaryTime, x, 20);
// Draw military time at the top only if smallNumeralClock is true
if (settings.smallNumeralClock) {
g.setColor(g.theme.bg2);
g.setFontAlign(0, 0).setFont('4x5Numeric', 1);
var militaryTime = ('0' + h).slice(-2) + ('0' + m).slice(-2);
g.drawString(militaryTime, x, 15);
}
g.setFontAlign(-1, 0).setFont('Vector', 36);

View File

@ -2,7 +2,7 @@
"id": "onewordclock",
"name": "One Word Clock",
"shortName": "One Word",
"version": "0.93",
"version": "0.94",
"description": "A unique clock that displays a single evocative word for each hour of the day",
"icon": "app.png",
"tags": "clock",

View File

@ -4,8 +4,8 @@
// initialize with default settings...
const storage = require('Storage');
let settings = {
screen: "Named",
smallNumeralClock: false
mode: "Named",
smallNumeralClock: true
};
let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings;
for (const key in saved_settings) {
@ -20,12 +20,12 @@
E.showMenu({
'': { 'title': 'One Word Clock' },
'< Back': back,
'Screen': {
value: 0 | screenOptions.indexOf(settings.screen),
'Mode': {
value: 0 | screenOptions.indexOf(settings.mode),
min: 0, max: 1,
format: v => screenOptions[v],
onchange: v => {
settings.screen = screenOptions[v];
settings.mode = screenOptions[v];
save();
},
},