BangleApps/apps/matrixclock/matrixclock.settings.js

53 lines
1.7 KiB
JavaScript
Raw Normal View History

(function(back) {
const PREFERENCE_FILE = "matrixclock.settings.json";
var settings = Object.assign({color : "theme", intensity: "light"},
require('Storage').readJSON(PREFERENCE_FILE, true) || {});
console.log("loaded:" + JSON.stringify(settings));
function writeSettings() {
console.log("saving:" + JSON.stringify(settings));
require('Storage').writeJSON(PREFERENCE_FILE, settings);
}
// 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],
min: 0,
max: values.length - 1,
wrap: true,
step: 1,
onchange: v => {
writer(values[v]);
writeSettings();
}
};
}
// 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);
}
// Show the menu
E.showMenu({
"" : { "title" : "Matrix Clock" },
"< Back" : () => back(),
"Colour": stringInSettings("color", ['theme',
'black on white',
'green on white',
'green on black',
'red on black',
'red on white',
'white on gray',
'white on red',
'white on blue',
'white on purple'
]),
"Intensity": stringInSettings("intensity", ['light',
'medium',
'high'])
});
})