Convert Yes/No On/Off in settings to checkboxes, add /*LANG*/ to some more text strings

pull/2597/head
Gordon Williams 2023-02-23 11:46:49 +00:00
parent 8bc9c5de25
commit 0ba8cef33c
56 changed files with 106 additions and 136 deletions

View File

@ -3,3 +3,4 @@
0.03: Exit as first menu option, dont show decimal places for seconds 0.03: Exit as first menu option, dont show decimal places for seconds
0.04: Localisation, change Exit->Back to allow back-arrow to appear on 2v13 firmware 0.04: Localisation, change Exit->Back to allow back-arrow to appear on 2v13 firmware
0.05: Add max G values during recording, record actual G values and magnitude to CSV 0.05: Add max G values during recording, record actual G values and magnitude to CSV
0.06: Convert Yes/No On/Off in settings to checkboxes

View File

@ -26,8 +26,7 @@ function showMenu() {
viewLogs(); viewLogs();
}, },
/*LANG*/"Log raw data" : { /*LANG*/"Log raw data" : {
value : logRawData, value : !!logRawData,
format : v => v?/*LANG*/"Yes":/*LANG*/"No",
onchange : v => { logRawData=v; } onchange : v => { logRawData=v; }
}, },
}; };

View File

@ -2,7 +2,7 @@
"id": "accellog", "id": "accellog",
"name": "Acceleration Logger", "name": "Acceleration Logger",
"shortName": "Accel Log", "shortName": "Accel Log",
"version": "0.05", "version": "0.06",
"description": "Logs XYZ acceleration data to a CSV file that can be downloaded to your PC", "description": "Logs XYZ acceleration data to a CSV file that can be downloaded to your PC",
"icon": "app.png", "icon": "app.png",
"tags": "outdoor", "tags": "outdoor",

View File

@ -12,7 +12,7 @@
var mainmenu = { var mainmenu = {
"" : { "title" : "Android" }, "" : { "title" : "Android" },
"< Back" : back, "< Back" : back,
/*LANG*/"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" }, /*LANG*/"Connected" : { value : NRF.getSecurityStatus().connected?/*LANG*/"Yes":/*LANG*/"No" },
/*LANG*/"Find Phone" : () => E.showMenu({ /*LANG*/"Find Phone" : () => E.showMenu({
"" : { "title" : /*LANG*/"Find Phone" }, "" : { "title" : /*LANG*/"Find Phone" },
"< Back" : ()=>E.showMenu(mainmenu), "< Back" : ()=>E.showMenu(mainmenu),

View File

@ -96,7 +96,7 @@ function draw(){
if (!isNaN(bt.battery)) layout.btBattery.label = bt.battery + "%"; if (!isNaN(bt.battery)) layout.btBattery.label = bt.battery + "%";
if (bt.rr) layout.btRR.label = bt.rr.join(","); if (bt.rr) layout.btRR.label = bt.rr.join(",");
if (!isNaN(bt.location)) layout.btLocation.label = BODY_LOCS[bt.location]; if (!isNaN(bt.location)) layout.btLocation.label = BODY_LOCS[bt.location];
if (bt.contact !== undefined) layout.btContact.label = bt.contact ? "Yes":"No"; if (bt.contact !== undefined) layout.btContact.label = bt.contact ? /*LANG*/"Yes":/*LANG*/"No";
if (!isNaN(bt.energy)) layout.btEnergy.label = bt.energy.toFixed(0) + "kJ"; if (!isNaN(bt.energy)) layout.btEnergy.label = bt.energy.toFixed(0) + "kJ";
} else { } else {
layout.bt.label = "--"; layout.bt.label = "--";

View File

@ -4,3 +4,4 @@
0.04: Use default Bangle formatter for booleans 0.04: Use default Bangle formatter for booleans
0.05: Improved colors (connected vs disconnected) 0.05: Improved colors (connected vs disconnected)
0.06: Tell clock widgets to hide. 0.06: Tell clock widgets to hide.
0.07: Convert Yes/No On/Off in settings to checkboxes

View File

@ -1,7 +1,7 @@
{ {
"id": "clockcal", "id": "clockcal",
"name": "Clock & Calendar", "name": "Clock & Calendar",
"version": "0.06", "version": "0.07",
"description": "Clock with Calendar", "description": "Clock with Calendar",
"readme":"README.md", "readme":"README.md",
"icon": "app.png", "icon": "app.png",

View File

@ -16,7 +16,7 @@
actions = ["[ignore]","[calend.]","[AI:music]","[AI:messg]"]; actions = ["[ignore]","[calend.]","[AI:music]","[AI:messg]"];
require("Storage").list(RegExp(".app.js")).forEach(element => actions.push(element.replace(".app.js",""))); require("Storage").list(RegExp(".app.js")).forEach(element => actions.push(element.replace(".app.js","")));
function writeSettings() { function writeSettings() {
require('Storage').writeJSON(FILE, settings); require('Storage').writeJSON(FILE, settings);
} }
@ -106,18 +106,11 @@
writeSettings(); writeSettings();
} }
}, },
'Load deafauls?': { 'Load defaults': () => {
value: 0, settings = defaults;
min: 0, max: 1, writeSettings();
format: v => ["No", "Yes"][v], load();
onchange: v => { }
if (v == 1) {
settings = defaults;
writeSettings();
load();
}
}
},
}; };
// Show the menu // Show the menu
E.showMenu(menu); E.showMenu(menu);

View File

@ -6,3 +6,4 @@
0.06: Now read wheel rev as well as cadence sensor 0.06: Now read wheel rev as well as cadence sensor
Improve connection code Improve connection code
0.07: Make Bangle.js 2 compatible 0.07: Make Bangle.js 2 compatible
0.08: Convert Yes/No On/Off in settings to checkboxes

View File

@ -2,7 +2,7 @@
"id": "cscsensor", "id": "cscsensor",
"name": "Cycling speed sensor", "name": "Cycling speed sensor",
"shortName": "CSCSensor", "shortName": "CSCSensor",
"version": "0.07", "version": "0.08",
"description": "Read BLE enabled cycling speed and cadence sensor and display readings on watch", "description": "Read BLE enabled cycling speed and cadence sensor and display readings on watch",
"icon": "icons8-cycling-48.png", "icon": "icons8-cycling-48.png",
"tags": "outdoors,exercise,ble,bluetooth", "tags": "outdoors,exercise,ble,bluetooth",

View File

@ -23,17 +23,17 @@
} }
} }
const menu = { const menu = {
'': { 'title': 'Cycle speed sensor' }, '': { 'title': /*LANG*/'Cycle speed sensor' },
'< Back': back, '< Back': back,
'Wheel circ.(mm)': { /*LANG*/'Wheel circ.(mm)': {
value: s.wheelcirc, value: s.wheelcirc,
min: 800, min: 800,
max: 2400, max: 2400,
step: 5, step: 5,
onchange: save('wheelcirc'), onchange: save('wheelcirc'),
}, },
'Reset total distance': function() { /*LANG*/'Reset total distance': function() {
E.showPrompt("Zero total distance?", {buttons: {"No":false, "Yes":true}}).then(function(v) { E.showPrompt(/*LANG*/"Zero total distance?", {buttons: {/*LANG*/"No":false, /*LANG*/"Yes":true}}).then(function(v) {
if (v) { if (v) {
s['totaldist'] = 0; s['totaldist'] = 0;
storage.write(SETTINGS_FILE, s); storage.write(SETTINGS_FILE, s);

View File

@ -1,2 +1,3 @@
0.01: New App! 0.01: New App!
0.02: Add lightning 0.02: Add lightning
0.03: Convert Yes/No On/Off in settings to checkboxes

View File

@ -1,7 +1,7 @@
{ "id": "f9lander", { "id": "f9lander",
"name": "Falcon9 Lander", "name": "Falcon9 Lander",
"shortName":"F9lander", "shortName":"F9lander",
"version":"0.02", "version":"0.03",
"description": "Land a rocket booster", "description": "Land a rocket booster",
"icon": "f9lander.png", "icon": "f9lander.png",
"screenshots" : [ { "url":"f9lander_screenshot1.png" }, { "url":"f9lander_screenshot2.png" }, { "url":"f9lander_screenshot3.png" }], "screenshots" : [ { "url":"f9lander_screenshot1.png" }, { "url":"f9lander_screenshot2.png" }, { "url":"f9lander_screenshot3.png" }],

View File

@ -2,7 +2,6 @@
/** /**
* @param {function} back Use back() to return to settings menu * @param {function} back Use back() to return to settings menu
*/ */
const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off";
(function(back) { (function(back) {
const SETTINGS_FILE = 'f9settings.json' const SETTINGS_FILE = 'f9settings.json'
// initialize with default settings... // initialize with default settings...
@ -27,8 +26,7 @@ const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off";
'': { 'title': 'OpenWind' }, '': { 'title': 'OpenWind' },
'< Back': back, '< Back': back,
'Lightning': { 'Lightning': {
value: settings.lightning, value: !!settings.lightning,
format: boolFormat,
onchange: save('lightning'), onchange: save('lightning'),
} }
} }

View File

@ -7,7 +7,7 @@ var m;
var files; var files;
function delete_file(fn) { function delete_file(fn) {
E.showPrompt("Delete\n"+fn+"?", {buttons: {"No":false, "Yes":true}}).then(function(v) { E.showPrompt(/*LANG*/"Delete\n"+fn+"?", {buttons: {/*LANG*/"No":false, /*LANG*/"Yes":true}}).then(function(v) {
if (v) { if (v) {
if (fn.charCodeAt(fn.length-1)==1) { if (fn.charCodeAt(fn.length-1)==1) {
var fh = STOR.open(fn.substr(0, fn.length-1), "r"); var fh = STOR.open(fn.substr(0, fn.length-1), "r");

View File

@ -24,22 +24,22 @@
var mainmenu = { var mainmenu = {
"" : { "title" : "Gadgetbridge" }, "" : { "title" : "Gadgetbridge" },
"< Back" : back, "< Back" : back,
"Connected" : { value : NRF.getSecurityStatus().connected?"Yes":"No" }, /*LANG*/"Connected" : { value : NRF.getSecurityStatus().connected?/*LANG*/"Yes":/*LANG*/"No" },
"Show Icon" : { /*LANG*/"Show Icon" : {
value: settings().showIcon, value: settings().showIcon,
onchange: setIcon onchange: setIcon
}, },
"Find Phone" : function() { E.showMenu(findPhone); }, /*LANG*/"Find Phone" : function() { E.showMenu(findPhone); },
"Record HRM" : { /*LANG*/"Record HRM" : {
value: !!settings().hrm, value: !!settings().hrm,
onchange: v => updateSetting('hrm', v) onchange: v => updateSetting('hrm', v)
} }
}; };
var findPhone = { var findPhone = {
"" : { "title" : "-- Find Phone --" }, "" : { "title" : "-- Find Phone --" },
"On" : _=>gb({t:"findPhone",n:true}), /*LANG*/"On" : _=>gb({t:"findPhone",n:true}),
"Off" : _=>gb({t:"findPhone",n:false}), /*LANG*/"Off" : _=>gb({t:"findPhone",n:false}),
"< Back" : function() { E.showMenu(mainmenu); }, "< Back" : function() { E.showMenu(mainmenu); },
}; };

View File

@ -73,3 +73,5 @@
* Display current and next segment in red so that you know where to go. * Display current and next segment in red so that you know where to go.
* Avoid angles flickering at low speed at the cost of less refresh. * Avoid angles flickering at low speed at the cost of less refresh.
* Splash screen while waiting for gps signal. * Splash screen while waiting for gps signal.
0.17: Convert Yes/No On/Off in settings to checkboxes

View File

@ -2,7 +2,7 @@
"id": "gipy", "id": "gipy",
"name": "Gipy", "name": "Gipy",
"shortName": "Gipy", "shortName": "Gipy",
"version": "0.16", "version": "0.17",
"description": "Follow gpx files using the gps. Don't get lost in your bike trips and hikes.", "description": "Follow gpx files using the gps. Don't get lost in your bike trips and hikes.",
"allow_emulator":false, "allow_emulator":false,
"icon": "gipy.png", "icon": "gipy.png",

View File

@ -19,8 +19,7 @@
"< Back": () => back(), "< Back": () => back(),
"keep gps alive": { "keep gps alive": {
value: !!settings.keep_gps_alive, // !! converts undefined to false value: !!settings.keep_gps_alive, // !! converts undefined to false
format: (v) => (v ? "Yes" : "No"), onchange: v => {
onchange: (v) => {
settings.keep_gps_alive = v; settings.keep_gps_alive = v;
writeSettings(); writeSettings();
}, },

View File

@ -46,8 +46,8 @@ var mainMenu = {
"Reset Homework": function() { "Reset Homework": function() {
E.showPrompt("Are you sure you want to delete homework.txt?", { E.showPrompt("Are you sure you want to delete homework.txt?", {
buttons: { buttons: {
"No": false, /*LANG*/"No": false,
"Yes": true /*LANG*/"Yes": true
} }
}).then(function(v) { }).then(function(v) {
if (v) { if (v) {

View File

@ -21,11 +21,11 @@ var screens = [
name: "Hardware", name: "Hardware",
items: [ items: [
{name: "Battery", fun: () => E.getBattery() + "%"}, {name: "Battery", fun: () => E.getBattery() + "%"},
{name: "Charge?", fun: () => Bangle.isCharging() ? "Yes" : "No"}, {name: "Charge?", fun: () => Bangle.isCharging() ? /*LANG*/"Yes" : /*LANG*/"No"},
{name: "TempInt.", fun: () => locale.temp(parseInt(E.getTemperature()))}, {name: "TempInt.", fun: () => locale.temp(parseInt(E.getTemperature()))},
{name: "Bluetooth", fun: () => NRF.getSecurityStatus().connected ? "Conn" : "NoConn"}, {name: "Bluetooth", fun: () => NRF.getSecurityStatus().connected ? /*LANG*/"Conn" : /*LANG*/"NoConn"},
{name: "GPS", fun: () => Bangle.isGPSOn() ? "On" : "Off"}, {name: "GPS", fun: () => Bangle.isGPSOn() ? /*LANG*/"On" : /*LANG*/"Off"},
{name: "Compass", fun: () => Bangle.isCompassOn() ? "On" : "Off"}, {name: "Compass", fun: () => Bangle.isCompassOn() ? /*LANG*/"On" : /*LANG*/"Off"},
] ]
}, },
{ {
@ -160,4 +160,4 @@ Bangle.on('lock', function(isLocked) {
}); });
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.drawWidgets(); Bangle.drawWidgets();

View File

@ -1,2 +1,3 @@
0.01: New App! 0.01: New App!
0.02: Introduced settings to customize the layout and functionality of the keyboard. 0.02: Introduced settings to customize the layout and functionality of the keyboard.
0.03: Convert Yes/No On/Off in settings to checkboxes

View File

@ -1,6 +1,6 @@
{ "id": "kbtouch", { "id": "kbtouch",
"name": "Touch keyboard", "name": "Touch keyboard",
"version":"0.02", "version":"0.03",
"description": "A library for text input via onscreen keyboard", "description": "A library for text input via onscreen keyboard",
"icon": "app.png", "icon": "app.png",
"type":"textinput", "type":"textinput",

View File

@ -8,13 +8,13 @@
if (settings.speedScaling===undefined) settings.speedScaling=24; if (settings.speedScaling===undefined) settings.speedScaling=24;
return settings; return settings;
} }
function updateSetting(setting, value) { function updateSetting(setting, value) {
let settings = require('Storage').readJSON("kbtouch.settings.json", true) || {}; let settings = require('Storage').readJSON("kbtouch.settings.json", true) || {};
settings[setting] = value; settings[setting] = value;
require('Storage').writeJSON("kbtouch.settings.json", settings); require('Storage').writeJSON("kbtouch.settings.json", settings);
} }
var mainmenu = { var mainmenu = {
"" : { "title" : /*LANG*/"Touch Keyboard" }, "" : { "title" : /*LANG*/"Touch Keyboard" },
"< Back" : back, "< Back" : back,
@ -25,22 +25,16 @@
onchange: v => updateSetting("textSize", v) onchange: v => updateSetting("textSize", v)
}, },
/*LANG*/'Offset keyboard': { /*LANG*/'Offset keyboard': {
value: settings().offsetKeyboard, value: !!settings().offsetKeyboard,
min: 0, max: 1, onchange: v => updateSetting("offsetKeyboard", v?1:0)
format: v => [/*LANG*/"No",/*LANG*/"Yes"][v],
onchange: v => updateSetting("offsetKeyboard", v)
}, },
/*LANG*/'Loop around': { /*LANG*/'Loop around': {
value: settings().loopAround, value: !!settings().loopAround,
min: 0, max: 1, onchange: v => updateSetting("loopAround", v?1:0)
format: v => [/*LANG*/"No",/*LANG*/"Yes"][v],
onchange: v => updateSetting("loopAround", v)
}, },
/*LANG*/'One-to-one input and release to select': { /*LANG*/'One-to-one input and release to select': {
value: settings().oneToOne, value: !!settings().oneToOne,
min: 0, max: 1, onchange: v => updateSetting("oneToOne", v?1:0)
format: v => [/*LANG*/"No",/*LANG*/"Yes"][v],
onchange: v => updateSetting("oneToOne", v)
}, },
/*LANG*/'Speed scaling': { /*LANG*/'Speed scaling': {
value: settings().speedScaling, value: settings().speedScaling,
@ -49,10 +43,8 @@
onchange: v => updateSetting("speedScaling", v) onchange: v => updateSetting("speedScaling", v)
} }
///*LANG*/'Release to select': { ///*LANG*/'Release to select': {
// value: 1|settings().fontSize, // value: !!(1|settings().fontSize),
// min: 0, max: 1, // onchange: v => updateSetting("releaseToSelect", v?1:0)
// format: v => [/*LANG*/"No",/*LANG*/"Yes"][v],
// onchange: v => updateSetting("releaseToSelect", v)
//} //}
}; };
E.showMenu(mainmenu); E.showMenu(mainmenu);

View File

@ -73,7 +73,7 @@ let lastTemp = 0;
const phone = { const phone = {
get status() { get status() {
return NRF.getSecurityStatus().connected ? "Yes" : "No"; return NRF.getSecurityStatus().connected ? /*LANG*/"Yes" : /*LANG*/"No";
}, },
message: null, message: null,
messageTimeout: null, messageTimeout: null,

View File

@ -3,4 +3,5 @@
0.03: Optional show lock status via color 0.03: Optional show lock status via color
0.04: Ensure that widgets are always hidden in fullscreen mode 0.04: Ensure that widgets are always hidden in fullscreen mode
0.05: Better lock/unlock animation 0.05: Better lock/unlock animation
0.06: Use widget_utils. 0.06: Use widget_utils
0.07: Convert Yes/No On/Off in settings to checkboxes

View File

@ -2,7 +2,7 @@
"id": "neonx", "id": "neonx",
"name": "Neon X & IO X Clock", "name": "Neon X & IO X Clock",
"shortName": "Neon X Clock", "shortName": "Neon X Clock",
"version": "0.06", "version": "0.07",
"description": "Pebble Neon X & Neon IO X for Bangle.js", "description": "Pebble Neon X & Neon IO X for Bangle.js",
"icon": "neonx.png", "icon": "neonx.png",
"type": "clock", "type": "clock",

View File

@ -25,11 +25,9 @@
"" : { "title":"Neon X & IO"}, "" : { "title":"Neon X & IO"},
"< Back": back, "< Back": back,
"Neon IO X": { "Neon IO X": {
value: 0 | neonXSettings.io, value: !!neonXSettings.io,
min: 0, max: 1,
format: v => v ? "On" : "Off",
onchange: v => { onchange: v => {
neonXSettings.io = v; neonXSettings.io = v?1:0;
updateSettings(); updateSettings();
} }
}, },
@ -43,27 +41,23 @@
} }
}, },
"Date on touch": { "Date on touch": {
value: 0 | neonXSettings.showDate, value: !!neonXSettings.showDate,
min: 0, max: 1,
format: v => v ? "On" : "Off",
onchange: v => { onchange: v => {
neonXSettings.showDate = v; neonXSettings.showDate = v?1:0;
updateSettings(); updateSettings();
} }
}, },
'Fullscreen': { 'Fullscreen': {
value: false | neonXSettings.fullscreen, value: !!neonXSettings.fullscreen,
format: () => (neonXSettings.fullscreen ? 'Yes' : 'No'), onchange: v => {
onchange: () => { neonXSettings.fullscreen = v;
neonXSettings.fullscreen = !neonXSettings.fullscreen;
updateSettings(); updateSettings();
}, },
}, },
'Show lock': { 'Show lock': {
value: false | neonXSettings.showLock, value: !!neonXSettings.showLock,
format: () => (neonXSettings.showLock ? 'Yes' : 'No'), onchange: v => {
onchange: () => { neonXSettings.showLock = v;
neonXSettings.showLock = !neonXSettings.showLock;
updateSettings(); updateSettings();
}, },
}, },

View File

@ -7,4 +7,5 @@
0.07: Add date on touch and some improvements (see settings and readme) 0.07: Add date on touch and some improvements (see settings and readme)
0.08: Add new draw styles, tidy up draw functionality 0.08: Add new draw styles, tidy up draw functionality
0.09: Tweak for faster rendering 0.09: Tweak for faster rendering
0.10: Enhance for use with Bangle2, insert new draw mode 'thickfill' 0.10: Enhance for use with Bangle2, insert new draw mode 'thickfill'
0.11: Convert Yes/No On/Off in settings to checkboxes

View File

@ -2,7 +2,7 @@
"id": "numerals", "id": "numerals",
"name": "Numerals Clock", "name": "Numerals Clock",
"shortName": "Numerals Clock", "shortName": "Numerals Clock",
"version": "0.10", "version": "0.11",
"description": "A simple big numerals clock", "description": "A simple big numerals clock",
"icon": "numerals.png", "icon": "numerals.png",
"type": "clock", "type": "clock",

View File

@ -30,10 +30,8 @@
onchange: v=> { numeralsSettings.drawMode=dm[v]; updateSettings();} onchange: v=> { numeralsSettings.drawMode=dm[v]; updateSettings();}
}, },
"Date on touch": { "Date on touch": {
value: 0|numeralsSettings.showDate, value: !!numeralsSettings.showDate,
min:0,max:1, onchange: v=> { numeralsSettings.showDate=v?1:0; updateSettings();}
format: v=>v?"On":"Off",
onchange: v=> { numeralsSettings.showDate=v; updateSettings();}
}, },
"< back": back "< back": back
}; };

View File

@ -6,3 +6,4 @@
0.05: Add back button to settings menu. 0.05: Add back button to settings menu.
0.06: Allow logging of some things using power 0.06: Allow logging of some things using power
Add widget for live monitoring of power use Add widget for live monitoring of power use
0.07: Convert Yes/No On/Off in settings to checkboxes

View File

@ -2,7 +2,7 @@
"id": "powermanager", "id": "powermanager",
"name": "Power Manager", "name": "Power Manager",
"shortName": "Power Manager", "shortName": "Power Manager",
"version": "0.06", "version": "0.07",
"description": "Allow configuration of warnings and thresholds for battery charging and display.", "description": "Allow configuration of warnings and thresholds for battery charging and display.",
"icon": "app.png", "icon": "app.png",
"type": "bootloader", "type": "bootloader",

View File

@ -106,7 +106,6 @@
}, },
'Enabled': { 'Enabled': {
value: !!settings.warnEnabled, value: !!settings.warnEnabled,
format: v => settings.warnEnabled ? "On" : "Off",
onchange: v => { onchange: v => {
writeSettings("warnEnabled", v); writeSettings("warnEnabled", v);
} }

View File

@ -25,3 +25,4 @@
0.19: Fix track plotting code 0.19: Fix track plotting code
0.20: Automatic translation of some more strings. 0.20: Automatic translation of some more strings.
0.21: Speed report now uses speed units from locale 0.21: Speed report now uses speed units from locale
0.22: Convert Yes/No On/Off in settings to checkboxes

View File

@ -56,7 +56,6 @@ function showMainMenu() {
'< Back': ()=>{load();}, '< Back': ()=>{load();},
/*LANG*/'RECORD': { /*LANG*/'RECORD': {
value: !!settings.recording, value: !!settings.recording,
format: v=>v?/*LANG*/"On":/*LANG*/"Off",
onchange: v => { onchange: v => {
setTimeout(function() { setTimeout(function() {
E.showMenu(); E.showMenu();

View File

@ -2,7 +2,7 @@
"id": "recorder", "id": "recorder",
"name": "Recorder", "name": "Recorder",
"shortName": "Recorder", "shortName": "Recorder",
"version": "0.21", "version": "0.22",
"description": "Record GPS position, heart rate and more in the background, then download to your PC.", "description": "Record GPS position, heart rate and more in the background, then download to your PC.",
"icon": "app.png", "icon": "app.png",
"tags": "tool,outdoors,gps,widget", "tags": "tool,outdoors,gps,widget",

View File

@ -63,3 +63,4 @@
0.56: make System menu items shorter and more consistant, Eg 'Clock', intead 0.56: make System menu items shorter and more consistant, Eg 'Clock', intead
of 'Select Clock' of 'Select Clock'
0.57: Settings.log = 0,1,2,3 for off,display,log,both 0.57: Settings.log = 0,1,2,3 for off,display,log,both
0.58: On/Off settings items now use checkboxes

View File

@ -1,7 +1,7 @@
{ {
"id": "setting", "id": "setting",
"name": "Settings", "name": "Settings",
"version": "0.57", "version": "0.58",
"description": "A menu for setting up Bangle.js", "description": "A menu for setting up Bangle.js",
"icon": "settings.png", "icon": "settings.png",
"tags": "tool,system", "tags": "tool,system",

View File

@ -64,8 +64,6 @@ if (("object" != typeof settings) ||
("object" != typeof settings.options)) ("object" != typeof settings.options))
resetSettings(); resetSettings();
const boolFormat = v => v ? /*LANG*/"On" : /*LANG*/"Off";
function showMainMenu() { function showMainMenu() {
const mainmenu = { const mainmenu = {
@ -102,7 +100,6 @@ function showAlertsMenu() {
if (BANGLEJS2) { if (BANGLEJS2) {
beepMenuItem = { beepMenuItem = {
value: settings.beep!=false, value: settings.beep!=false,
format: boolFormat,
onchange: v => { onchange: v => {
settings.beep = v; settings.beep = v;
updateSettings(); updateSettings();
@ -134,7 +131,6 @@ function showAlertsMenu() {
/*LANG*/'Beep': beepMenuItem, /*LANG*/'Beep': beepMenuItem,
/*LANG*/'Vibration': { /*LANG*/'Vibration': {
value: settings.vibrate, value: settings.vibrate,
format: boolFormat,
onchange: () => { onchange: () => {
settings.vibrate = !settings.vibrate; settings.vibrate = !settings.vibrate;
updateSettings(); updateSettings();
@ -169,7 +165,6 @@ function showBLEMenu() {
/*LANG*/'Make Connectable': ()=>makeConnectable(), /*LANG*/'Make Connectable': ()=>makeConnectable(),
/*LANG*/'BLE': { /*LANG*/'BLE': {
value: settings.ble, value: settings.ble,
format: boolFormat,
onchange: () => { onchange: () => {
settings.ble = !settings.ble; settings.ble = !settings.ble;
updateSettings(); updateSettings();
@ -177,7 +172,6 @@ function showBLEMenu() {
}, },
/*LANG*/'Programmable': { /*LANG*/'Programmable': {
value: settings.blerepl, value: settings.blerepl,
format: boolFormat,
onchange: () => { onchange: () => {
settings.blerepl = !settings.blerepl; settings.blerepl = !settings.blerepl;
updateSettings(); updateSettings();
@ -428,7 +422,6 @@ function showLCDMenu() {
}, },
/*LANG*/'Wake on BTN1': { /*LANG*/'Wake on BTN1': {
value: settings.options.wakeOnBTN1, value: settings.options.wakeOnBTN1,
format: boolFormat,
onchange: () => { onchange: () => {
settings.options.wakeOnBTN1 = !settings.options.wakeOnBTN1; settings.options.wakeOnBTN1 = !settings.options.wakeOnBTN1;
updateOptions(); updateOptions();
@ -439,7 +432,6 @@ function showLCDMenu() {
Object.assign(lcdMenu, { Object.assign(lcdMenu, {
/*LANG*/'Wake on BTN2': { /*LANG*/'Wake on BTN2': {
value: settings.options.wakeOnBTN2, value: settings.options.wakeOnBTN2,
format: boolFormat,
onchange: () => { onchange: () => {
settings.options.wakeOnBTN2 = !settings.options.wakeOnBTN2; settings.options.wakeOnBTN2 = !settings.options.wakeOnBTN2;
updateOptions(); updateOptions();
@ -447,7 +439,6 @@ function showLCDMenu() {
}, },
/*LANG*/'Wake on BTN3': { /*LANG*/'Wake on BTN3': {
value: settings.options.wakeOnBTN3, value: settings.options.wakeOnBTN3,
format: boolFormat,
onchange: () => { onchange: () => {
settings.options.wakeOnBTN3 = !settings.options.wakeOnBTN3; settings.options.wakeOnBTN3 = !settings.options.wakeOnBTN3;
updateOptions(); updateOptions();
@ -456,7 +447,6 @@ function showLCDMenu() {
Object.assign(lcdMenu, { Object.assign(lcdMenu, {
/*LANG*/'Wake on FaceUp': { /*LANG*/'Wake on FaceUp': {
value: settings.options.wakeOnFaceUp, value: settings.options.wakeOnFaceUp,
format: boolFormat,
onchange: () => { onchange: () => {
settings.options.wakeOnFaceUp = !settings.options.wakeOnFaceUp; settings.options.wakeOnFaceUp = !settings.options.wakeOnFaceUp;
updateOptions(); updateOptions();
@ -464,7 +454,6 @@ function showLCDMenu() {
}, },
/*LANG*/'Wake on Touch': { /*LANG*/'Wake on Touch': {
value: settings.options.wakeOnTouch, value: settings.options.wakeOnTouch,
format: boolFormat,
onchange: () => { onchange: () => {
settings.options.wakeOnTouch = !settings.options.wakeOnTouch; settings.options.wakeOnTouch = !settings.options.wakeOnTouch;
updateOptions(); updateOptions();
@ -472,7 +461,6 @@ function showLCDMenu() {
}, },
/*LANG*/'Wake on Twist': { /*LANG*/'Wake on Twist': {
value: settings.options.wakeOnTwist, value: settings.options.wakeOnTwist,
format: boolFormat,
onchange: () => { onchange: () => {
settings.options.wakeOnTwist = !settings.options.wakeOnTwist; settings.options.wakeOnTwist = !settings.options.wakeOnTwist;
updateOptions(); updateOptions();

View File

@ -17,3 +17,4 @@
0.14: Reduce update interval of current time when seconds are not shown 0.14: Reduce update interval of current time when seconds are not shown
Limit logging on Bangle.js 1 to one day due to low memory Limit logging on Bangle.js 1 to one day due to low memory
Add plot logged data to settings Add plot logged data to settings
0.15: Convert Yes/No On/Off in settings to checkboxes

View File

@ -2,7 +2,7 @@
"id": "sleepphasealarm", "id": "sleepphasealarm",
"name": "SleepPhaseAlarm", "name": "SleepPhaseAlarm",
"shortName": "SleepPhaseAlarm", "shortName": "SleepPhaseAlarm",
"version": "0.14", "version": "0.15",
"description": "Uses the accelerometer to estimate sleep and wake states with the principle of Estimation of Stationary Sleep-segments (ESS, see https://ubicomp.eti.uni-siegen.de/home/datasets/ichi14/index.html.en). This app will read the next alarm from the alarm application and will wake you up to 30 minutes early at the best guessed time when you are almost already awake.", "description": "Uses the accelerometer to estimate sleep and wake states with the principle of Estimation of Stationary Sleep-segments (ESS, see https://ubicomp.eti.uni-siegen.de/home/datasets/ichi14/index.html.en). This app will read the next alarm from the alarm application and will wake you up to 30 minutes early at the best guessed time when you are almost already awake.",
"icon": "app.png", "icon": "app.png",
"tags": "tool,alarm", "tags": "tool,alarm",

View File

@ -91,7 +91,6 @@
"" : { "title" : "SleepPhaseAlarm" }, "" : { "title" : "SleepPhaseAlarm" },
'Keep alarm enabled': { 'Keep alarm enabled': {
value: !!config.settings.disableAlarm, value: !!config.settings.disableAlarm,
format: v => v?"No":"Yes",
onchange: v => { onchange: v => {
config.settings.disableAlarm = v; config.settings.disableAlarm = v;
writeSettings(); writeSettings();

View File

@ -9,3 +9,4 @@
0.09: Added button control toggle and other live controls to new settings screen. 0.09: Added button control toggle and other live controls to new settings screen.
0.10: Tell clock widgets to hide. 0.10: Tell clock widgets to hide.
0.11: Added new styling and watch faces 0.11: Added new styling and watch faces
0.12: Convert Yes/No On/Off in settings to checkboxes

View File

@ -1,7 +1,7 @@
{ {
"id": "slidingtext", "id": "slidingtext",
"name": "Sliding Clock", "name": "Sliding Clock",
"version": "0.11", "version": "0.12",
"description": "Inspired by the Pebble sliding clock, old times are scrolled off the screen and new times on. You are also able to change language on the fly so you can see the time written in other languages using button 1. Currently English, French, Japanese, Spanish and German are supported", "description": "Inspired by the Pebble sliding clock, old times are scrolled off the screen and new times on. You are also able to change language on the fly so you can see the time written in other languages using button 1. Currently English, French, Japanese, Spanish and German are supported",
"icon": "slidingtext.png", "icon": "slidingtext.png",
"screenshots": [{"url":"slidingtext-screenshot.english.png"},{"url":"slidingtext-screenshot.english2.png"},{"url":"slidingtext-screenshot.hybrid.png"}], "screenshots": [{"url":"slidingtext-screenshot.english.png"},{"url":"slidingtext-screenshot.english2.png"},{"url":"slidingtext-screenshot.hybrid.png"}],

View File

@ -173,12 +173,11 @@
"Colour": stringInSettings("color_scheme", ["black","white", "red","grey","purple","blue"]), "Colour": stringInSettings("color_scheme", ["black","white", "red","grey","purple","blue"]),
"Style": stringInSettings("date_format", locales, (l)=>locale_mappings[l] ), "Style": stringInSettings("date_format", locales, (l)=>locale_mappings[l] ),
"Live Control": { "Live Control": {
value: (settings.enable_live_controls !== undefined ? settings.enable_live_controls : true), value: (settings.enable_live_controls !== undefined ? !!settings.enable_live_controls : true),
format: v => v ? "On" : "Off",
onchange: v => { onchange: v => {
settings.enable_live_controls = v; settings.enable_live_controls = v;
writeSettings(); writeSettings();
} }
}, },
}); });
}) })

View File

@ -1,24 +1,24 @@
(function(back) { (function(back) {
let settings = require('Storage').readJSON('slomoclock.json',1)||{}; let settings = require('Storage').readJSON('slomoclock.json',1)||{};
function writeSettings() { function writeSettings() {
require('Storage').write('slomoclock.json',settings); require('Storage').write('slomoclock.json',settings);
} }
function setColour(c) { function setColour(c) {
settings.colour = c; settings.colour = c;
writeSettings(); writeSettings();
} }
const appMenu = { const appMenu = {
'': {'title': 'SloMo Clock'}, '': {'title': 'SloMo Clock'},
'< Back': back, '< Back': back,
'Colours' : function() { E.showMenu(colMenu); } 'Colours' : function() { E.showMenu(colMenu); }
//,'Widget Space Top' : {value : settings.widTop, format : v => v?"On":"Off",onchange : () => { settings.widTop = !settings.widTop; writeSettings(); } //,'Widget Space Top' : {value : settings.widTop, onchange : () => { settings.widTop = !settings.widTop; writeSettings(); }
//,'Widget Space Bottom' : {value : settings.widBot, format : v => v?"On":"Off",onchange : () => { settings.widBot = !settings.widBot; writeSettings(); } //,'Widget Space Bottom' : {value : settings.widBot, onchange : () => { settings.widBot = !settings.widBot; writeSettings(); }
}; };
const colMenu = { const colMenu = {
'': {'title': 'Colours'}, '': {'title': 'Colours'},
'< Back': function() { E.showMenu(appMenu); }, '< Back': function() { E.showMenu(appMenu); },
@ -32,7 +32,7 @@
'Violet' : function() { setColour(7); }, 'Violet' : function() { setColour(7); },
'White' : function() { setColour(8); } 'White' : function() { setColour(8); }
}; };
E.showMenu(appMenu); E.showMenu(appMenu);
}); });

View File

@ -6,3 +6,4 @@
0.06: Added adjustment for Bangle.js magnetometer heading fix 0.06: Added adjustment for Bangle.js magnetometer heading fix
0.07: Add settings file with the option to disable the slow direction updates 0.07: Add settings file with the option to disable the slow direction updates
0.08: Use tilt compensation from new magnav library 0.08: Use tilt compensation from new magnav library
0.09: Convert Yes/No On/Off in settings to checkboxes

View File

@ -1,7 +1,7 @@
{ {
"id": "waypointer", "id": "waypointer",
"name": "Way Pointer", "name": "Way Pointer",
"version": "0.08", "version": "0.09",
"description": "Navigate to a waypoint using the GPS for bearing and compass to point way, uses the same waypoint interface as GPS Navigation", "description": "Navigate to a waypoint using the GPS for bearing and compass to point way, uses the same waypoint interface as GPS Navigation",
"icon": "waypointer.png", "icon": "waypointer.png",
"tags": "tool,outdoors,gps", "tags": "tool,outdoors,gps",

View File

@ -15,7 +15,6 @@
"< Back" : () => back(), "< Back" : () => back(),
'Smooth arrow rot': { 'Smooth arrow rot': {
value: !!settings.smoothDirection, value: !!settings.smoothDirection,
format: v => v?"Yes":"No",
onchange: v => { onchange: v => {
settings.smoothDirection = v; settings.smoothDirection = v;
writeSettings(); writeSettings();

View File

@ -5,3 +5,4 @@
0.03: Fix Bell not appearing on alarms > 24h and redrawing interval 0.03: Fix Bell not appearing on alarms > 24h and redrawing interval
Update to match the default alarm widget, and not show itself when an alarm is hidden. Update to match the default alarm widget, and not show itself when an alarm is hidden.
0.04: Fix check for active alarm 0.04: Fix check for active alarm
0.05: Convert Yes/No On/Off in settings to checkboxes

View File

@ -2,7 +2,7 @@
"id": "widalarmeta", "id": "widalarmeta",
"name": "Alarm & Timer ETA", "name": "Alarm & Timer ETA",
"shortName": "Alarm ETA", "shortName": "Alarm ETA",
"version": "0.04", "version": "0.05",
"description": "A widget that displays the time to the next Alarm or Timer in hours and minutes, maximum 24h (configurable).", "description": "A widget that displays the time to the next Alarm or Timer in hours and minutes, maximum 24h (configurable).",
"icon": "widget.png", "icon": "widget.png",
"type": "widget", "type": "widget",

View File

@ -26,7 +26,6 @@
}, },
/*LANG*/'Draw bell': { /*LANG*/'Draw bell': {
value: !!settings.drawBell, value: !!settings.drawBell,
format: v => v?/*LANG*/"Yes":/*LANG*/"No",
onchange: v => { onchange: v => {
settings.drawBell = v; settings.drawBell = v;
writeSettings(); writeSettings();

View File

@ -1,2 +1,3 @@
0.01: Initial version 0.01: Initial version
0.02: Checks for correct firmware; E.setDST(...) moved to boot.js 0.02: Checks for correct firmware; E.setDST(...) moved to boot.js
0.03: Convert Yes/No On/Off in settings to checkboxes

View File

@ -1,6 +1,6 @@
{ "id": "widdst", { "id": "widdst",
"name": "Daylight Saving", "name": "Daylight Saving",
"version":"0.02", "version":"0.03",
"description": "Widget to set daylight saving rules. Requires Espruino 2v14.49 or later - see the instructions below for more information.", "description": "Widget to set daylight saving rules. Requires Espruino 2v14.49 or later - see the instructions below for more information.",
"icon": "icon.png", "icon": "icon.png",
"type": "widget", "type": "widget",

View File

@ -23,7 +23,7 @@
at: 2 at: 2
} }
}, require("Storage").readJSON("widdst.json", true) || {}); }, require("Storage").readJSON("widdst.json", true) || {});
var dst_start_end = { var dst_start_end = {
is_start: true, is_start: true,
day_offset: 0, day_offset: 0,
@ -32,11 +32,11 @@
month: 0, month: 0,
at: 0 at: 0
}; };
function writeSettings() { function writeSettings() {
require('Storage').writeJSON("widdst.json", settings); require('Storage').writeJSON("widdst.json", settings);
} }
function writeSubMenuSettings() { function writeSubMenuSettings() {
if (dst_start_end.is_start) { if (dst_start_end.is_start) {
settings.dst_start.day_offset = dst_start_end.day_offset; settings.dst_start.day_offset = dst_start_end.day_offset;
@ -53,11 +53,11 @@
} }
writeSettings(); writeSettings();
} }
function hoursToString(h) { function hoursToString(h) {
return (h|0) + ':' + (((6*h)%6)|0) + (((60*h)%10)|0); return (h|0) + ':' + (((6*h)%6)|0) + (((60*h)%10)|0);
} }
function getDSTStartEndMenu(start) { function getDSTStartEndMenu(start) {
dst_start_end.is_start = start; dst_start_end.is_start = start;
if (start) { if (start) {
@ -131,23 +131,21 @@
} }
} }
} }
var dstMenu = { var dstMenu = {
"": { "": {
"Title": /*LANG*/"Daylight Saving" "Title": /*LANG*/"Daylight Saving"
}, },
"< Back": () => back(), "< Back": () => back(),
/*LANG*/"Enabled": { /*LANG*/"Enabled": {
value: settings.has_dst, value: !!settings.has_dst,
format: v => v ? /*LANG*/"Yes" : /*LANG*/"No",
onchange: v => { onchange: v => {
settings.has_dst = v; settings.has_dst = v;
writeSettings(); writeSettings();
} }
}, },
/*LANG*/"Icon": { /*LANG*/"Icon": {
value: settings.show_icon, value: !!settings.show_icon,
format: v => v ? /*LANG*/"Yes" : /*LANG*/"No",
onchange: v => { onchange: v => {
settings.show_icon = v; settings.show_icon = v;
writeSettings(); writeSettings();
@ -178,7 +176,7 @@
/*LANG*/"DST Start": () => E.showMenu(getDSTStartEndMenu(true)), /*LANG*/"DST Start": () => E.showMenu(getDSTStartEndMenu(true)),
/*LANG*/"DST End": () => E.showMenu(getDSTStartEndMenu(false)) /*LANG*/"DST End": () => E.showMenu(getDSTStartEndMenu(false))
}; };
E.showMenu(dstMenu); E.showMenu(dstMenu);
}); });