mirror of https://github.com/espruino/BangleApps
Write settings file
parent
4b884b7782
commit
4150874534
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue