From 03f1f8cda0e67c561bc8102ff8cda90734a3b3a8 Mon Sep 17 00:00:00 2001 From: paul-arg <18153423+paul-arg@users.noreply.github.com> Date: Sun, 23 Jun 2024 22:54:16 +0200 Subject: [PATCH] elapsed_t: add setting to show seconds never/unlocked/always --- apps/elapsed_t/ChangeLog | 2 +- apps/elapsed_t/app.js | 48 +++++++++++++++----------------------- apps/elapsed_t/settings.js | 9 ++++--- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/apps/elapsed_t/ChangeLog b/apps/elapsed_t/ChangeLog index 193bb2413..26fbf5ff0 100644 --- a/apps/elapsed_t/ChangeLog +++ b/apps/elapsed_t/ChangeLog @@ -1,4 +1,4 @@ 0.01: New App! 0.02: Handle AM/PM time in the "set target" menu. Add yesterday/today/tomorrow when showing target date to improve readability. 0.03: Add option to set clock as default, handle DST in day/month/year mode -0.04: Use new pickers from more_pickers library +0.04: Use new pickers from the more_pickers library, add settings to display seconds never/unlocked/always diff --git a/apps/elapsed_t/app.js b/apps/elapsed_t/app.js index 246ae4465..08e2e145f 100644 --- a/apps/elapsed_t/app.js +++ b/apps/elapsed_t/app.js @@ -24,14 +24,12 @@ var now = new Date(); var settings = Object.assign({ // default values - displaySeconds: true, + displaySeconds: 1, displayMonthsYears: true, dateFormat: 0, time24: true }, require('Storage').readJSON(APP_NAME + ".settings.json", true) || {}); -var temp_displaySeconds = settings.displaySeconds; - var data = Object.assign({ // default values target: { @@ -118,15 +116,6 @@ function howManyDaysInMonth(month, year) { return new Date(year, month, 0).getDate(); } -function handleExceedingDay() { - var maxDays = howManyDaysInMonth(data.target.M, data.target.Y); - menu.Day.max = maxDays; - if (data.target.D > maxDays) { - menu.Day.value = maxDays; - data.target.D = maxDays; - } -} - function getDatePickerObject() { switch (settings.dateFormat) { case 0: @@ -248,7 +237,6 @@ function showMainMenu() { inMenu = false; Bangle.setUI("clock"); setTarget(false); - updateQueueMillis(settings.displaySeconds); draw(); }, 'Set clock as default': function () { @@ -307,7 +295,8 @@ var target; setTarget(data.target.isSet); var drawTimeout; -var queueMillis = 1000; +var temp_displaySeconds; +var queueMillis; function queueDraw() { if (drawTimeout) clearTimeout(drawTimeout); @@ -322,27 +311,25 @@ function queueDraw() { }, delay); } -function updateQueueMillis(displaySeconds) { +function updateQueueMillisAndDraw(displaySeconds) { + temp_displaySeconds = displaySeconds; if (displaySeconds) { queueMillis = 1000; } else { queueMillis = 60000; } + draw(); } Bangle.on('lock', function (on, reason) { - if (inMenu) { // if already in a menu, nothing to do + if (inMenu || settings.displaySeconds == 0 || settings.displaySeconds == 2) { // if already in a menu, or always/never show seconds, nothing to do return; } if (on) { // screen is locked - temp_displaySeconds = false; - updateQueueMillis(false); - draw(); + updateQueueMillisAndDraw(false); } else { // screen is unlocked - temp_displaySeconds = settings.displaySeconds; - updateQueueMillis(temp_displaySeconds); - draw(); + updateQueueMillisAndDraw(true); } }); @@ -532,11 +519,14 @@ Bangle.loadWidgets(); Bangle.drawWidgets(); Bangle.setUI("clock"); -if (Bangle.isBacklightOn()) { - temp_displaySeconds = settings.displaySeconds; - updateQueueMillis(temp_displaySeconds); -} else { - temp_displaySeconds = false; - updateQueueMillis(false); +switch (settings.displaySeconds) { + case 0: // never + updateQueueMillisAndDraw(false); + break; + case 1: // unlocked + updateQueueMillisAndDraw(Bangle.isBacklightOn()); + break; + case 2: // always + updateQueueMillisAndDraw(true); + break; } -draw(); diff --git a/apps/elapsed_t/settings.js b/apps/elapsed_t/settings.js index d3a7cb357..9b405986f 100644 --- a/apps/elapsed_t/settings.js +++ b/apps/elapsed_t/settings.js @@ -4,7 +4,7 @@ // Load settings var settings = Object.assign({ // default values - displaySeconds: true, + displaySeconds: 1, displayMonthsYears: true, dateFormat: 0, time24: true @@ -15,17 +15,20 @@ } var dateFormats = ["DD/MM/YYYY", "MM/DD/YYYY", "YYYY-MM-DD"]; + var displaySecondsFormats = ["Never", "Unlocked", "Always"]; // Show the menu E.showMenu({ "" : { "title" : "Elapsed Time" }, "< Back" : () => back(), 'Show\nseconds': { - value: !!settings.displaySeconds, + value: settings.displaySeconds, + min: 0, max: 2, wrap: true, onchange: v => { settings.displaySeconds = v; writeSettings(); - } + }, + format: function (v) {return displaySecondsFormats[v];} }, 'Show months/\nyears': { value: !!settings.displayMonthsYears,