From 3cc5c3f31dbc8667ec878a7294de302155e64a1a Mon Sep 17 00:00:00 2001 From: stweedo <108593831+stweedo@users.noreply.github.com> Date: Tue, 3 Sep 2024 00:20:29 -0500 Subject: [PATCH] Restore custom background function, fix clockbg usage, restore img linked in readme --- apps/boxclk/ChangeLog | 3 ++- apps/boxclk/app.js | 22 +++++++++++++++++++--- apps/boxclk/boxclk.space.img | Bin 0 -> 30979 bytes apps/boxclk/screenshot-2.png | Bin 3456 -> 7460 bytes 4 files changed, 21 insertions(+), 4 deletions(-) create mode 100644 apps/boxclk/boxclk.space.img diff --git a/apps/boxclk/ChangeLog b/apps/boxclk/ChangeLog index b78eba44c..f7ee41904 100644 --- a/apps/boxclk/ChangeLog +++ b/apps/boxclk/ChangeLog @@ -3,4 +3,5 @@ 0.03: Allows showing the month in short or long format by setting `"shortMonth"` to true or false 0.04: Improves touchscreen drag handling for background apps such as Pattern Launcher 0.05: Fixes step count not resetting after a new day starts -0.06 Added clockbackground app functionality +0.06: Added clockbackground app functionality +0.07: Allow custom backgrounds per boxclk config and from the clockbg module diff --git a/apps/boxclk/app.js b/apps/boxclk/app.js index 548062349..61edfde7b 100644 --- a/apps/boxclk/app.js +++ b/apps/boxclk/app.js @@ -10,6 +10,7 @@ let locale = require("locale"); let widgets = require("widget_utils"); let date = new Date(); + let bgImage; let configNumber = (storage.readJSON("boxclk.json", 1) || {}).selectedConfig || 0; let fileName = 'boxclk' + (configNumber > 0 ? `-${configNumber}` : '') + '.json'; // Add a condition to check if the file exists, if it does not, default to 'boxclk.json' @@ -71,6 +72,14 @@ * --------------------------------------------------------------- */ + for (let key in boxesConfig) { + if (key === 'bg' && boxesConfig[key].img) { + bgImage = storage.read(boxesConfig[key].img); + } else if (key !== 'selectedConfig') { + boxes[key] = Object.assign({}, boxesConfig[key]); + } + } + let boxKeys = Object.keys(boxes); boxKeys.forEach((key) => { @@ -211,14 +220,21 @@ */ let draw = (function() { - let updatePerMinute = true; // variable to track the state of time display + let updatePerMinute = true; return function(boxes) { date = new Date(); g.clear(); - background.fillRect(Bangle.appRect); + + // Always draw background for full screen + if (bgImage) { + g.drawImage(bgImage, 0, 0); + } else { + background.fillRect(0, 0, g.getWidth(), g.getHeight()); + } + if (boxes.time) { - boxes.time.string = modString(boxes.time, locale.time(date, isBool(boxes.time.short, true) ? 1 : 0)); + boxes.time.string = modString(boxes.time, locale.time(date, isBool(boxes.time.short, true) ? 1 : 0).trim()); updatePerMinute = isBool(boxes.time.short, true); } if (boxes.meridian) { diff --git a/apps/boxclk/boxclk.space.img b/apps/boxclk/boxclk.space.img new file mode 100644 index 0000000000000000000000000000000000000000..1708b5c24248a388661783f446bd86f5a2e4f715 GIT binary patch literal 30979 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
#uQBUgR~!7yO@#H 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