gbridge: Fix setting to show/hide icon

Don't reload all widgets: just change this one and redraw
master
Richard de Boer 2020-05-29 00:05:26 +02:00
parent 631abb812e
commit fa692c4d8e
2 changed files with 23 additions and 14 deletions

View File

@ -13,7 +13,9 @@
function toggleIcon() {
settings.showIcon = !settings.showIcon;
updateSettings();
Bangle.loadWidgets();
// need to re-layout widgets
WIDGETS["gbridgew"].reload();
g.clear();
Bangle.drawWidgets();
}
var mainmenu = {
@ -35,5 +37,5 @@
"< Back" : function() { E.showMenu(mainmenu); },
};
E.showMenu(mainmenu);
const menu = E.showMenu(mainmenu);
})

View File

@ -1,5 +1,6 @@
(() => {
const storage = require('Storage');
let settings;
const state = {
music: "stop",
@ -13,10 +14,6 @@
scrollPos: 0
};
let settings = storage.readJSON('gbridge.json',1) || {};
if (!("showIcon" in settings)) {
settings.showIcon = true;
}
function gbSend(message) {
Bluetooth.println("");
@ -186,6 +183,7 @@
});
function draw() {
if (!settings.showIcon) return;
g.setColor(-1);
if (NRF.getSecurityStatus().connected)
g.drawImage(require("heatshrink").decompress(atob("i0WwgHExAABCIwJCBYwJEBYkIBQ2ACgvzCwoECx/z/AKDD4WD+YLBEIYKCx//+cvnAKCBwU/mc4/8/HYv//Ev+Y4EEAePn43DBQkzn4rCEIoABBIwKHO4cjmczK42I6mqlqEEBQeIBQaDED4IgDUhi6KaBbmIA==")), this.x + 1, this.y + 1);
@ -198,16 +196,25 @@
g.flip(); // turns screen on
}
if (settings.showIcon) {
WIDGETS["gbridgew"] = {area: "tl", width: 24, draw: draw};
NRF.on("connect", changedConnectionState);
NRF.on("disconnect", changedConnectionState);
} else {
NRF.removeListener("connect", changedConnectionState);
NRF.removeListener("disconnect", changedConnectionState);
delete WIDGETS["gbridgew"];
function reload() {
settings = storage.readJSON('gbridge.json', 1) || {};
if (!("showIcon" in settings)) {
settings.showIcon = true;
}
if (settings.showIcon) {
WIDGETS["gbridgew"].width = 24;
NRF.on("connect", changedConnectionState);
NRF.on("disconnect", changedConnectionState);
} else {
WIDGETS["gbridgew"].width = 0;
NRF.removeListener("connect", changedConnectionState);
NRF.removeListener("disconnect", changedConnectionState);
}
}
WIDGETS["gbridgew"] = {area: "tl", width: 24, draw: draw, reload: reload};
reload();
function sendBattery() {
gbSend({ t: "status", bat: E.getBattery() });
}