1
0
Fork 0
BangleApps/apps/edgeclk/settings.js

126 lines
3.2 KiB
JavaScript

(function(back) {
const SETTINGS_FILE = 'edgeclk.settings.json';
const storage = require('Storage');
const settings = {
buzzOnCharge: true,
monthFirst: true,
twentyFourH: true,
showAmPm: false,
showSeconds: true,
showWeather: false,
stepGoal: 10000,
stepBar: true,
weekBar: true,
mondayFirst: true,
dayBar: true,
};
const saved_settings = storage.readJSON(SETTINGS_FILE, true);
if (saved_settings) {
for (const key in saved_settings) {
if (!settings.hasOwnProperty(key)) continue;
settings[key] = saved_settings[key];
}
}
let save = function() {
storage.write(SETTINGS_FILE, settings);
}
E.showMenu({
'': { 'title': 'Edge Clock' },
'< Back': back,
'Charge Buzz': {
value: settings.buzzOnCharge,
onchange: () => {
settings.buzzOnCharge = !settings.buzzOnCharge;
save();
},
},
'Month First': {
value: settings.monthFirst,
onchange: () => {
settings.monthFirst = !settings.monthFirst;
save();
},
},
'24h Clock': {
value: settings.twentyFourH,
onchange: () => {
settings.twentyFourH = !settings.twentyFourH;
save();
},
},
'Show AM/PM': {
value: settings.showAmPm,
onchange: () => {
settings.showAmPm = !settings.showAmPm;
// TODO can this be visually changed?
if (settings.showAmPm && settings.showSeconds) settings.showSeconds = false;
if (settings.showAmPm && settings.showWeather) settings.showWeather = false;
save();
},
},
'Show Seconds': {
value: settings.showSeconds,
onchange: () => {
settings.showSeconds = !settings.showSeconds;
// TODO can this be visually changed?
if (settings.showSeconds && settings.showAmPm) settings.showAmPm = false;
if (settings.showSeconds && settings.showWeather) settings.showWeather = false;
save();
},
},
'Show Weather': {
value: settings.showWeather,
onchange: () => {
settings.showWeather = !settings.showWeather;
// TODO can this be visually changed?
if (settings.showWeather && settings.showAmPm) settings.showAmPm = false;
if (settings.showWeather && settings.showSeconds) settings.showSeconds = false;
save();
},
},
'Step Goal': {
value: settings.stepGoal,
min: 250,
max: 50000,
step: 250,
onchange: v => {
settings.stepGoal = v;
save();
}
},
'Step Progress': {
value: settings.stepBar,
onchange: () => {
settings.stepBar = !settings.stepBar;
save();
}
},
'Week Progress': {
value: settings.weekBar,
onchange: () => {
settings.weekBar = !settings.weekBar;
save();
},
},
'Week Start': {
value: settings.mondayFirst,
format: () => settings.mondayFirst ? 'Monday' : 'Sunday',
onchange: () => {
settings.mondayFirst = !settings.mondayFirst;
save();
},
},
'Day Progress': {
value: settings.dayBar,
onchange: () => {
settings.dayBar = !settings.dayBar;
save();
},
},
});
})