Fix graphic bug;

View via popup while there are other open apps
master
Rarder44 2023-03-07 16:23:49 +01:00
parent 8ca9a89dd0
commit 1ca96bca90
4 changed files with 107 additions and 27 deletions

View File

@ -6,3 +6,4 @@
removed lib no longer used removed lib no longer used
1.3: icon changed 1.3: icon changed
1.4: new management of events implemented; removed code no longer used (from now the music will be managed by the Messagesgui app) 1.4: new management of events implemented; removed code no longer used (from now the music will be managed by the Messagesgui app)
1.5: Fix graphic bug; View via popup while there are other open apps

View File

@ -493,7 +493,7 @@ let main = function(){
Bangle.on('tap', doubleTapUnlock); Bangle.on('tap', doubleTapUnlock);
Bangle.on('touch', toushScroll); Bangle.on('touch', toushScroll);
//quando apro quest'app, do per scontato che c'è un messaggio da leggere posto in un file particolare ( NewMessage.json ) //quando apro quest'app, do per scontato che c'è un messaggio da leggere posto in un file particolare ( messages_light.NewEvent.json )
let eventToShow = require('Storage').readJSON(settings.NewEventFileName, true); let eventToShow = require('Storage').readJSON(settings.NewEventFileName, true);
require("Storage").erase(settings.NewEventFileName) require("Storage").erase(settings.NewEventFileName)
if( eventToShow!==undefined) if( eventToShow!==undefined)

View File

@ -1,19 +1,25 @@
let overlayTimeout=undefined;
exports.listener = function(type, event) { exports.listener = function(type, event) {
/*
//salva gli eventi che arrivano su file
events=require("Storage").readJSON("events_log",true) || [];
events.push ( event)
require("Storage").writeJSON("events_log",events);*/
//salva gli eventi che arrivano su file
/* events=require("Storage").readJSON("events_log",true) || [];
events.push ( event)
require("Storage").writeJSON("events_log",events);
*/
//if (event.handled) return; // already handled/app open //if (event.handled) return; // already handled/app open
if( type=="music" || event.id=="music") return; //lo lascio gestire a qualcun altro if( type=="clearAll" || type=="music" || event.id=="music") return; //lo lascio gestire a qualcun altro
//se arrivo qua gestisco io //se arrivo qua gestisco io
//non mi preoccupo di salvare ( a meno di problemi a mantenere tanti messaggi in queue nella ram...) //non mi preoccupo di salvare ( a meno di problemi a mantenere tanti messaggi in queue nella ram...)
event.handled=true; event.handled=true;
if( Bangle.CLOCK || global.__FILE__ === undefined || global.__FILE__ === ".bootcde" || global.__FILE__.startsWith("messages_light."))
{
//se non ci sono app aperte ( clock oppure c'è messages_light)
//continuo con la visualizzazione dell messaggio
let callApp; let callApp;
//se l'app non è aperta //se l'app non è aperta
@ -38,6 +44,79 @@ exports.listener = function(type, event) {
callApp(event); callApp(event);
}
else{
//TODO: BHOO!!!
//vibro e basta?
//faccio comparire un overlay veloce?
//uso l'overlay sempre? ( gestione di tutti gli eventi smadonnosa... )
//salvo lo stato dell'app attuale( NON SO COME ), lancio la mia app e alla chiusura torno allo stato precedente?
console.log(event);
let ovr=undefined;
let palette;
let timeout;
if(event.id=="call" && event.t!="remove")
{
let count=3;
let idInter= setInterval(()=>{
if(--count<=0)
clearInterval(idInter);
Bangle.buzz(100,1);
},200);
ovr = Graphics.createArrayBuffer(136,136,2,{msb:true});
ovr.setColor(1).fillRect({x:0,y:0,w:135,h:135,r:8});
ovr.setColor(2).setFont("Vector:30").setFontAlign(0,0).drawString("Call",68,20);
var lines=ovr.wrapString(event.title,136);
for(let i=0;i< lines.length;i++)
ovr.setColor(2).setFont("Vector:20").setFontAlign(0,0).drawString(lines[i],68,50+i*15);
palette=[0,g.toColor("#141"),g.toColor("#fff"),g.toColor("#FFF")];
timeout=4000;
}
else if(event.t=="add" || event.t=="modify")
{
Bangle.buzz();
ovr = Graphics.createArrayBuffer(136,136,2,{msb:true});
ovr.setColor(1).fillRect({x:0,y:0,w:135,h:135,r:8});
ovr.setColor(2).setFont("Vector:20").setFontAlign(0,0).drawString(event.src,68,15);
ovr.setColor(2).setFont("Vector:15").setFontAlign(0,0).drawString(event.title,68,35);
var lines=ovr.wrapString(event.body,136);
for(let i=0;i< lines.length;i++)
ovr.setColor(2).setFont("Vector:15").setFontAlign(0,0).drawString(lines[i],68,60+i*15);
palette=[0,g.toColor("#09c"),g.toColor("#fff"),g.toColor("#FFF")];
timeout=5000;
}
if(ovr===undefined)
return;
Bangle.setLCDPower(true);
Bangle.setLCDOverlay({
width:ovr.getWidth(), height:ovr.getHeight(),
bpp:2, transparent:0,
palette:new Uint16Array(palette),
buffer:ovr.buffer
},20,20);
Bangle.setLCDPower(true);
if(overlayTimeout) clearTimeout(overlayTimeout);
overlayTimeout=setTimeout(()=>{
Bangle.setLCDOverlay();
overlayTimeout=undefined;
},timeout);
}
} }

View File

@ -1,7 +1,7 @@
{ {
"id": "messages_light", "id": "messages_light",
"name": "Messages Light", "name": "Messages Light",
"version": "1.4", "version": "1.5",
"description": "A light implementation of messages App (display notifications from iOS and Gadgetbridge/Android)", "description": "A light implementation of messages App (display notifications from iOS and Gadgetbridge/Android)",
"icon": "app.png", "icon": "app.png",
"type": "app", "type": "app",