diff --git a/apps/clkinfomag/ChangeLog b/apps/clkinfomag/ChangeLog new file mode 100644 index 000000000..4c21f3ace --- /dev/null +++ b/apps/clkinfomag/ChangeLog @@ -0,0 +1 @@ +0.01: New Widget! diff --git a/apps/clkinfomag/clkinfo.js b/apps/clkinfomag/clkinfo.js new file mode 100644 index 000000000..7a6062a2f --- /dev/null +++ b/apps/clkinfomag/clkinfo.js @@ -0,0 +1,48 @@ +(function() { + var heading, cnt; + function magHandler(m) { + var h = m.heading; + if (isNaN(heading) || isNaN(h)) + heading = h; + else { + // Average + if (Math.abs(heading-h)>180) { + if (h<180 && heading>180) h+=360; + if (h>180 && heading<180) h-=360; + } + heading = heading*0.8 + h*0.2; + if (heading<0) heading+=360; + if (heading>=360) heading-=360; + } + // only draw 1 in 2 to try and save some power! + if (!(1&cnt++)) ci.items[0].emit('redraw'); + } + var ci = { + name: "Bangle", + items: [ + { name : "Compass", + get : function() { + var g = Graphics.createArrayBuffer(24,24,1,{msb:true}); + if (isNaN(heading)) + g.drawLine(8,12,16,12); + else + g.fillPoly(g.transformVertices([0,-10,4,10,-4,10],{x:12,y:12,rotate:-heading/57})); + return { text : isNaN(heading)?"--":Math.round(heading), + v : 0|heading, min : 0, max : 360, + img : g.asImage("string") }}, + show : function() { + Bangle.setCompassPower(1,"clkinfomag"); + Bangle.on('mag',magHandler); + cnt=0; + heading = undefined; + }, + hide : function() { + Bangle.removeListener('mag', magHandler); + Bangle.setCompassPower(0,"clkinfomag"); + }, + run : function() { Bangle.resetCompass(); } + } + ] + }; + return ci; +}) // must not have a semi-colon! \ No newline at end of file diff --git a/apps/clkinfomag/icon.png b/apps/clkinfomag/icon.png new file mode 100644 index 000000000..aaa9c7027 Binary files /dev/null and b/apps/clkinfomag/icon.png differ diff --git a/apps/clkinfomag/metadata.json b/apps/clkinfomag/metadata.json new file mode 100644 index 000000000..84d6bc16c --- /dev/null +++ b/apps/clkinfomag/metadata.json @@ -0,0 +1,12 @@ +{ "id": "clkinfomag", + "name": "Compass Clockinfo", + "version":"0.01", + "description": "Extra information to add to clock screens. When selected, displays the compass heading and an arrow pointing North", + "icon": "icon.png", + "type": "clkinfo", + "tags": "clkinfo,compass,mag,magnetometer", + "supports" : ["BANGLEJS2"], + "storage": [ + {"name":"clkinfomag.clkinfo.js","url":"clkinfo.js"} + ] +}