BangleApps/apps/widadjust/settings.js

120 lines
2.8 KiB
JavaScript
Raw Normal View History

2022-02-25 15:53:04 +00:00
(function(back) {
const SETTINGS_FILE = 'widadjust.json';
const STATE_FILE = 'widadjust.state';
const DEFAULT_ADJUST_THRESHOLD = 100;
let thresholdV = [ 10, 25, 50, 100, 250, 500, 1000 ];
const DEFAULT_UPDATE_INTERVAL = 60000;
let intervalV = [ 10000, 30000, 60000, 180000, 600000, 1800000, 3600000 ];
let intervalN = [ "10 s", "30 s", "1 m", "3 m", "10 m", "30 m", "1 h" ];
let stateFileErased = false;
let settings = Object.assign({
advanced: false,
saveState: true,
debugLog: false,
ppm: 0,
adjustThreshold: DEFAULT_ADJUST_THRESHOLD,
updateInterval: DEFAULT_UPDATE_INTERVAL,
}, require('Storage').readJSON(SETTINGS_FILE, true) || {});
if (thresholdV.indexOf(settings.adjustThreshold) == -1) {
settings.adjustThreshold = DEFAULT_ADJUST_THRESHOLD;
}
if (intervalV.indexOf(settings.updateInterval) == -1) {
settings.updateInterval = DEFAULT_UPDATE_INTERVAL;
}
function onPpmChange(v) {
settings.ppm = v;
mainMenu['PPM x 10' ].value = v;
mainMenu['PPM x 1' ].value = v;
mainMenu['PPM x 0.1'].value = v;
}
let mainMenu = {
'': { 'title' : 'Adjust Clock' },
'< Back': () => {
require('Storage').writeJSON(SETTINGS_FILE, settings);
back();
},
/*
// NOT FULLY WORKING YET
'Mode': {
value: settings.advanced,
format: v => v ? 'Advanced' : 'Basic',
onchange: () => {
settings.advanced = !settings.advanced;
}
},
*/
'PPM x 10' : {
value: settings.ppm,
format: v => v.toFixed(1),
step: 10,
onchange : onPpmChange,
},
'PPM x 1' : {
value: settings.ppm,
format: v => v.toFixed(1),
step: 1,
onchange : onPpmChange,
},
'PPM x 0.1' : {
value: settings.ppm,
format: v => v.toFixed(1),
step: 0.1,
onchange : onPpmChange,
},
'Update Interval': {
value: intervalV.indexOf(settings.updateInterval),
min: 0,
max: intervalV.length - 1,
format: v => intervalN[v],
onchange: v => settings.updateInterval = intervalV[v] ,
2022-02-25 15:53:04 +00:00
},
'Threshold': {
value: thresholdV.indexOf(settings.adjustThreshold),
min: 0,
max: thresholdV.length - 1,
format: v => thresholdV[v] + " ms",
onchange: v => {
settings.adjustThreshold = thresholdV[v];
},
},
'Save State': {
value: settings.saveState,
onchange: (v) => {
settings.saveState = v;
if (!v && !stateFileErased) {
2022-02-25 15:53:04 +00:00
stateFileErased = true;
require("Storage").erase(STATE_FILE);
}
},
},
'Debug Log': {
value: settings.debugLog,
onchange: v => settings.debugLog = v,
2022-02-25 15:53:04 +00:00
},
2024-02-13 06:49:06 +00:00
'Hide Widget': {
value: settings.hide || false,
onchange: v => settings.hide = v,
},
2022-02-25 15:53:04 +00:00
};
E.showMenu(mainMenu);
})