diff --git a/apps/widbt/ChangeLog b/apps/widbt/ChangeLog index 4c2132122..55bdf4730 100644 --- a/apps/widbt/ChangeLog +++ b/apps/widbt/ChangeLog @@ -5,3 +5,4 @@ 0.06: Tweaking colors for dark/light themes and low bpp screens 0.07: Memory usage improvements 0.08: Disable LCD on, on bluetooth status change +0.09: Hide widget when disconnected (a setting) diff --git a/apps/widbt/app-icon.js b/apps/widbt/app-icon.js new file mode 100644 index 000000000..131db3a39 --- /dev/null +++ b/apps/widbt/app-icon.js @@ -0,0 +1 @@ +require("heatshrink").decompress(atob("mEwwMB/4AG/YFE/IFE/AFFv4FEn4FEj4FEg4FEgYFEHIn4oAFEsAqD/FwFQXx/F4h4FB+H4vgwC+F4vARC/E4uAdC/kYsAiC/0IoIvDgBBEwBNE4AuCAAPgL4nwNYgFFCIodFFIo1EIIpNFLIplF8BxEPoQFC/aJESo6hFVoq5FYorRFborpFeon5Aon7AogADA=")) diff --git a/apps/widbt/metadata.json b/apps/widbt/metadata.json index e2d5082a5..098d6a37e 100644 --- a/apps/widbt/metadata.json +++ b/apps/widbt/metadata.json @@ -1,13 +1,16 @@ { "id": "widbt", "name": "Bluetooth Widget", - "version": "0.08", + "version": "0.09", "description": "Show the current Bluetooth connection status in the top right of the clock", "icon": "widget.png", "type": "widget", "tags": "widget,bluetooth", "supports": ["BANGLEJS","BANGLEJS2"], "storage": [ - {"name":"widbt.wid.js","url":"widget.js"} - ] + {"name":"widbt.wid.js","url":"widget.js"}, + {"name":"widbt.settings.js","url":"settings.js"}, + {"name":"widbt.img","url":"app-icon.js","evaluate":true} + ], + "data": [{"name":"widbt.json"}] } diff --git a/apps/widbt/settings.js b/apps/widbt/settings.js new file mode 100644 index 000000000..0400a2eec --- /dev/null +++ b/apps/widbt/settings.js @@ -0,0 +1,22 @@ +(function(back) { + var FILE = "widbt.json"; + var settings = require('Storage').readJSON(FILE, true) || {}; + + function writeSettings() { + require('Storage').writeJSON(FILE, settings); + } + + E.showMenu({ + "" : { "title" : "Bluetooth Widget" }, + "< Back" : () => back(), + 'No conn. widget': { + value: !!settings.hideDisconnected, + format: v => v?"Hide":"Show", + onchange: v => { + settings.hideDisconnected = v; + writeSettings(); + if (WIDGETS.bluetooth) WIDGETS.bluetooth.changed(); + } + }, + }); +}) diff --git a/apps/widbt/widget.js b/apps/widbt/widget.js index c7ef8c0ad..24779c29d 100644 --- a/apps/widbt/widget.js +++ b/apps/widbt/widget.js @@ -1,12 +1,28 @@ -WIDGETS["bluetooth"]={area:"tr",width:15,draw:function() { +WIDGETS["bluetooth"]={area:"tr",draw:function() { + if (WIDGETS.bluetooth.width==0) + return; g.reset(); if (NRF.getSecurityStatus().connected) g.setColor((g.getBPP()>8) ? "#07f" : (g.theme.dark ? "#0ff" : "#00f")); else g.setColor(g.theme.dark ? "#666" : "#999"); g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="),2+this.x,2+this.y); +},getWidth:function(){ + if (!NRF.getSecurityStatus().connected) { + const settings = require('Storage').readJSON("widbt.json", true) || {}; + if (settings.hideDisconnected) + return 0; + } + return 15; },changed:function() { - WIDGETS["bluetooth"].draw(); + const newWidth = WIDGETS.bluetooth.getWidth(); + if (WIDGETS.bluetooth.width != newWidth) { + WIDGETS.bluetooth.width = newWidth; + Bangle.drawWidgets(); + } else { + WIDGETS.bluetooth.draw(); + } }}; -NRF.on('connect',WIDGETS["bluetooth"].changed); -NRF.on('disconnect',WIDGETS["bluetooth"].changed); +WIDGETS.bluetooth.width = WIDGETS.bluetooth.getWidth(); +NRF.on('connect',WIDGETS.bluetooth.changed); +NRF.on('disconnect',WIDGETS.bluetooth.changed);