Implement showMinute setting in Line Clock app

The commit adds 'showMinute' configuration in both app and settings file for the Line Clock app, allowing users to choose whether to display the minute. An additional property within the settings JSON file is now read at application start to adjust behavior accordingly.
pull/3148/head
Paul Spenke 2024-01-05 19:15:55 +01:00
parent 7ab3fe2f37
commit a54d37dbfc
3 changed files with 57 additions and 5 deletions

View File

@ -9,10 +9,18 @@ const hourOffset = 32;
const numberOffset = 85; const numberOffset = 85;
const numberSize = 22; const numberSize = 22;
const SETTINGS_FILE = "line_clock.setting.json";
let settings = { let settings = {
showLock: true showLock: true,
showMinute: true,
}; };
let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings;
for (const key in saved_settings) {
settings[key] = saved_settings[key];
}
let gWidth = g.getWidth(), gCenterX = gWidth/2; let gWidth = g.getWidth(), gCenterX = gWidth/2;
let gHeight = g.getHeight(), gCenterY = gHeight/2; let gHeight = g.getHeight(), gCenterY = gHeight/2;
@ -218,7 +226,7 @@ function queueDraw() {
}, 60000 - (Date.now() % 60000)); }, 60000 - (Date.now() % 60000));
} }
function lockListenerBw(isLocked) { function lockListenerBw() {
if (drawTimeout) clearTimeout(drawTimeout); if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined; drawTimeout = undefined;
draw(); draw();
@ -267,7 +275,10 @@ function draw() {
drawHand(); drawHand();
if(settings.showMinute){
drawNumber(currentMinute); drawNumber(currentMinute);
} }
}
draw(); draw();

View File

@ -12,6 +12,8 @@
"readme": "README.md", "readme": "README.md",
"storage": [ "storage": [
{"name":"line_clock.app.js","url":"app.js"}, {"name":"line_clock.app.js","url":"app.js"},
{"name":"line_clock.img","url":"app-icon.js","evaluate":true} {"name":"line_clock.img","url":"app-icon.js","evaluate":true},
] {"name":"line_clock.settings.js","url":"settings.js"}
],
"data":[{"name":"line_clock.setting.json"}]
} }

View File

@ -0,0 +1,39 @@
(function(back) {
const SETTINGS_FILE = "line_clock.setting.json";
// initialize with default settings...
const storage = require('Storage')
let settings = {
showLock: true,
showMinute: true,
};
let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings;
for (const key in saved_settings) {
settings[key] = saved_settings[key]
}
function save() {
storage.write(SETTINGS_FILE, settings)
}
E.showMenu({
'': { 'title': 'Line Clock' },
'< Back': back,
'Show Lock': {
value: settings.showLock,
format: () => (settings.showLock ? 'Yes' : 'No'),
onchange: () => {
settings.showLock = !settings.showLock;
save();
},
},
'Show Minute': {
value: settings.showMinute,
format: () => (settings.showMinute ? 'Yes' : 'No'),
onchange: () => {
settings.showMinute = !settings.showMinute;
save();
},
}
});
})