Merge pull request #2283 from myxor/widsleepstatus_v0.02

Widsleepstatus v0.02
pull/2285/head
Gordon Williams 2022-11-16 11:20:46 +00:00 committed by GitHub
commit 86dedcaa43
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 26 deletions

View File

@ -1 +1,4 @@
0.01: First version 0.01: First version
0.02: Load settings only once
Better icons
Read sleep status on every draw

View File

@ -1,7 +1,7 @@
{ {
"id": "widsleepstatus", "id": "widsleepstatus",
"name": "Sleep Status Widget", "name": "Sleep Status Widget",
"version": "0.01", "version": "0.02",
"description": "Shows current status of sleep from sleeplog app.", "description": "Shows current status of sleep from sleeplog app.",
"icon": "widget.png", "icon": "widget.png",
"type": "widget", "type": "widget",

View File

@ -1,8 +1,8 @@
(function() { (function() {
if (!sleeplog) return; // sleeplog not installed if (!sleeplog) return;
const SETTINGS_FILE = 'widsleepstatus.json'; const SETTINGS_FILE = 'widsleepstatus.json';
let settings; let settings;
function loadSettings() { function loadSettings() {
settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {}; settings = require('Storage').readJSON(SETTINGS_FILE, 1) || {};
const DEFAULTS = { const DEFAULTS = {
@ -12,27 +12,38 @@
if (settings[k] === undefined) settings[k] = DEFAULTS[k]; if (settings[k] === undefined) settings[k] = DEFAULTS[k];
}); });
} }
loadSettings();
const status = sleeplog.status || 0; WIDGETS.sleepstatus = {
WIDGETS["sleepstatus"]={area:"tr",width:status >= 2 ? 24 : 0,draw:function(w) { 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(); g.reset();
// Icons from https://icons8.com/icon/set/household/small
switch (status) { switch (status) {
case 0: // unknown case 0:
case 1: // not worn case 1:
// No icon here. Width is set to 0
break; break;
case 2: // awake case 2: // awake
loadSettings(); if (settings && !settings["hidewhenawake"]) g.drawImage(atob("GBiBAAAAAAAAAAAMAAA+AAAjAAEjMAGyYAGeYAzAwB5/gB4/AB4jAB4jAB4jAB4jAB//+Bv/+Bg2GB+2+B+2eB42eAAAAAAAAAAAAA=="), w.x, w.y);
if (settings && !settings["hidewhenawake"]) g.drawImage(atob("GBjBAP//AAAAAAAAAAAADAAAPgAAIwABIzABsmABnmAMwMAef4AePwAeIwAeIwAeIwAeIwAf//gb//gYNhgftvgftngeNngAAAAAAAAAAAA="), w.x, w.y);
break; break;
case 3: // light sleep case 3: // light sleep
g.drawImage(atob("GBjBAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAABgAABgAABgAABnH/xnv/xlsARnsAZnMAZ///5gAAZgAAZgAAYAAAAAAAAAAAA="), w.x, w.y); g.drawImage(atob("GBiBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAGAAAGAAAGAAAGcf/Ge//GWwBGewBmcwBn///mAABmAABmAABgAAAAAAAAAAAA=="), w.x, w.y);
break; break;
case 4: // deep sleep case 4: // deep sleep
g.drawImage(atob("GBjBAP//AAAAAAAAAAAAAeAD8OAD8cAA4fABwAADgABj8ABgAABgAABgAABnH/xnv/xlsARnsAZnMAZ///5gAAZgAAZgAAYAAAAAAAAAAAA="), w.x, w.y); g.drawImage(atob("GBiBAAAAAAAAAAAB4APw4APxwADh8AHAAAOAAGPwAGAAAGAAAGAAAGcf/Ge//GWwBGewBmcwBn///mAABmAABmAABgAAAAAAAAAAAA=="), w.x, w.y);
break; break;
} }
}}; }
};
setInterval(()=>{
WIDGETS.sleepstatus.draw(WIDGETS.sleepstatus);
}, 60000);
Bangle.drawWidgets(); Bangle.drawWidgets();
})() })()