From 632a7ae2200fd42b89faa2b115b901bac9a3bd1a Mon Sep 17 00:00:00 2001 From: Richard de Boer Date: Fri, 22 Sep 2023 21:22:03 +0200 Subject: [PATCH] switchclock: new app: Clock Switcher --- apps/clockswitch/README.md | 14 ++++++++++++++ apps/clockswitch/app.js | 23 +++++++++++++++++++++++ apps/clockswitch/icon.js | 1 + apps/clockswitch/icon.png | Bin 0 -> 1556 bytes apps/clockswitch/metadata.json | 14 ++++++++++++++ 5 files changed, 52 insertions(+) create mode 100644 apps/clockswitch/README.md create mode 100644 apps/clockswitch/app.js create mode 100644 apps/clockswitch/icon.js create mode 100644 apps/clockswitch/icon.png create mode 100644 apps/clockswitch/metadata.json 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 0000000000000000000000000000000000000000..ac80cd84da36467c58d18ac538579762e6f7bb8d GIT binary patch literal 1556 zcmV+v2J88WP)zlfCfWs@CPO)P1@g0{8N8O8#80sQrsG< zVr`Q~t4WheX$*Zx*@3An)MrygnxOQdVryNkwmZ86NGXeeyTBqMh>u-lkya3QSst>x zuq>y!Q?)buU}tt_X-)i+^K0hZ`+fJGd(OER!=eC^CQf`@otl6>sUT?rNSe4#>R){k zdx8Z3NfWMo9sWM{1Pg$N_WuqkjYbo5(oAmo_R$NM z?3Y#m!2JK3H>T;LmX}}3zF1tnb~+eofBQoJ8Zg}@V0DtDVv*!jcXp;E`DzCbz|5I@IfIUpyz|E6lkE)KyBK7~;qd{QefS_W#BsZ{-Ua zwAzj9qDDMZlNocQar>1}1a~p7!|~?N;G*@XfNy8oi($-Thf&Wx7#z32?cvthgd7CW z#K=mXs#~>y)Z*uY5ihRFfO<;>c)Szv2wYLEeKh#PH{*j5_aO8-+d_yip6l(cTOixY zt7!bZKXFR00Or~^Fv%g#6>z9-3k;6k4*13wG7Sz_KlC`7gNl%4CrFw&I|^j z%^`{Xa%C?}PP;)U+}^Q(-C(*8Ls`QI?b68W@OA#=OAK3K#B~qkhS%qTJ0l%v<>B<@ z!pHL+Z{E2-BJ#Pqm!DP9_&r`Ry0AVf*I+rp6Hr>ewLiQ7Ez!w! z>UUn3Bp@Xvg%waxP$1gZdf&_wu)k)bTfh$BcCORJOfoccVo`4m zZ073f>YfQJAb2~yp7-hyZA|$*?3`Q<}B8Bq&9=}w{C0}uiO2p*E!=3or|4clt*i1V7+*SxJHZAl!yWxSy$?lHV zH^p|9J@z)Xw>f6|G@!zgoR~*pBiqUcLmo}MNz(XWFalDns8Z>xX!(2(HW#4IuUd@i zgnzM%#3-GD&GQkbN-01Uo1_V~fA1v3P;XP-l-(e@!bStA0nFE~eu>l(J5^fz3`yf1 zDlP6n*HctgcQNTR`)W42Q9qAbV$@X%Zp@zIDV_qG4Sxe*njZ_(*Ml1X0000