diff --git a/apps/widlockunlock/metadata.json b/apps/widlockunlock/metadata.json index cc4fa76cd..daeefbc69 100644 --- a/apps/widlockunlock/metadata.json +++ b/apps/widlockunlock/metadata.json @@ -8,6 +8,7 @@ "tags": "widget,lock", "supports": ["BANGLEJS","BANGLEJS2"], "storage": [ - {"name":"widlockunlock.wid.js","url":"widget.js"} + {"name":"widlockunlock.wid.js","url":"widget.js"}, + {"name":"widlockunlock.settings.js","url":"settings.js"} ] } diff --git a/apps/widlockunlock/settings.js b/apps/widlockunlock/settings.js new file mode 100644 index 000000000..0c3a82c39 --- /dev/null +++ b/apps/widlockunlock/settings.js @@ -0,0 +1,29 @@ +"use strict"; +(function (back) { + var storage = require('Storage'); + var filename = 'lockunlock.settings.json'; + var settings = Object.assign(storage.readJSON(filename, true) || {}, { location: "tl" }); + var save = function () { + return storage.writeJSON(filename, settings); + }; + var locations = ["tl", "tr"]; + var menu = { + '': { 'title': 'Lock/Unlock' }, + '< Back': back, + 'Location': { + value: (function () { + var i = locations.indexOf(settings.location); + return i < 0 ? 0 : i; + })(), + min: 0, + max: locations.length - 1, + wrap: true, + format: function (v) { return locations[v]; }, + onchange: function (v) { + settings.location = locations[v]; + save(); + }, + }, + }; + E.showMenu(menu); +}); diff --git a/apps/widlockunlock/settings.ts b/apps/widlockunlock/settings.ts new file mode 100644 index 000000000..b2b1dc02e --- /dev/null +++ b/apps/widlockunlock/settings.ts @@ -0,0 +1,39 @@ +((back: () => void) => { + type Location = "tl" | "tr"; + type Settings = { + location: Location; + }; + + const storage = require('Storage'); + + const filename = 'lockunlock.settings.json'; + const settings: Settings = Object.assign( + storage.readJSON(filename, true) || {}, + { location: "tl" } + ); + + const save = () => + storage.writeJSON(filename, settings); + + const locations: Array = [ "tl", "tr" ]; + + const menu = { + '': { 'title': 'Lock/Unlock' }, + '< Back': back, + 'Location': { + value: (() => { + const i = locations.indexOf(settings.location); + return i < 0 ? 0 : i; + })(), + min: 0, + max: locations.length - 1, + wrap: true, + format: (v: number) => locations[v]!, + onchange: (v: number) => { + settings.location = locations[v]!; + save(); + }, + }, + }; + E.showMenu(menu); +}); diff --git a/apps/widlockunlock/widget.js b/apps/widlockunlock/widget.js index 21461b4a5..f7f872a5e 100644 --- a/apps/widlockunlock/widget.js +++ b/apps/widlockunlock/widget.js @@ -1,5 +1,9 @@ WIDGETS["lockunlock"] = { - area: "tl", + area: (() => { + const settings = require("Storage") + .readJSON("lockunlock.settings.json", true) || {}; + return settings.location || "tl"; + })(), sortorder: 10, width: 14, draw: w => {