From b39bd76770825c3b5f77313042569d295257a24b Mon Sep 17 00:00:00 2001 From: Gordon Williams Date: Thu, 18 May 2023 11:01:06 +0100 Subject: [PATCH] Added an app to adjust the loading screen --- apps/loadingscreen/ChangeLog | 1 + apps/loadingscreen/README.md | 15 ++++++ apps/loadingscreen/app.png | Bin 0 -> 773 bytes apps/loadingscreen/metadata.json | 13 +++++ apps/loadingscreen/settings.js | 81 +++++++++++++++++++++++++++++++ 5 files changed, 110 insertions(+) create mode 100644 apps/loadingscreen/ChangeLog create mode 100644 apps/loadingscreen/README.md create mode 100644 apps/loadingscreen/app.png create mode 100644 apps/loadingscreen/metadata.json create mode 100644 apps/loadingscreen/settings.js 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 0000000000000000000000000000000000000000..f9f36d1fc2ae6101682b5a94868d094ed166d926 GIT binary patch literal 773 zcmV+g1N!`lP)mQKhXcF`w zqToMhKyP9r3RVwQFQToPT}?4Tv%#V{1fzCllWk*iP(d5pWG3k+yKzF;re>F#&bI6e z?`28gd1t@*W@ZN=U%q^~QY;e8#-bq@h$Ep48ngxmA8mW!0j8rtZBX#j(coLOn~F>Z z;C~p&(mn_X-4g|g>;`#)valam-z9&^3|^P9*^O6ZOAy+Da_ z9rVQIZOW+;L|%|m+BktJTeIyj!I%#N+(MR13lZy?Z9Vv{korm4{N}OprG0dZ3zs_Z z!p8iCUh_eb3XhlhX*(3f*S5e5nj8te3lQ@!`9l6BpD$m&P)C0N&cm|XbPbj@00000NkvXXu0mjf D%3NWJ literal 0 HcmV?d00001 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