messagesoverlay - Add settings for using lower memory colors
parent
979178035a
commit
09140ebcfa
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
This app handles the display of messages and message notifications as an overlay pop up.
|
This app handles the display of messages and message notifications as an overlay pop up.
|
||||||
|
|
||||||
It is a GUI replacement for the `messages` apps.
|
It is a GUI replacement for the `messagesgui` app.
|
||||||
|
|
||||||
Messages are ephemeral and not stored on the Bangle.
|
Messages are ephemeral and not stored on the Bangle.
|
||||||
|
|
||||||
|
|
@ -10,6 +10,10 @@ Messages are ephemeral and not stored on the Bangle.
|
||||||
|
|
||||||
Close app by tapping the X and scroll by swiping. The border of the pop up changes color if the Bangle is locked. The color depends on your currently active theme.
|
Close app by tapping the X and scroll by swiping. The border of the pop up changes color if the Bangle is locked. The color depends on your currently active theme.
|
||||||
|
|
||||||
|
## Theme support
|
||||||
|
|
||||||
|
Using the system theme needs more RAM since it uses a 16 bit color buffer for normal message display. Selecting the "low RAM" theme reduces that to a 4 bit buffer.
|
||||||
|
|
||||||
## Low memory mode
|
## Low memory mode
|
||||||
|
|
||||||
If free memory is below a configured number of blocks (default is 4000), the overlay automatically only uses 1 bit depth. Default mode uses roundabout 1300 blocks, while low memory mode uses about 600.
|
If free memory is below a configured number of blocks (default is 4000), the overlay automatically only uses 1 bit depth. Default mode uses roundabout 1300 blocks, while low memory mode uses about 600.
|
||||||
|
|
|
||||||
|
|
@ -2,5 +2,6 @@
|
||||||
"autoclear": 30,
|
"autoclear": 30,
|
||||||
"border": 10,
|
"border": 10,
|
||||||
"minfreemem": 2,
|
"minfreemem": 2,
|
||||||
"lowmem": 4
|
"lowmem": 4,
|
||||||
|
"systemTheme": true
|
||||||
}
|
}
|
||||||
|
|
@ -126,6 +126,7 @@ const roundedRect = function(x,y,w,h,filled){
|
||||||
const DIVIDER = 38;
|
const DIVIDER = 38;
|
||||||
|
|
||||||
const drawScreen = function(title, src, iconcolor, icon){
|
const drawScreen = function(title, src, iconcolor, icon){
|
||||||
|
setColors(true);
|
||||||
ovr.clearRect(2,2,ovr.getWidth()-3, DIVIDER - 1);
|
ovr.clearRect(2,2,ovr.getWidth()-3, DIVIDER - 1);
|
||||||
|
|
||||||
ovr.setFont(settings.fontSmall);
|
ovr.setFont(settings.fontSmall);
|
||||||
|
|
@ -135,6 +136,8 @@ const drawScreen = function(title, src, iconcolor, icon){
|
||||||
|
|
||||||
const w = ovr.getWidth() - 35 - 26;
|
const w = ovr.getWidth() - 35 - 26;
|
||||||
|
|
||||||
|
drawBorder();
|
||||||
|
|
||||||
if (title)
|
if (title)
|
||||||
drawTitle(title, textCenter, w, 8, DIVIDER - 8, 0);
|
drawTitle(title, textCenter, w, 8, DIVIDER - 8, 0);
|
||||||
|
|
||||||
|
|
@ -200,19 +203,21 @@ const drawTitle = function(title, center, w, y, h) {
|
||||||
ovr.drawString(title, center, dh);
|
ovr.drawString(title, center, dh);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const setColors = function(lockRelevant) {
|
||||||
|
if (lockRelevant && !Bangle.isLocked()){
|
||||||
|
ovr.setColor(ovr.theme.fg2);
|
||||||
|
ovr.setBgColor(ovr.theme.bg2);
|
||||||
|
} else {
|
||||||
|
ovr.setColor(ovr.theme.fg);
|
||||||
|
ovr.setBgColor(ovr.theme.bg);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
const showMessage = function(msg) {
|
const showMessage = function(msg) {
|
||||||
LOG("showMessage");
|
LOG("showMessage");
|
||||||
|
|
||||||
ovr.setClipRect(0,0,ovr.getWidth(),ovr.getHeight());
|
ovr.setClipRect(0,0,ovr.getWidth(),ovr.getHeight());
|
||||||
|
|
||||||
if (Bangle.isLocked()){
|
|
||||||
ovr.setColor(ovr.theme.fg);
|
|
||||||
ovr.setBgColor(ovr.theme.bg);
|
|
||||||
} else {
|
|
||||||
ovr.setColor(ovr.theme.fg2);
|
|
||||||
ovr.setBgColor(ovr.theme.bg2);
|
|
||||||
}
|
|
||||||
|
|
||||||
drawScreen(msg.title, msg.src || /*LANG*/ "Message", require("messageicons").getColor(msg), require("messageicons").getImage(msg));
|
drawScreen(msg.title, msg.src || /*LANG*/ "Message", require("messageicons").getColor(msg), require("messageicons").getImage(msg));
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -235,13 +240,7 @@ const showMessage = function(msg) {
|
||||||
|
|
||||||
const drawBorder = function() {
|
const drawBorder = function() {
|
||||||
LOG("drawBorder", isQuiet());
|
LOG("drawBorder", isQuiet());
|
||||||
if (Bangle.isLocked()){
|
setColors();
|
||||||
ovr.setColor(ovr.theme.fg);
|
|
||||||
ovr.setBgColor(ovr.theme.bg);
|
|
||||||
} else {
|
|
||||||
ovr.setColor(ovr.theme.fg2);
|
|
||||||
ovr.setBgColor(ovr.theme.bg2);
|
|
||||||
}
|
|
||||||
ovr.drawRect(0,0,ovr.getWidth()-1,ovr.getHeight()-1);
|
ovr.drawRect(0,0,ovr.getWidth()-1,ovr.getHeight()-1);
|
||||||
ovr.drawRect(1,1,ovr.getWidth()-2,ovr.getHeight()-2);
|
ovr.drawRect(1,1,ovr.getWidth()-2,ovr.getHeight()-2);
|
||||||
ovr.drawRect(2,DIVIDER,ovr.getWidth()-2,DIVIDER+1);
|
ovr.drawRect(2,DIVIDER,ovr.getWidth()-2,DIVIDER+1);
|
||||||
|
|
@ -333,6 +332,7 @@ const scrollDown = function() {
|
||||||
};
|
};
|
||||||
|
|
||||||
const drawMessage = function(msg) {
|
const drawMessage = function(msg) {
|
||||||
|
setColors(false);
|
||||||
const getStringHeight = function(str){
|
const getStringHeight = function(str){
|
||||||
"jit";
|
"jit";
|
||||||
const metrics = ovr.stringMetrics(str);
|
const metrics = ovr.stringMetrics(str);
|
||||||
|
|
@ -639,7 +639,7 @@ exports.message = function(type, event) {
|
||||||
if(event.handled) return;
|
if(event.handled) return;
|
||||||
if(event.messagesoverlayignore) return;
|
if(event.messagesoverlayignore) return;
|
||||||
|
|
||||||
bpp = 16;
|
bpp = settings.systemTheme ? 16 : 4;
|
||||||
if (process.memory().free < settings.lowmem)
|
if (process.memory().free < settings.lowmem)
|
||||||
bpp = 1;
|
bpp = 1;
|
||||||
|
|
||||||
|
|
@ -657,7 +657,18 @@ exports.message = function(type, event) {
|
||||||
ovr.reset();
|
ovr.reset();
|
||||||
|
|
||||||
if (bpp > 1){
|
if (bpp > 1){
|
||||||
|
if (settings.systemTheme){
|
||||||
ovr.theme = g.theme;
|
ovr.theme = g.theme;
|
||||||
|
} else {
|
||||||
|
ovr.theme = {
|
||||||
|
fg: g.theme.dark ? 15: 0,
|
||||||
|
bg: g.theme.dark ? 0: 15,
|
||||||
|
fg2: g.theme.dark ? 15: 0,
|
||||||
|
bg2: g.theme.dark ? 9 : 8,
|
||||||
|
fgH: g.theme.dark ? 15 : 0,
|
||||||
|
bgH: g.theme.dark ? 9: 8,
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if (g.theme.dark)
|
if (g.theme.dark)
|
||||||
|
|
|
||||||
|
|
@ -41,6 +41,13 @@
|
||||||
writeSettings("autoclear",v);
|
writeSettings("autoclear",v);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
'Theme': {
|
||||||
|
value: settings.systemTheme,
|
||||||
|
format: v=>v?"System":"low RAM",
|
||||||
|
onchange: v => {
|
||||||
|
writeSettings("systemTheme",v);
|
||||||
|
}
|
||||||
|
},
|
||||||
'Min. free RAM': {
|
'Min. free RAM': {
|
||||||
value: settings.minfreemem,
|
value: settings.minfreemem,
|
||||||
min: 0,
|
min: 0,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue