From a8ad6d94a1517748155caa37c626bce252405a64 Mon Sep 17 00:00:00 2001 From: Marco H Date: Wed, 16 Nov 2022 11:50:56 +0100 Subject: [PATCH 1/2] Update widget.js * Load settings only once * Better icons * Read sleep status on every draw --- apps/widsleepstatus/widget.js | 61 +++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 25 deletions(-) diff --git a/apps/widsleepstatus/widget.js b/apps/widsleepstatus/widget.js index f2ec28451..3d7360905 100644 --- a/apps/widsleepstatus/widget.js +++ b/apps/widsleepstatus/widget.js @@ -1,38 +1,49 @@ -(function(){ - if (!sleeplog) return; // sleeplog not installed - +(function() { + if (!sleeplog) return; const SETTINGS_FILE = 'widsleepstatus.json'; let settings; + function loadSettings() { settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {}; const DEFAULTS = { 'hidewhenawake': true }; - Object.keys(DEFAULTS).forEach(k=>{ - if (settings[k]===undefined) settings[k]=DEFAULTS[k]; + Object.keys(DEFAULTS).forEach(k => { + if (settings[k] === undefined) settings[k] = DEFAULTS[k]; }); } + loadSettings(); - const status = sleeplog.status || 0; - WIDGETS["sleepstatus"]={area:"tr",width:status >= 2 ? 24 : 0,draw:function(w) { - g.reset(); - // Icons from https://icons8.com/icon/set/household/small - switch (status) { - case 0: // unknown - case 1: // not worn - // No icon here. Width is set to 0 - break; - case 2: // awake - loadSettings(); - if (settings && !settings["hidewhenawake"]) g.drawImage(atob("GBjBAP//AAAAAAAAAAAADAAAPgAAIwABIzABsmABnmAMwMAef4AePwAeIwAeIwAeIwAeIwAf//gb//gYNhgftvgftngeNngAAAAAAAAAAAA="), w.x, w.y); - break; - case 3: // light sleep - g.drawImage(atob("GBjBAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAABgAABgAABgAABnH/xnv/xlsARnsAZnMAZ///5gAAZgAAZgAAYAAAAAAAAAAAA="), w.x, w.y); - break; - case 4: // deep sleep - g.drawImage(atob("GBjBAP//AAAAAAAAAAAAAeAD8OAD8cAA4fABwAADgABj8ABgAABgAABgAABnH/xnv/xlsARnsAZnMAZ///5gAAZgAAZgAAYAAAAAAAAAAAA="), w.x, w.y); - break; + WIDGETS.sleepstatus = { + area: "tr", + width: 0, + draw: function(w) { + let status = sleeplog.status || 0; + if (w.width != (status >= 2 ? 24 : 0)){ + w.width = status >= 2 ? 24 : 0; + return Bangle.drawWidgets(); + } + g.reset(); + switch (status) { + case 0: + case 1: + break; + case 2: // awake + if (settings && !settings["hidewhenawake"]) g.drawImage(atob("GBiBAf////////////j///h///p///h//////5///5h//5h//5J//5JgA5JAA5tP+5vP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y); + break; + case 3: // light sleep + g.drawImage(atob("GBiBAf///////////////////////////////5///5///5///5///5jgA5hAA5pP+5hP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y); + break; + case 4: // deep sleep + g.drawImage(atob("GBiBAf/////////+H/wPH/wOP/8eD/4///x//5wP/5///5///5///5jgA5hAA5pP+5hP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y); + break; + } } - }}; + }; + + setInterval(()=>{ + WIDGETS.sleepstatus.draw(WIDGETS.sleepstatus); + }, 60000); + Bangle.drawWidgets(); })() From 325f57af4812ccfb271641274d9f333849846b04 Mon Sep 17 00:00:00 2001 From: Marco H Date: Wed, 16 Nov 2022 12:03:50 +0100 Subject: [PATCH 2/2] Fix icons and bump version --- apps/widsleepstatus/ChangeLog | 3 +++ apps/widsleepstatus/metadata.json | 2 +- apps/widsleepstatus/widget.js | 8 ++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/apps/widsleepstatus/ChangeLog b/apps/widsleepstatus/ChangeLog index 7f837e50e..bb17be181 100644 --- a/apps/widsleepstatus/ChangeLog +++ b/apps/widsleepstatus/ChangeLog @@ -1 +1,4 @@ 0.01: First version +0.02: Load settings only once + Better icons + Read sleep status on every draw diff --git a/apps/widsleepstatus/metadata.json b/apps/widsleepstatus/metadata.json index 3b4caa93f..bd0e5d537 100644 --- a/apps/widsleepstatus/metadata.json +++ b/apps/widsleepstatus/metadata.json @@ -1,7 +1,7 @@ { "id": "widsleepstatus", "name": "Sleep Status Widget", - "version": "0.01", + "version": "0.02", "description": "Shows current status of sleep from sleeplog app.", "icon": "widget.png", "type": "widget", diff --git a/apps/widsleepstatus/widget.js b/apps/widsleepstatus/widget.js index 3d7360905..82a058993 100644 --- a/apps/widsleepstatus/widget.js +++ b/apps/widsleepstatus/widget.js @@ -29,13 +29,13 @@ case 1: break; case 2: // awake - if (settings && !settings["hidewhenawake"]) g.drawImage(atob("GBiBAf////////////j///h///p///h//////5///5h//5h//5J//5JgA5JAA5tP+5vP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y); + if (settings && !settings["hidewhenawake"]) g.drawImage(atob("GBiBAAAAAAAAAAAMAAA+AAAjAAEjMAGyYAGeYAzAwB5/gB4/AB4jAB4jAB4jAB4jAB//+Bv/+Bg2GB+2+B+2eB42eAAAAAAAAAAAAA=="), w.x, w.y); break; case 3: // light sleep - g.drawImage(atob("GBiBAf///////////////////////////////5///5///5///5///5jgA5hAA5pP+5hP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y); + g.drawImage(atob("GBiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAGAAAGAAAGAAAGcf/Ge//GWwBGewBmcwBn///mAABmAABmAABgAAAAAAAAAAAA=="), w.x, w.y); break; case 4: // deep sleep - g.drawImage(atob("GBiBAf/////////+H/wPH/wOP/8eD/4///x//5wP/5///5///5///5jgA5hAA5pP+5hP+ZjP+YAAAZ//+Z//+Z//+f///////////w=="), w.x, w.y); + g.drawImage(atob("GBiBAAAAAAAAAAAB4APw4APxwADh8AHAAAOAAGPwAGAAAGAAAGAAAGcf/Ge//GWwBGewBmcwBn///mAABmAABmAABgAAAAAAAAAAAA=="), w.x, w.y); break; } } @@ -44,6 +44,6 @@ setInterval(()=>{ WIDGETS.sleepstatus.draw(WIDGETS.sleepstatus); }, 60000); - + Bangle.drawWidgets(); })()