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); +});