1
0
Fork 0

Write settings file

master
Stergios Mekras 2022-03-02 16:34:35 +01:00
parent 4b884b7782
commit 4150874534
1 changed files with 47 additions and 70 deletions

View File

@ -1,108 +1,85 @@
// Settings menu for Monogram Watch Face // settings menu for Monogram Watch Face
// Anton Clock settings were used as template // Anton Clock settings were used as template
// helper functions taken from Anton Clock
(function(back) { (function (back) {
var FILE = "smclock.json"; var FILE = "smclock.json";
// Load settings // load settings from the file
var settings = Object.assign({ // assign default values if it doesn't exist
secondsOnUnlock: false, var settings = Object.assign(
}, require('Storage').readJSON(FILE, true) || {}); {
dateFormat: "short",
showAnalogFace: false,
showWeekInfo: false,
useVectorFont: true,
},
require("Storage").readJSON(FILE, true) || {}
);
// write the new settings to the file
function writeSettings() { 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) { function stringItems(startvalue, writer, values) {
return { return {
value: (startvalue === undefined ? 0 : values.indexOf(startvalue)), value: startvalue === undefined ? 0 : values.indexOf(startvalue),
format: v => values[v], format: (v) => values[v],
min: 0, min: 0,
max: values.length - 1, max: values.length - 1,
wrap: true, wrap: true,
step: 1, step: 1,
onchange: v => { onchange: (v) => {
writer(values[v]); writer(values[v]);
writeSettings(); 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) { 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 = { var mainmenu = {
"": { "": {
"title": "Monogram Clock" title: "Monogram Clock",
}, },
"< Back": () => back(), "< Back": () => back(),
"Seconds...": () => E.showMenu(secmenu), "Analog Face": {
"Date": stringInSettings("dateOnMain", ["Long", "Short", "ISO8601"]), value:
"Show Weekday": { settings.showAnalogFace !== undefined ? settings.showAnalogFace : false,
value: (settings.weekDay !== undefined ? settings.weekDay : true), format: (v) => (v ? "On" : "Off"),
format: v => v ? "On" : "Off", onchange: (v) => {
onchange: v => { settings.showAnalogFace = v;
settings.weekDay = v;
writeSettings(); writeSettings();
} },
}, },
"Show CalWeek": { Date: stringInSettings("dateOnMain", ["Long", "Short", "ISO8601"]),
value: (settings.calWeek !== undefined ? settings.calWeek : false), "Week Info": {
format: v => v ? "On" : "Off", value:
onchange: v => { settings.showWeekInfo !== undefined ? settings.showWeekInfo : false,
settings.calWeek = v; format: (v) => (v ? "On" : "Off"),
onchange: (v) => {
settings.showWeekInfo = v;
writeSettings(); writeSettings();
} },
}, },
"Uppercase": { "Vector Font": {
value: (settings.upperCase !== undefined ? settings.upperCase : true), value:
format: v => v ? "On" : "Off", settings.useVectorFont !== undefined ? settings.useVectorFont : false,
onchange: v => { format: (v) => (v ? "On" : "Off"),
settings.upperCase = v; onchange: (v) => {
settings.useVectorFont = v;
writeSettings(); 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 // Actually display the menu
E.showMenu(mainmenu); E.showMenu(mainmenu);
}); });
// end of file // end of file