diff --git a/apps.json b/apps.json index be67cbd39..4ef5b157e 100644 --- a/apps.json +++ b/apps.json @@ -32,7 +32,7 @@ { "id": "messages", "name": "Messages", - "version": "0.06", + "version": "0.07", "description": "App to display notifications from iOS and Gadgetbridge", "icon": "app.png", "type": "app", @@ -41,11 +41,12 @@ "readme": "README.md", "storage": [ {"name":"messages.app.js","url":"app.js"}, + {"name":"messages.settings.js","url":"settings.js"}, {"name":"messages.img","url":"app-icon.js","evaluate":true}, {"name":"messages.wid.js","url":"widget.js"}, {"name":"messages","url":"lib.js"} ], - "data": [{"name":"messages.json"}], + "data": [{"name":"messages.json"},{"name":"messages.settings.json"}], "sortorder": -9 }, { diff --git a/apps/android/app.js b/apps/android/app.js index a88046c6d..9464d1b8b 100644 --- a/apps/android/app.js +++ b/apps/android/app.js @@ -1 +1,3 @@ +Bangle.loadWidgets(); +Bangle.drawWidgets(); eval(require("Storage").read("android.settings.js"))(()=>load()); diff --git a/apps/messages/ChangeLog b/apps/messages/ChangeLog index 8d31fcf2a..87094a091 100644 --- a/apps/messages/ChangeLog +++ b/apps/messages/ChangeLog @@ -7,3 +7,4 @@ Answering true/false now exits the messages app if no new messages Back now marks a message as read Clicking top-left opens a menu which allows you to delete a message or mark unread +0.07: Added settings menu with option to choose vibrate pattern and frequency (fix #909) diff --git a/apps/messages/app.js b/apps/messages/app.js index b3bcbf6de..cb2b5c2cd 100644 --- a/apps/messages/app.js +++ b/apps/messages/app.js @@ -46,7 +46,10 @@ var MESSAGES = require("Storage").readJSON("messages.json",1)||[]; if (!Array.isArray(MESSAGES)) MESSAGES=[]; var onMessagesModified = function(msg) { // TODO: if new, show this new one - if (msg.new) Bangle.buzz(); + if (msg.new) { + if (WIDGETS["messages"]) WIDGETS["messages"].buzz(); + else Bangle.buzz(); + } showMessage(msg.id); }; function saveMessages() { diff --git a/apps/messages/widget.js b/apps/messages/widget.js index c40e9aa05..3a22b40fd 100644 --- a/apps/messages/widget.js +++ b/apps/messages/widget.js @@ -1,3 +1,4 @@ + WIDGETS["messages"]={area:"tl",width:0,draw:function() { if (!this.width) return; var c = (Date.now()-this.t)/1000; @@ -5,9 +6,11 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() { g.clearRect(this.x,this.y,this.x+this.width,this.y+23); g.setFont("6x8:1x2").setFontAlign(0,0).drawString("MESSAGES", this.x+this.width/2, this.y+12); //if (c<60) Bangle.setLCDPower(1); // keep LCD on for 1 minute - if (c<120 && (Date.now()-this.l)>4000) { + let settings = require('Storage').readJSON("messages.settings.json", true) || {}; + if (settings.repeat===undefined) settings.repeat = 4; + if (c<120 && (Date.now()-this.l)>settings.repeat*1000) { this.l = Date.now(); - Bangle.buzz(); // buzz every 4 seconds + WIDGETS["messages"].buzz(); // buzz every 4 seconds } setTimeout(()=>WIDGETS["messages"].draw(), 1000); },show:function() { @@ -21,4 +24,13 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() { delete WIDGETS["messages"].l; WIDGETS["messages"].width=0; Bangle.drawWidgets(); +},buzz:function() { + let v = (require('Storage').readJSON("messages.settings.json", true) || {}).vibrate || "."; + function b() { + var c = v[0]; + v = v.substr(1); + if (c==".") Bangle.buzz().then(()=>setTimeout(b,100)); + if (c=="-") Bangle.buzz(500).then(()=>setTimeout(b,100)); + } + b(); }};