From 91e80cc3b2ba1d40145115c4f1ca372955308d1f Mon Sep 17 00:00:00 2001 From: Richard de Boer Date: Sun, 26 Jun 2022 00:03:29 +0200 Subject: [PATCH] barclock: add powerSave option, perform second updates in "ram" --- apps/barclock/ChangeLog | 1 + apps/barclock/README.md | 3 ++- apps/barclock/clock-bar.js | 25 +++++++++++++++++++------ apps/barclock/metadata.json | 2 +- apps/barclock/settings.js | 10 +++++++--- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/apps/barclock/ChangeLog b/apps/barclock/ChangeLog index ba44ecef8..a00ae9325 100644 --- a/apps/barclock/ChangeLog +++ b/apps/barclock/ChangeLog @@ -12,3 +12,4 @@ 0.12: Add settings to hide date,widgets 0.13: Add font setting 0.14: Use ClockFace_menu.addItems +0.15: Add Power saving option \ No newline at end of file diff --git a/apps/barclock/README.md b/apps/barclock/README.md index ff66a5cbb..28572e37c 100644 --- a/apps/barclock/README.md +++ b/apps/barclock/README.md @@ -7,4 +7,5 @@ A simple digital clock showing seconds as a horizontal bar. ## Settings * `Show date`: display date at the bottom of screen -* `Font`: choose between bitmap or vector fonts \ No newline at end of file +* `Font`: choose between bitmap or vector fonts +* `Power saving`: (Bangle.js 2 only) don't draw the seconds bar while the watch is locked \ No newline at end of file diff --git a/apps/barclock/clock-bar.js b/apps/barclock/clock-bar.js index 61ce07dfb..cb58f5609 100644 --- a/apps/barclock/clock-bar.js +++ b/apps/barclock/clock-bar.js @@ -14,12 +14,10 @@ let locale = require("locale"); } function renderBar(l) { - if (!this.fraction) { - // zero-size fillRect stills draws one line of pixels, we don't want that - return; - } - const width = this.fraction*l.w; - g.fillRect(l.x, l.y, l.x+width-1, l.y+l.height-1); + "ram"; + if (!this.fraction) return; // zero-size fillRect stills draws one line of pixels, we don't want that + if (this.powerSave && Bangle.isLocked()) return; + g.fillRect(l.x, l.y, l.x+this.fraction*l.w-1, l.y+l.height-1); } @@ -91,6 +89,7 @@ const ClockFace = require("ClockFace"), this.layout.update(); }, update: function(date, c) { + "ram"; if (c.m) this.layout.time.label = timeText(date); if (c.h) this.layout.ampm.label = ampmText(date); if (c.d && this.showDate) this.layout.date.label = dateText(date); @@ -102,4 +101,18 @@ const ClockFace = require("ClockFace"), this.layout.forgetLazyState(); }, }); +if (clock.powerSave) { + Bangle.on("lock", l => { + if (l) { + clock.precision = 60; + clock.tick(); + const l = clock.layout.bar; + setTimeout(() => g.clearRect(l.x, l.y, l.x+l.w-1, l.y+l.height-1), 100); + } else { + clock.precision = 1; + clock.tick(); + } + }); +} + clock.start(); diff --git a/apps/barclock/metadata.json b/apps/barclock/metadata.json index 0c227dc52..5b783dbda 100644 --- a/apps/barclock/metadata.json +++ b/apps/barclock/metadata.json @@ -1,7 +1,7 @@ { "id": "barclock", "name": "Bar Clock", - "version": "0.14", + "version": "0.15", "description": "A simple digital clock showing seconds as a bar", "icon": "clock-bar.png", "screenshots": [{"url":"screenshot.png"},{"url":"screenshot_pm.png"}], diff --git a/apps/barclock/settings.js b/apps/barclock/settings.js index dfe25581c..7b88b7021 100644 --- a/apps/barclock/settings.js +++ b/apps/barclock/settings.js @@ -17,10 +17,14 @@ onchange: v => save("font", v), }, }; - require("ClockFace_menu").addItems(menu, save, { + let items = { showDate: s.showDate, loadWidgets: s.loadWidgets, - }); - + }; + // Power saving for Bangle.js 1 doesn't make sense (no updates while screen is off anyway) + if (process.env.HWVERSION>1) { + items.powerSave = s.powerSave; + } + require("ClockFace_menu").addItems(menu, save, items); E.showMenu(menu); });