From a54d37dbfc33f8f088bc75146c89289243c69b67 Mon Sep 17 00:00:00 2001 From: Paul Spenke Date: Fri, 5 Jan 2024 19:15:55 +0100 Subject: [PATCH] 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. --- apps/line_clock/app.js | 17 ++++++++++++--- apps/line_clock/metadata.json | 6 ++++-- apps/line_clock/settings.js | 39 +++++++++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 5 deletions(-) create mode 100644 apps/line_clock/settings.js diff --git a/apps/line_clock/app.js b/apps/line_clock/app.js index 0596b865e..4d243b736 100644 --- a/apps/line_clock/app.js +++ b/apps/line_clock/app.js @@ -9,10 +9,18 @@ const hourOffset = 32; const numberOffset = 85; const numberSize = 22; +const SETTINGS_FILE = "line_clock.setting.json"; + 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 gHeight = g.getHeight(), gCenterY = gHeight/2; @@ -218,7 +226,7 @@ function queueDraw() { }, 60000 - (Date.now() % 60000)); } -function lockListenerBw(isLocked) { +function lockListenerBw() { if (drawTimeout) clearTimeout(drawTimeout); drawTimeout = undefined; draw(); @@ -267,7 +275,10 @@ function draw() { drawHand(); - drawNumber(currentMinute); + + if(settings.showMinute){ + drawNumber(currentMinute); + } } draw(); diff --git a/apps/line_clock/metadata.json b/apps/line_clock/metadata.json index a2aad5f58..01393efdf 100644 --- a/apps/line_clock/metadata.json +++ b/apps/line_clock/metadata.json @@ -12,6 +12,8 @@ "readme": "README.md", "storage": [ {"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"}] } diff --git a/apps/line_clock/settings.js b/apps/line_clock/settings.js new file mode 100644 index 000000000..5a793ed0f --- /dev/null +++ b/apps/line_clock/settings.js @@ -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(); + }, + } + }); + })