diff --git a/apps.json b/apps.json index e5e9f8f02..e3d9a5314 100644 --- a/apps.json +++ b/apps.json @@ -4064,7 +4064,7 @@ { "id": "hcclock", "name": "Hi-Contrast Clock", - "version": "0.02", + "version": "0.03", "description": "Hi-Contrast Clock : A simple yet very bold clock that aims to be readable in high luninosity environments. Uses big 10x5 pixel digits. Use BTN 1 to switch background and foreground colors.", "icon": "hcclock-icon.png", "type": "clock", diff --git a/apps/hcclock/ChangeLog b/apps/hcclock/ChangeLog index aaa55d01a..f70653d58 100644 --- a/apps/hcclock/ChangeLog +++ b/apps/hcclock/ChangeLog @@ -1,2 +1,3 @@ -0.01: base code -0.02: saved settings when switching color scheme \ No newline at end of file +0.01: Base code +0.02: Saved settings when switching color scheme +0.03: Added Button 3 opening messages (if app is installed) \ No newline at end of file diff --git a/apps/hcclock/README.md b/apps/hcclock/README.md index 328f1fe03..122401dd8 100644 --- a/apps/hcclock/README.md +++ b/apps/hcclock/README.md @@ -5,6 +5,7 @@ A High-contrast, black-on-white or white-on-black clock displaying huge pixel di ## Usage * BTN 1 switches between the two modes : black-on-white or white-on-black +* BTN 3 opens the messages (if installed, and there are new messages) * That's it! ## Issues and Requests diff --git a/apps/hcclock/hcclock.app.js b/apps/hcclock/hcclock.app.js index 4664dd763..623b28f13 100644 --- a/apps/hcclock/hcclock.app.js +++ b/apps/hcclock/hcclock.app.js @@ -129,6 +129,7 @@ function updateTime() g.setFontAlign(0, -1, 0); g.drawString(fmtDate(d,mo,y,hour), 120, 120); } + drawMessages(); } function drawDigits(x, value) @@ -222,6 +223,55 @@ function flipColors() setColorScheme(0); } +////////////////////////////////////////// +// +// MESSAGE HANDLING() +// + +let messages_installed = require("Storage").read("messages.app.js") != undefined; + +function handleMessages() +{ + if(messages_installed && hasMessages() > 0) + { + E.showMessage("Loading Messages..."); + load("messages.app.js"); + } +} + +function hasMessages() +{ + if(!messages_installed) + return false; + + var messages = require("Storage").readJSON("messages.json",1)||[]; + if (messages.some(m=>m.new)) + return true; + else + return false; +} + +let msg = atob("GBiBAAAAAAAAAAAAAAAAAAAAAB//+DAADDAADDAADDwAPD8A/DOBzDDn/DA//DAHvDAPvjAPvjAPvjAPvh///gf/vAAD+AAB8AAAAA=="); +let had_messages = false; + +function drawMessages() +{ + if(!had_messages && hasMessages()) { + g.setColor(255,255,255); + g.drawImage(msg, 200, 206); + g.setFont("6x8", 2); + g.setFontAlign(0, -1, 0); + g.drawString(">", 224, 210); + had_messages = true; + } + else if (had_messages && !hasMessages()) + { + g.setColor(255,0,0); + g.fillRect(200, 200, 240, 240); + had_messages = false; + } +} + ////////////////////////////////////////// // // MAIN FUNCTION() @@ -238,6 +288,7 @@ setInterval(updateTime, interval); // Handle Button Press setWatch(flipColors, BTN1, true); setWatch(Bangle.showLauncher, BTN2, false); +setWatch(handleMessages, BTN3, true); // Handle redraw on LCD on / fullscreen notifications dismissed Bangle.on('lcdPower', (on) => { if(on) redraw(); });