BangleApps/apps/settings.js

136 lines
2.8 KiB
JavaScript

Bangle.setLCDPower(1);
Bangle.setLCDTimeout(0);
g.clear();
const storage = require('Storage');
let settings;
function debug(msg, arg) {
if (settings.debug)
console.log(msg, arg);
}
function updateSettings() {
debug('updating settings', settings);
storage.erase('@settings');
storage.write('@settings', settings);
}
function resetSettings() {
settings = {
timeout: 10,
vibrate: true,
beep: true,
timezone: 0,
HID : false,
debug: false,
};
setLCDTimeout(settings.timeout);
updateSettings();
}
try {
settings = storage.readJSON('@settings');
} catch (e) {}
if (!settings) resetSettings();
const boolFormat = (v) => v ? "On" : "Off";
function showMainMenu() {
const mainmenu = {
'': { 'title': 'Settings' },
'LCD Timeout': {
value: settings.timeout,
min: 0,
max: 60,
step: 5,
onchange: v => {
settings.timeout = 0 | v;
updateSettings();
Bangle.setLCDTimeout(settings.timeout);
}
},
'Beep': {
value: settings.beep,
format: boolFormat,
onchange: () => {
settings.beep = !settings.beep;
updateSettings();
if (settings.beep) {
Bangle.beep(1);
}
}
},
'Vibration': {
value: settings.vibrate,
format: boolFormat,
onchange: () => {
settings.vibrate = !settings.vibrate;
updateSettings();
if (settings.vibrate) {
VIBRATE.write(1);
setTimeout(()=>VIBRATE.write(0), 10);
}
}
},
'Time Zone': {
value: settings.timezone,
min: -11,
max: 12,
step: 1,
onchange: v => {
settings.timezone = 0 | v;
updateSettings();
}
},
'HID': {
value: settings.HID,
format: boolFormat,
onchange: () => {
settings.HID = !settings.HID;
updateSettings();
}
},
'Debug': {
value: settings.debug,
format: boolFormat,
onchange: () => {
settings.debug = !settings.debug;
updateSettings();
}
},
'Reset': showResetMenu,
'Turn Off': Bangle.off,
'< Back': load
};
return Bangle.menu(mainmenu);
}
function showResetMenu() {
const resetmenu = {
'': { 'title': 'Reset' },
'< Back': showMainMenu,
'Reset Settings': () => {
E.showPrompt('Reset Settings?').then((v) => {
if (v) {
E.showMessage('Resetting');
resetSettings();
}
setTimeout(showMainMenu, 50);
});
},
// this is include for debugging. remove for production
/*'Erase': () => {
storage.erase('=settings');
storage.erase('-settings');
storage.erase('@settings');
storage.erase('*settings');
storage.erase('+settings');
E.reboot();
}*/
};
return Bangle.menu(resetmenu);
}
showMainMenu();