diff --git a/apps/clockswitch/README.md b/apps/clockswitch/README.md new file mode 100644 index 000000000..74fa82b2f --- /dev/null +++ b/apps/clockswitch/README.md @@ -0,0 +1,14 @@ +# Clock Switcher + +This switches the default clock. +The idea is that you can use this app in combination with e.g. the +[Pattern Launcher](?q=ptlaunch) as a quick toggle, instead of navigating through +the settings menu. + +## Usage + +Load the app to switch to your next installed clock. + +## Creator + +Richard de Boer (rigrig) diff --git a/apps/clockswitch/app.js b/apps/clockswitch/app.js new file mode 100644 index 000000000..db738eb56 --- /dev/null +++ b/apps/clockswitch/app.js @@ -0,0 +1,23 @@ +const storage = require('Storage'); +const clocks = storage.list(/\.info$/) + .map(app => { + const a=storage.readJSON(app, 1); + return (a && a.type == "clock") ? a : undefined; + }) + .filter(app => app) // filter out any undefined apps + .sort((a, b) => a.sortorder - b.sortorder) + .map(app => app.src); +if (clocks.length<1) { + E.showAlert(/*LANG*/"No clocks found!", "Clock Switcher") + .then(load); +} else if (clocks.length<2) { + E.showAlert(/*LANG*/"Nothing to do:\nOnly one clock installed!", "Clock Switcher") + .then(load); +} else { + let settings = storage.readJSON('setting.json',true)||{clock:null}; + const old = clocks.indexOf(settings.clock), + next = (old+1)%clocks.length; + settings.clock = clocks[next]; + storage.writeJSON('setting.json', settings); + setTimeout(load, 100); // storage.writeJSON needs some time to complete +} diff --git a/apps/clockswitch/icon.js b/apps/clockswitch/icon.js new file mode 100644 index 000000000..8a85e4da5 --- /dev/null +++ b/apps/clockswitch/icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwxH+AClhCyoAYsIwuF4IwtF4Qxqw2GF4mG1YsqAAeF1eyAAIteFhAvHGLeGwouLR4IuEGDJcGwooBAweH6/X6wwGGKtbKownB640C1gGCAAQwZLgotDF4WG6wuFMZAuVw2yEgqLCABIuD1eGF6eGExYwLw4bCF1BuCDgWFdaGFRgwAJlb0HJogvPdQoAKq0AlYJG1YwDRr+sgEAL4wABwxgNF4ZeSqwLIMAYvNwpebAAOFSBgMCw7sQLxSQORwZLKLw4OLSBlbBgWyLznX2RfPLqBeM6/WcQYvZldbrYvN64jDF7rRNF7qPDGBqPLd6YxDGBTvQPpowQ1YvLGAeHF54wDlYMIwwvPwovQGAIuJ6+FdxSQF1YwRABKONF4mGF7aONAANbMDpeDRxRgFsOyFy+yP4gvLMAiRX6yNDwouMGDYuELxyRGwySS2QuUMAr0SdQguSGA+G1gtMLgguUGAQxFwuH1aWE2QsBwoQEFyzEHAB+FFzAwCMQoALFrRiRwwtefI5mCQwIslAH4A/AFw")) diff --git a/apps/clockswitch/icon.png b/apps/clockswitch/icon.png new file mode 100644 index 000000000..ac80cd84d Binary files /dev/null and b/apps/clockswitch/icon.png differ diff --git a/apps/clockswitch/metadata.json b/apps/clockswitch/metadata.json new file mode 100644 index 000000000..f13c4829e --- /dev/null +++ b/apps/clockswitch/metadata.json @@ -0,0 +1,14 @@ +{ "id": "clockswitch", + "name": "Clock Switcher", + "shortName":"Switch Clock", + "version":"0.01", + "description": "Switch to the next installed clock", + "icon": "icon.png", + "tags": "tool", + "supports": ["BANGLEJS","BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"clockswitch.app.js","url":"app.js"}, + {"name":"clockswitch.img","url":"icon.js","evaluate":true} + ] +}