BangleApps/apps/widbt_notify/widget.js

79 lines
2.5 KiB
JavaScript

{
// load settings
let settings = Object.assign({
showWidget: true,
buzzOnConnect: true,
buzzOnLoss: true,
hideConnected: true,
showMessage: true,
nextBuzz: 30000
}, require("Storage").readJSON("widbt_notify.json", true) || {});
// setup widget with to hide if connected and option set
let widWidth = settings.hideConnected && NRF.getSecurityStatus().connected ? 0 : 15;
// write widget with loaded settings
WIDGETS.bluetooth_notify = Object.assign(settings, {
// set area and width
area: "tr",
width: widWidth,
// setup warning status
warningEnabled: 1,
draw: function() {
if (this.showWidget) {
g.reset();
if (NRF.getSecurityStatus().connected) {
if (!this.hideConnected) {
g.setColor((g.getBPP() > 8) ? "#07f" : (g.theme.dark ? "#0ff" : "#00f"));
g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="), 2 + this.x, 2 + this.y);
}
} else {
// g.setColor(g.theme.dark ? "#666" : "#999");
g.setColor("#f00"); // red is easier to distinguish from blue
g.drawImage(atob("CxQBBgDgFgJgR4jZMawfAcA4D4NYybEYIwTAsBwDAA=="), 2 + this.x, 2 + this.y);
}
}
},
onNRF: function(connect) {
// setup widget with and reload widgets to show/hide if hideConnected is enabled
if (this.hideConnected) {
this.width = connect ? 0 : 15; // ensures correct redraw
Bangle.drawWidgets();
} else {
// redraw widget
this.draw();
}
if (this.warningEnabled) {
if (this.showMessage) {
require("notify").show({id:"widbtnotify", title:"Bluetooth", body:/*LANG*/ 'Connection\n' + (connect ? /*LANG*/ 'restored.' : /*LANG*/ 'lost.')});
setTimeout(() => {
require("notify").hide({id:"widbtnotify"});
}, 3000);
}
this.warningEnabled = 0;
setTimeout('WIDGETS.bluetooth_notify.warningEnabled = 1;', this.nextBuzz); // don't buzz for the next X seconds.
var quiet = (require('Storage').readJSON('setting.json', 1) || {}).quiet;
if (!quiet && (connect ? this.buzzOnConnect : this.buzzOnLoss)) {
Bangle.buzz(700, 1); // buzz on connection resume or loss
}
}
}
});
// clear variables
settings = undefined;
widWidth = undefined;
// setup bluetooth connection events
NRF.on('connect', (addr) => WIDGETS.bluetooth_notify.onNRF(addr));
NRF.on('disconnect', () => WIDGETS.bluetooth_notify.onNRF());
}