From f0304b5b43be5eafac2b9d4497a2c0190a964fb6 Mon Sep 17 00:00:00 2001 From: Dennis Kueper Date: Wed, 16 Aug 2023 08:44:25 +0200 Subject: [PATCH 1/5] Add settings to configure prompt --- apps/poweroff/ChangeLog | 1 + apps/poweroff/app.js | 11 ++++++--- apps/poweroff/metadata.json | 10 +++++--- apps/poweroff/settings.js | 46 +++++++++++++++++++++++++++++++++++++ 4 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 apps/poweroff/settings.js diff --git a/apps/poweroff/ChangeLog b/apps/poweroff/ChangeLog index 7ec3097bd..38e6128f6 100644 --- a/apps/poweroff/ChangeLog +++ b/apps/poweroff/ChangeLog @@ -1,2 +1,3 @@ 0.01: New app! 0.02: Add prompt before shutdown +0.03: Add settings to configure prompt diff --git a/apps/poweroff/app.js b/apps/poweroff/app.js index 98c9471ba..1c5ce59dc 100644 --- a/apps/poweroff/app.js +++ b/apps/poweroff/app.js @@ -1,14 +1,19 @@ g.clear(); -E.showPrompt('Are you sure?', { +let settings = require('Storage').readJSON("poweroff.json", true) || {}; +let showPrompt; +showPrompt = def(settings.showPrompt, true); + +if (showPrompt) { + E.showPrompt('Are you sure?', { title: 'Power off', buttons: { Yes: true, No: false }, -}).then((confirm) => { + }).then((confirm) => { if (!confirm) { setTimeout(load, 100); return; } - +} g.setFont("6x8",2).setFontAlign(0,0); var x = g.getWidth()/2; var y = g.getHeight()/2 + 10; diff --git a/apps/poweroff/metadata.json b/apps/poweroff/metadata.json index 673266691..254127935 100644 --- a/apps/poweroff/metadata.json +++ b/apps/poweroff/metadata.json @@ -1,7 +1,7 @@ { "id": "poweroff", "name": "Poweroff", "shortName":"Poweroff", -"version":"0.02", +"version":"0.03", "description": "Simple app to power off your Bangle.js", "icon": "app.png", "tags": "tool, poweroff, shutdown", @@ -10,6 +10,10 @@ "allow_emulator": true, "storage": [ {"name":"poweroff.app.js","url":"app.js"}, - {"name":"poweroff.img","url":"app-icon.js","evaluate":true} -] + {"name":"poweroff.img","url":"app-icon.js","evaluate":true}, + {"name":"poweroff.settings.js","url":"settings.js"} +], +"data": [ + {"name":"poweroff.json"} + ] } diff --git a/apps/poweroff/settings.js b/apps/poweroff/settings.js new file mode 100644 index 000000000..b0158855c --- /dev/null +++ b/apps/poweroff/settings.js @@ -0,0 +1,46 @@ +(function(back) { + var FILE = "poweroff.json"; + var settings = Object.assign({ + secondsOnUnlock: false, + }, require('Storage').readJSON(FILE, true) || {}); + + function writeSettings() { + require('Storage').writeJSON(FILE, settings); + } + + // Helper method which uses int-based menu item for set of string values + function stringItems(startvalue, writer, values) { + return { + value: (startvalue === undefined ? 0 : values.indexOf(startvalue)), + format: v => values[v], + min: 0, + max: values.length - 1, + wrap: true, + step: 1, + onchange: v => { + writer(values[v]); + writeSettings(); + } + }; + } + + // Helper method which breaks string set settings down to local settings object + function stringInSettings(name, values) { + return stringItems(settings[name], v => settings[name] = v, values); + } + + var mainmenu = { + "": { + "title": "Poweroff" + }, + "< Back": () => back(), + "Show prompt": { + value: (settings.showPrompt !== undefined ? settings.showPrompt : true), + onchange: v => { + settings.showPrompt = v; + writeSettings(); + } + } + }; + E.showMenu(mainmenu); +}); From c4ced443e087e14e96a0a4c45f3726a6d64b4a04 Mon Sep 17 00:00:00 2001 From: Dennis Kueper Date: Wed, 16 Aug 2023 08:46:54 +0200 Subject: [PATCH 2/5] Fix js --- apps/poweroff/app.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/poweroff/app.js b/apps/poweroff/app.js index 1c5ce59dc..019787d0e 100644 --- a/apps/poweroff/app.js +++ b/apps/poweroff/app.js @@ -1,3 +1,4 @@ +{ // must be inside our own scope here so that when we are unloaded everything disappears g.clear(); let settings = require('Storage').readJSON("poweroff.json", true) || {}; @@ -26,3 +27,4 @@ if (showPrompt) { Bangle.loadWidgets(); Bangle.drawWidgets(); +} \ No newline at end of file From 0fb770795fbbfd91d5af5f848ea179be960dda44 Mon Sep 17 00:00:00 2001 From: Dennis Kueper Date: Wed, 16 Aug 2023 08:53:17 +0200 Subject: [PATCH 3/5] fix --- apps/poweroff/app.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/apps/poweroff/app.js b/apps/poweroff/app.js index 019787d0e..6e7eee459 100644 --- a/apps/poweroff/app.js +++ b/apps/poweroff/app.js @@ -1,20 +1,22 @@ { // must be inside our own scope here so that when we are unloaded everything disappears g.clear(); +let confirm = false; let settings = require('Storage').readJSON("poweroff.json", true) || {}; let showPrompt; showPrompt = def(settings.showPrompt, true); -if (showPrompt) { - E.showPrompt('Are you sure?', { +E.showPrompt('Are you sure?', { title: 'Power off', buttons: { Yes: true, No: false }, - }).then((confirm) => { +}).then((confirm) => { if (!confirm) { setTimeout(load, 100); return; } -} +}); + +if (showPrompt && confirm) { g.setFont("6x8",2).setFontAlign(0,0); var x = g.getWidth()/2; var y = g.getHeight()/2 + 10; @@ -23,7 +25,7 @@ if (showPrompt) { setTimeout(function() { if (Bangle.softOff) Bangle.softOff(); else Bangle.off(); }, 1000); -}); +} Bangle.loadWidgets(); Bangle.drawWidgets(); From 8715e0df92517330bec75de95f67f5d48c47dbdb Mon Sep 17 00:00:00 2001 From: Dennis Kueper Date: Wed, 16 Aug 2023 09:06:18 +0200 Subject: [PATCH 4/5] fix --- apps/poweroff/app.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/poweroff/app.js b/apps/poweroff/app.js index 6e7eee459..b179cfb38 100644 --- a/apps/poweroff/app.js +++ b/apps/poweroff/app.js @@ -1,22 +1,25 @@ { // must be inside our own scope here so that when we are unloaded everything disappears g.clear(); -let confirm = false; +let confirmed = false; let settings = require('Storage').readJSON("poweroff.json", true) || {}; let showPrompt; showPrompt = def(settings.showPrompt, true); -E.showPrompt('Are you sure?', { +if (showPrompt) { + E.showPrompt('Are you sure?', { title: 'Power off', buttons: { Yes: true, No: false }, -}).then((confirm) => { + }).then((confirm) => { if (!confirm) { setTimeout(load, 100); + confirmed = true; return; } -}); + }); +} -if (showPrompt && confirm) { +if (!showPrompt || confirmed) { g.setFont("6x8",2).setFontAlign(0,0); var x = g.getWidth()/2; var y = g.getHeight()/2 + 10; From ef4ee7e478bedf8f3caec8d60c6c35dfbea4c852 Mon Sep 17 00:00:00 2001 From: Dennis Kueper Date: Wed, 16 Aug 2023 09:35:50 +0200 Subject: [PATCH 5/5] Not beautiful but finally working --- apps/poweroff/app.js | 18 ++++++++++++++---- apps/poweroff/settings.js | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/apps/poweroff/app.js b/apps/poweroff/app.js index b179cfb38..6e14b1a44 100644 --- a/apps/poweroff/app.js +++ b/apps/poweroff/app.js @@ -2,24 +2,34 @@ g.clear(); let confirmed = false; +// Helper function default setting +let def = function(value, def) { + return value !== undefined ? value : def; +}; let settings = require('Storage').readJSON("poweroff.json", true) || {}; let showPrompt; showPrompt = def(settings.showPrompt, true); if (showPrompt) { + Bangle.setLocked(false); // handy when debugging via IDE E.showPrompt('Are you sure?', { title: 'Power off', buttons: { Yes: true, No: false }, }).then((confirm) => { if (!confirm) { setTimeout(load, 100); - confirmed = true; return; } - }); -} + g.setFont("6x8",2).setFontAlign(0,0); + var x = g.getWidth()/2; + var y = g.getHeight()/2 + 10; + g.drawString("Powering off...", x, y); -if (!showPrompt || confirmed) { + setTimeout(function() { + if (Bangle.softOff) Bangle.softOff(); else Bangle.off(); + }, 1000); + }); +} else { g.setFont("6x8",2).setFontAlign(0,0); var x = g.getWidth()/2; var y = g.getHeight()/2 + 10; diff --git a/apps/poweroff/settings.js b/apps/poweroff/settings.js index b0158855c..b22a7918a 100644 --- a/apps/poweroff/settings.js +++ b/apps/poweroff/settings.js @@ -1,7 +1,7 @@ (function(back) { var FILE = "poweroff.json"; var settings = Object.assign({ - secondsOnUnlock: false, + showPrompt: true, }, require('Storage').readJSON(FILE, true) || {}); function writeSettings() {