From 4150874534ee5830e713d86855726793567b6255 Mon Sep 17 00:00:00 2001 From: Stergios Mekras Date: Wed, 2 Mar 2022 16:34:35 +0100 Subject: [PATCH] Write settings file --- apps/smclock/settings.js | 117 ++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 70 deletions(-) diff --git a/apps/smclock/settings.js b/apps/smclock/settings.js index bfc738e19..9d747a910 100644 --- a/apps/smclock/settings.js +++ b/apps/smclock/settings.js @@ -1,108 +1,85 @@ -// Settings menu for Monogram Watch Face +// settings menu for Monogram Watch Face // Anton Clock settings were used as template +// helper functions taken from Anton Clock -(function(back) { +(function (back) { var FILE = "smclock.json"; - // Load settings - var settings = Object.assign({ - secondsOnUnlock: false, - }, require('Storage').readJSON(FILE, true) || {}); + // load settings from the file + // assign default values if it doesn't exist + var settings = Object.assign( + { + dateFormat: "short", + showAnalogFace: false, + showWeekInfo: false, + useVectorFont: true, + }, + require("Storage").readJSON(FILE, true) || {} + ); + // write the new settings to the file function writeSettings() { - require('Storage').writeJSON(FILE, settings); + require("Storage").writeJSON(FILE, settings); } - // Helper method which uses int-based menu item for set of string values + // helper method which uses int-based menu item for set of string values function stringItems(startvalue, writer, values) { return { - value: (startvalue === undefined ? 0 : values.indexOf(startvalue)), - format: v => values[v], + value: startvalue === undefined ? 0 : values.indexOf(startvalue), + format: (v) => values[v], min: 0, max: values.length - 1, wrap: true, step: 1, - onchange: v => { + onchange: (v) => { writer(values[v]); writeSettings(); - } + }, }; } - // Helper method which breaks string set settings down to local settings object + // helper method which breaks string set settings down to local settings object function stringInSettings(name, values) { - return stringItems(settings[name], v => settings[name] = v, values); + return stringItems(settings[name], (v) => (settings[name] = v), values); } + // settings menu var mainmenu = { "": { - "title": "Monogram Clock" + title: "Monogram Clock", }, "< Back": () => back(), - "Seconds...": () => E.showMenu(secmenu), - "Date": stringInSettings("dateOnMain", ["Long", "Short", "ISO8601"]), - "Show Weekday": { - value: (settings.weekDay !== undefined ? settings.weekDay : true), - format: v => v ? "On" : "Off", - onchange: v => { - settings.weekDay = v; + "Analog Face": { + value: + settings.showAnalogFace !== undefined ? settings.showAnalogFace : false, + format: (v) => (v ? "On" : "Off"), + onchange: (v) => { + settings.showAnalogFace = v; writeSettings(); - } + }, }, - "Show CalWeek": { - value: (settings.calWeek !== undefined ? settings.calWeek : false), - format: v => v ? "On" : "Off", - onchange: v => { - settings.calWeek = v; + Date: stringInSettings("dateOnMain", ["Long", "Short", "ISO8601"]), + "Week Info": { + value: + settings.showWeekInfo !== undefined ? settings.showWeekInfo : false, + format: (v) => (v ? "On" : "Off"), + onchange: (v) => { + settings.showWeekInfo = v; writeSettings(); - } + }, }, - "Uppercase": { - value: (settings.upperCase !== undefined ? settings.upperCase : true), - format: v => v ? "On" : "Off", - onchange: v => { - settings.upperCase = v; + "Vector Font": { + value: + settings.useVectorFont !== undefined ? settings.useVectorFont : false, + format: (v) => (v ? "On" : "Off"), + onchange: (v) => { + settings.useVectorFont = v; writeSettings(); - } + }, }, - "Vector font": { - value: (settings.vectorFont !== undefined ? settings.vectorFont : false), - format: v => v ? "On" : "Off", - onchange: v => { - settings.vectorFont = v; - writeSettings(); - } - }, - }; - - // Submenu - var secmenu = { - "": { - "title": "Show seconds..." - }, - "< Back": () => E.showMenu(mainmenu), - "Show": stringInSettings("secondsMode", ["Never", "Unlocked", "Always"]), - "With \":\"": { - value: (settings.secondsWithColon !== undefined ? settings.secondsWithColon : true), - format: v => v ? "On" : "Off", - onchange: v => { - settings.secondsWithColon = v; - writeSettings(); - } - }, - "Color": { - value: (settings.secondsColoured !== undefined ? settings.secondsColoured : true), - format: v => v ? "On" : "Off", - onchange: v => { - settings.secondsColoured = v; - writeSettings(); - } - }, - "Date": stringInSettings("dateOnSecs", ["Year", "Weekday", "No"]) }; // Actually display the menu E.showMenu(mainmenu); - }); // end of file