From e09baafafae6da2e63d76d9b01f1c399749f8d42 Mon Sep 17 00:00:00 2001 From: David Peer Date: Fri, 17 Dec 2021 16:24:05 +0100 Subject: [PATCH] Set settings for each row --- apps.json | 5 +-- apps/lcars/lcars.app.js | 70 +++++++++++++++++++++++++++--------- apps/lcars/lcars.settings.js | 54 ++++++++++++++++++++++++++++ 3 files changed, 110 insertions(+), 19 deletions(-) create mode 100644 apps/lcars/lcars.settings.js diff --git a/apps.json b/apps.json index c379a1de4..1148f41c4 100644 --- a/apps.json +++ b/apps.json @@ -4495,7 +4495,8 @@ "screenshots": [{"url":"screenshot.png"}], "storage": [ {"name":"lcars.app.js","url":"lcars.app.js"}, - {"name":"lcars.img","url":"lcars.icon.js","evaluate":true} + {"name":"lcars.img","url":"lcars.icon.js","evaluate":true}, + {"name":"lcars.settings.js","url":"lcars.settings.js"} ] }, { "id": "binwatch", @@ -4981,7 +4982,7 @@ "description": "Displays the image file in showimage.user.img. Returns to watch face after 60s or button push. I use it to display my vaccination certificate.", "icon": "app.png", "tags": "tool", - "supports" : ["BANGLEJS2"], + "supports" : ["BANGLEJS2"], "storage": [ {"name":"showimg.app.js","url":"app.js"}, {"name":"showimg.img","url":"app-icon.js","evaluate":true} diff --git a/apps/lcars/lcars.app.js b/apps/lcars/lcars.app.js index 8ac01d90c..859e999a5 100644 --- a/apps/lcars/lcars.app.js +++ b/apps/lcars/lcars.app.js @@ -1,8 +1,21 @@ -const filename = "lcars.setting.json"; +const SETTINGS_FILE = "lcars.setting.json"; const Storage = require("Storage"); -let settings = Storage.readJSON(filename,1) || { + + +// ...and overwrite them with any saved values +// This way saved values are preserved if a new version adds more settings +const storage = require('Storage') +let settings = { alarm: -1, + dataRow1: "Battery", + dataRow2: "Steps", + dataRow3: "Temp." }; +let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; +for (const key in saved_settings) { + settings[key] = saved_settings[key] +} +let hrmValue = 0; /* * Requirements and globals @@ -95,6 +108,33 @@ function queueDraw() { } +function printData(key, y){ + g.setFontAlign(-1,-1,0); + + if(key == "Battery"){ + var bat = E.getBattery(); + g.drawString("BAT:", 30, y); + g.drawString(bat+ "%", 68, y); + + } else if(key == "Steps"){ + var steps = getSteps(); + g.drawString("STEP:", 30, y); + g.drawString(steps, 68, y); + + } else if(key == "Temp."){ + var temperature = Math.floor(E.getTemperature()); + g.drawString("TEMP:", 30, y); + g.drawString(temperature + "C", 69, y); + + } else if(key == "HRM"){ + g.drawString("HRM:", 30, y); + g.drawString(hrmValue, 69, y); + + } else { + g.drawString("NOT FOUND", 30, y); + } +} + function draw(){ // First handle alarm to show this correctly afterwards @@ -147,19 +187,9 @@ function draw(){ g.drawString(dayName, 100, 55); // Draw battery - g.drawString("BAT:", 30, 98); - g.drawString(bat+ "%", 68, 98); - - // Draw steps - var steps = getSteps(); - g.drawString("STEP:", 30, 121); - g.drawString(steps, 68, 121); - - // Temperature - var temperature = Math.floor(E.getTemperature()); - g.setFontAlign(-1,-1,0); - g.drawString("TEMP:", 30, 144); - g.drawString(temperature + "C", 69, 144); + printData(settings.dataRow1, 98); + printData(settings.dataRow2, 121); + printData(settings.dataRow3, 144); // Queue draw in one minute queueDraw(); @@ -183,6 +213,12 @@ function stepsWidget() { return undefined; } +/* + * HRM Listener + */ +Bangle.on('HRM', function (hrm) { + hrmValue = hrm.bpm; +}); /* * Handle alarm @@ -221,7 +257,7 @@ function handleAlarm(){ // Update alarm state to disabled settings.alarm = -1; - Storage.writeJSON(filename, settings); + Storage.writeJSON(SETTINGS_FILE, settings); } @@ -251,7 +287,7 @@ Bangle.on('swipe',function(dir) { draw(); // Update alarm state - Storage.writeJSON(filename, settings); + Storage.writeJSON(SETTINGS_FILE, settings); }); diff --git a/apps/lcars/lcars.settings.js b/apps/lcars/lcars.settings.js new file mode 100644 index 000000000..f449c8fc7 --- /dev/null +++ b/apps/lcars/lcars.settings.js @@ -0,0 +1,54 @@ +(function(back) { + const SETTINGS_FILE = "lcars.setting.json"; + + // initialize with default settings... + const storage = require('Storage') + let settings = { + alarm: -1, + dataRow1: "Battery", + dataRow2: "Steps", + dataRow3: "Temp." + }; + let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; + for (const key in saved_settings) { + settings[key] = saved_settings[key] + } + + function save() { + storage.write(SETTINGS_FILE, settings) + } + + var data_options = ['Battery', 'Steps', 'Temp.', "HRM"]; + + E.showMenu({ + '': { 'title': 'Rebble Clock' }, + '< Back': back, + 'Row 1': { + value: 0 | data_options.indexOf(settings.dataRow1), + min: 0, max: 3, + format: v => data_options[v], + onchange: v => { + settings.dataRow1 = data_options[v]; + save(); + }, + }, + 'Row 2': { + value: 0 | data_options.indexOf(settings.dataRow2), + min: 0, max: 3, + format: v => data_options[v], + onchange: v => { + settings.dataRow2 = data_options[v]; + save(); + }, + }, + 'Row 3': { + value: 0 | data_options.indexOf(settings.dataRow3), + min: 0, max: 3, + format: v => data_options[v], + onchange: v => { + settings.dataRow3 = data_options[v]; + save(); + }, + } + }); +})