mirror of https://github.com/espruino/BangleApps
67 lines
2.2 KiB
JavaScript
67 lines
2.2 KiB
JavaScript
(function(back) {
|
|
var FILE = 'quarterclock.json';
|
|
// Load settings
|
|
var settings = Object.assign({
|
|
minuteColour: '#f00',
|
|
hourColour: '#ff0',
|
|
backgroundColour: 'theme',
|
|
showWidgets: true,
|
|
showBattery: true,
|
|
digital: false,
|
|
batteryColour: '#0f0',
|
|
}, require('Storage').readJSON(FILE, true) || {});
|
|
|
|
function setSetting(key,value) {
|
|
settings[key] = value;
|
|
require('Storage').writeJSON(FILE, settings);
|
|
}
|
|
|
|
// Helper method which uses int-based menu item for set of string values and their labels
|
|
function stringItems(key, startvalue, values, labels) {
|
|
return {
|
|
value: (startvalue === undefined ? 0 : values.indexOf(startvalue)),
|
|
format: v => labels[v],
|
|
min: 0,
|
|
max: values.length - 1,
|
|
wrap: true,
|
|
step: 1,
|
|
onchange: v => {
|
|
setSetting(key,values[v]);
|
|
}
|
|
};
|
|
}
|
|
|
|
// Helper method which breaks string set settings down to local settings object
|
|
function stringInSettings(name, values, labels) {
|
|
return stringItems(name,settings[name], values, labels);
|
|
}
|
|
|
|
// Show the menu
|
|
E.showMenu({
|
|
'' : { 'title' : 'Quarter Clock' },
|
|
'< Back' : () => back(),
|
|
'Hour Colour': stringInSettings('hourColour', ['#f00', '#0f0', '#00f', '#ff0', '#0ff', '#f0f'], ['Red', 'Green', 'Blue', 'Yellow', 'Cyan', 'Magenta']),
|
|
'Minute Colour': stringInSettings('minuteColour', ['#f00', '#0f0', '#00f', '#ff0', '#0ff', '#f0f'], ['Red', 'Green', 'Blue', 'Yellow', 'Cyan', 'Magenta']),
|
|
'Background Colour': stringInSettings('backgroundColour', ['theme', '#000', '#fff'],['theme', 'Black', 'White']),
|
|
'Digital': {
|
|
value: !!settings.digital, // !! converts undefined to false
|
|
onchange: v => {
|
|
setSetting('digital', v);
|
|
},
|
|
},
|
|
'Show Widgets': {
|
|
value: !!settings.showWidgets,
|
|
onchange: v => {
|
|
setSetting('showWidgets', v);
|
|
},
|
|
},
|
|
'Show Battery': {
|
|
value: !!settings.showBattery,
|
|
onchange: v => {
|
|
setSetting('showBattery', v);
|
|
},
|
|
},
|
|
'Battery Colour': stringInSettings('batteryColour', ['#f00', '#0f0', '#00f', '#ff0', '#0ff', '#f0f'], ['Red', 'Green', 'Blue', 'Yellow', 'Cyan', 'Magenta']),
|
|
});
|
|
})
|