diff --git a/apps/loadingscreen/ChangeLog b/apps/loadingscreen/ChangeLog new file mode 100644 index 000000000..5560f00bc --- /dev/null +++ b/apps/loadingscreen/ChangeLog @@ -0,0 +1 @@ +0.01: New App! diff --git a/apps/loadingscreen/README.md b/apps/loadingscreen/README.md new file mode 100644 index 000000000..2d6128a53 --- /dev/null +++ b/apps/loadingscreen/README.md @@ -0,0 +1,15 @@ +# Loading Screen Settings + +This app allows you to choose the loading screen that's displayed when swapping between apps on Bangle.js. + +## Usage + +Go to the Launcher, then `Settings`, then `Apps` and click on `Loading Screen` - you can then click to choose the loading screen you'll see. + +## Internals + +When reloading an app (fast load doesn't display anything), Bangle.js looks for a file called `.loading` (in versions 2v18+) which should be +an image. If it doesn't exist, the default `Loading...` screen is displayed. If it does exist and is less than 3 bytes long, +nothing is displayed, or if it's an image it is displayed, centered. + +This app sets that image file accordingly, but you can always upload your own file. \ No newline at end of file diff --git a/apps/loadingscreen/app.png b/apps/loadingscreen/app.png new file mode 100644 index 000000000..f9f36d1fc Binary files /dev/null and b/apps/loadingscreen/app.png differ diff --git a/apps/loadingscreen/metadata.json b/apps/loadingscreen/metadata.json new file mode 100644 index 000000000..4d2327824 --- /dev/null +++ b/apps/loadingscreen/metadata.json @@ -0,0 +1,13 @@ +{ "id": "loadingscreen", + "name": "Loading Screen", + "version":"0.01", + "description": "On Bangle.js 2v18+, customize the app loading screen", + "icon": "app.png", + "tags": "tool", + "type": "settings", + "supports" : ["BANGLEJS2"], + "readme": "README.md", + "storage": [ + {"name":"loadingscreen.settings.js","url":"settings.js"} + ] +} diff --git a/apps/loadingscreen/settings.js b/apps/loadingscreen/settings.js new file mode 100644 index 000000000..8489423a2 --- /dev/null +++ b/apps/loadingscreen/settings.js @@ -0,0 +1,81 @@ +(function(back) { + function goBack() { + var im = require("Storage").read(".loading"); + if (im && im.length>3) { + var i = g.imageMetrics(im); + g.reset().drawImage(im, (g.getWidth()-i.width)/2, (g.getHeight()-i.height)/2); + } + setTimeout(back, 500); + } + + function savePattern(pattern) { + E.showMessage("Please wait..."); + var im = Graphics.createImage(pattern,"string"); + var w = g.getWidth(), h = g.getHeight(); + var b = Graphics.createArrayBuffer(w,h,1,{msb:true}); + for (var y=0;y {require("Storage").erase(".loading");goBack()}, + "No Screen" : () => {require("Storage").write(".loading","NO");goBack()}, // less than 3 chars and nothing is rendered + "Hourglass" : () => {require("Storage").write(".loading",iconHourglass());goBack()}, + "Retro" : () => {require("Storage").write(".loading",iconRetro());goBack()}, + "Stripes" : () => savePattern(` +XX..XX.. +.XX..XX. +..XX..XX +X..XX..X +XX..XX.. +.XX..XX. +..XX..XX +X..XX..X +`), + "Lines" : () => savePattern(` +XXXXXXXX +........ +XXXXXXXX +........ +XXXXXXXX +........ +XXXXXXXX +........ +`), + "Dots" : () => savePattern(` +...... +..XX.. +.XXXX. +.XXXX. +..XX.. +...... +`) + }); + + /* For testing, this generates an image with a different colour surrounding on it +require("FontSinclair").add(Graphics); +var b = Graphics.createArrayBuffer(84,12,2); +b.setBgColor(1).clear(); +b.transparent = 1; +b.setFont("Sinclair").setColor(0); +for (var y=-2;y<=2;y++) for (var x=-2;x<=2;x++) b.drawString("LOADING...",2+x,2+y); +b.setColor(3).drawString("LOADING...",2,2); +g.drawImage(b.asImage("string")); + */ + +}) \ No newline at end of file