Add lcd auto-on settings

pull/225/head
Simon Weis 2020-04-03 22:43:38 +02:00
parent fbce9aaa7c
commit a5a05baa56
5 changed files with 166 additions and 33 deletions

View File

@ -117,11 +117,12 @@
{ "id": "setting",
"name": "Settings",
"icon": "settings.png",
"version":"0.07",
"version":"0.08",
"description": "A menu for setting up Bangle.js",
"tags": "tool,system",
"storage": [
{"name":"setting.app.js","url":"settings.js"},
{"name":"setting.boot.js","url":"boot.js"},
{"name":"setting.json","url":"settings-default.json","evaluate":true},
{"name":"setting.img","url":"settings-icon.js","evaluate":true}
],

View File

@ -4,3 +4,4 @@
0.05: Fix Settings json
0.06: Remove distance setting as there's a separate app for Locale now
0.07: Added vibrate as beep workaround
0.08: Add auto-on settings

6
apps/setting/boot.js Normal file
View File

@ -0,0 +1,6 @@
(() => {
var settings = require('Storage').readJSON('setting.json', true);
if (settings != undefined) {
Bangle.setOptions(settings.options);
}
})()

View File

@ -10,4 +10,15 @@
clock: null, // a string for the default clock's name
"12hour" : false, // 12 or 24 hour clock?
// welcomed : undefined/true (whether welcome app should show)
options: {
wakeOnBTN1: true,
wakeOnBTN2: true,
wakeOnBTN3: true,
wakeOnFaceUp: false,
wakeOnTouch: false,
wakeOnTwist: true,
twistThreshold: 819.2,
twistMaxY: -800,
twistTimeout: 1000
}
}

View File

@ -9,6 +9,21 @@ function updateSettings() {
storage.write('setting.json', settings);
}
function updateOptions() {
updateSettings();
Bangle.setOptions(settings.options)
}
function gToInternal(g) {
// converts g to Espruino internal unit
return g * 8192;
}
function internalToG(u) {
// converts Espruino internal unit to g
return u / 8192
}
function resetSettings() {
settings = {
ble: true, // Bluetooth enabled by default
@ -22,6 +37,17 @@ function resetSettings() {
clock: null, // a string for the default clock's name
"12hour": false, // 12 or 24 hour clock?
// welcomed : undefined/true (whether welcome app should show)
options: {
wakeOnBTN1: true,
wakeOnBTN2: true,
wakeOnBTN3: true,
wakeOnFaceUp: false,
wakeOnTouch: false,
wakeOnTwist: true,
twistThreshold: 819.2,
twistMaxY: -800,
twistTimeout: 1000
}
};
updateSettings();
}
@ -34,6 +60,7 @@ const boolFormat = v => v ? "On" : "Off";
function showMainMenu() {
var beepV = [false, true, "vib"];
var beepN = ["Off", "Piezo", "Vibrate"];
var lcdSens = [""]
const mainmenu = {
'': { 'title': 'Settings' },
'Make Connectable': makeConnectable,
@ -114,6 +141,7 @@ function showMainMenu() {
}
},
'Set Time': showSetTimeMenu,
'Auto-On': showAutoOnMenu,
'Reset Settings': showResetMenu,
'Turn Off': Bangle.off,
'< Back': () => { load(); }
@ -121,6 +149,92 @@ function showMainMenu() {
return E.showMenu(mainmenu);
}
function showAutoOnMenu() {
const autoOnMenu = {
'': { 'title': 'Auto-On' },
'< Back': showMainMenu,
'Wake On BTN1': {
value: settings.options.wakeOnBTN1,
format: boolFormat,
onchange: () => {
settings.options.wakeOnBTN1 = !settings.options.wakeOnBTN1;
updateOptions();
}
},
'Wake On BTN2': {
value: settings.options.wakeOnBTN2,
format: boolFormat,
onchange: () => {
settings.options.wakeOnBTN2 = !settings.options.wakeOnBTN2;
updateOptions();
}
},
'Wake On BTN3': {
value: settings.options.wakeOnBTN3,
format: boolFormat,
onchange: () => {
settings.options.wakeOnBTN3 = !settings.options.wakeOnBTN3;
updateOptions();
}
},
'Wake on FaceUp': {
value: settings.options.wakeOnFaceUp,
format: boolFormat,
onchange: () => {
settings.options.wakeOnFaceUp = !settings.options.wakeOnFaceUp;
updateOptions();
}
},
'Wake on Touch': {
value: settings.options.wakeOnTouch,
format: boolFormat,
onchange: () => {
settings.options.wakeOnTouch = !settings.options.wakeOnTouch;
updateOptions();
}
},
'Wake On Twist': {
value: settings.options.wakeOnTwist,
format: boolFormat,
onchange: () => {
settings.options.wakeOnTwist = !settings.options.wakeOnTwist;
updateOptions();
}
},
'Twist Threshold': {
value: internalToG(settings.options.twistThreshold),
min: -0.5,
max: 0.5,
step: 0.01,
onchange: v => {
settings.options.twistThreshold = gToInternal(v || 0.1);
updateOptions();
}
},
'Twist Max Y': {
value: settings.options.twistMaxY,
min: -1500,
max: 1500,
step: 100,
onchange: v => {
settings.options.twistMaxY = v || -800;
updateOptions();
}
},
'Twist Timeout': {
value: settings.options.twistTimeout,
min: 0,
max: 2000,
step: 100,
onchange: v => {
settings.options.twistTimeout = v || 1000;
updateOptions();
}
}
}
return E.showMenu(autoOnMenu)
}
function showLocaleMenu() {
const localemenu = {
'': { 'title': 'Locale' },