diff --git a/README.md b/README.md index 0a92aae30..9cf30065a 100644 --- a/README.md +++ b/README.md @@ -134,6 +134,7 @@ Apps are listed in the Bangle.js menu, accessible from a clock app via the middl * `app.png` - app icon - 48x48px * `app-icon.js` - JS version of the icon (made with http://www.espruino.com/Image+Converter) for use in Bangle.js's menu * `app.js` - app code +* `ChangeLog` - A file containing a list of changes to your app so users can see what's changed #### `app-icon.js` @@ -189,9 +190,23 @@ When the widget is to be drawn, `x` and `y` values are set up in `WIDGETS["mywid and `draw` can then use `this.x` and `this.y` to figure out where it needs to draw to. +### ChangeLog + +This is a file containing a list of changes to your app so users can see what's changed, for example: + +``` +0.01: New App! +0.02: Changed the colors +0.03: Made the app run quicker +``` + +Entries should be newest last, with the version number of the last entry matching the version in `metadata.json` + +Please keep the same format at the example as the file needs to be parsed by the BangleApps tools. + ### `app.info` format -This is the file that's **auto-generated** and loaded onto Bangle.js by the App Loader, +This is the file that's **auto-generated** from `metadata.json` and loaded onto Bangle.js by the App Loader, and which gives information about the app for the Launcher. ``` diff --git a/apps/ac_ac/ChangeLog.txt b/apps/ac_ac/ChangeLog.txt new file mode 100644 index 000000000..307e4165d --- /dev/null +++ b/apps/ac_ac/ChangeLog.txt @@ -0,0 +1,2 @@ +0.01: initial release +1.00: first official release (also fixes bug in Customizer) \ No newline at end of file diff --git a/apps/ac_ac/Customizer.html b/apps/ac_ac/Customizer.html index f2aa79920..ae40be939 100644 --- a/apps/ac_ac/Customizer.html +++ b/apps/ac_ac/Customizer.html @@ -321,7 +321,7 @@ function chosenClockHands () { switch (ClockHands) { - case 'simple': return "require('https://raw.githubusercontent.com/rozek/banglejs-2-simpled-clock-hands/main/ClockHands.js')" + case 'simple': return "require('https://raw.githubusercontent.com/rozek/banglejs-2-simple-clock-hands/main/ClockHands.js')" case 'rounded': return "require('https://raw.githubusercontent.com/rozek/banglejs-2-rounded-clock-hands/main/ClockHands.js')" case 'hollow': return "require('https://raw.githubusercontent.com/rozek/banglejs-2-hollow-clock-hands/main/ClockHands.js')" case 'custom': return "require('" + ClockHandsURL + "')" diff --git a/apps/ac_ac/metadata.json b/apps/ac_ac/metadata.json index a4f3de0ac..4dbe93834 100644 --- a/apps/ac_ac/metadata.json +++ b/apps/ac_ac/metadata.json @@ -1,7 +1,7 @@ { "id": "ac_ac", "name": "A Configurable Analog Clock", "shortName":"Configurable Clock", - "version":"0.03", + "version":"1.00", "description": "AC-AC, a highly customizable analog clock with several clock faces, hands and complications to choose from", "icon": "app-icon.png", "type": "clock", diff --git a/apps/barometer/ChangeLog b/apps/barometer/ChangeLog index 06ff68298..031a86cdc 100644 --- a/apps/barometer/ChangeLog +++ b/apps/barometer/ChangeLog @@ -1 +1,2 @@ 0.01: Display pressure as number and hand +0.02: Use theme color diff --git a/apps/barometer/app.js b/apps/barometer/app.js index 61c0edce4..2ce95864b 100644 --- a/apps/barometer/app.js +++ b/apps/barometer/app.js @@ -1,77 +1,77 @@ -const center = { +var center = { x: g.getWidth()/2, y: g.getHeight()/2, }; -const MIN = 940; -const MAX = 1090; -const NUMBER_OF_VALUES = MAX - MIN; -const SCALE_TICK_STEP = 5; -const SCALE_VALUES_STEP = 25; -const NUMBER_OF_LABELS = NUMBER_OF_VALUES / SCALE_VALUES_STEP; -const NUMBER_OF_TICKS = NUMBER_OF_VALUES / SCALE_TICK_STEP; -const ZERO_OFFSET = (Math.PI / 4) * 3; -const SCALE_SPAN = (Math.PI / 2) * 3; -const TICK_LENGTH = 10; -const HAND_LENGTH = 45; -const HAND_WIDTH = 5; +var MIN = 940; +var MAX = 1090; +var NUMBER_OF_VALUES = MAX - MIN; +var SCALE_TICK_STEP = 5; +var SCALE_VALUES_STEP = 25; +var NUMBER_OF_LABELS = NUMBER_OF_VALUES / SCALE_VALUES_STEP; +var NUMBER_OF_TICKS = NUMBER_OF_VALUES / SCALE_TICK_STEP; +var ZERO_OFFSET = (Math.PI / 4) * 3; +var SCALE_SPAN = (Math.PI / 2) * 3; +var TICK_LENGTH = 10; +var HAND_LENGTH = 45; +var HAND_WIDTH = 5; function generatePoly(radius, width, angle){ - const x = center.x + Math.cos(angle) * radius; - const y = center.y + Math.sin(angle) * radius; - const d = { + var x = center.x + Math.cos(angle) * radius; + var y = center.y + Math.sin(angle) * radius; + var d = { x: width/2 * Math.cos(angle + Math.PI/2), y: width/2 * Math.sin(angle + Math.PI/2), }; - const poly = [center.x - d.x, center.y - d.y, center.x + d.x, center.y + d.y, x + d.x, y + d.y, x - d.x, y - d.y]; + var poly = [center.x - d.x, center.y - d.y, center.x + d.x, center.y + d.y, x + d.x, y + d.y, x - d.x, y - d.y]; return poly; } function drawHand(value){ - g.setColor(256, 0, 0); + g.setColor(g.theme.fg2); g.setFontAlign(0,0); g.setFont("Vector",15); g.drawString(value, center.x, center.y * 2 - 15, true); - const angle = SCALE_SPAN / NUMBER_OF_VALUES * (value - MIN) + ZERO_OFFSET; + var angle = SCALE_SPAN / NUMBER_OF_VALUES * (value - MIN) + ZERO_OFFSET; g.fillPoly(generatePoly(HAND_LENGTH, HAND_WIDTH, angle), true); g.fillCircle(center.x ,center.y, 4); } function drawTicks(){ - g.setColor(1,1,1); + g.setColor(g.theme.fg); for(let i= 0; i <= NUMBER_OF_TICKS; i++){ - const angle = (i * (SCALE_SPAN/NUMBER_OF_TICKS)) + ZERO_OFFSET; + var angle = (i * (SCALE_SPAN/NUMBER_OF_TICKS)) + ZERO_OFFSET; - const tickWidth = i%5==0 ? 5 : 2; + var tickWidth = i%5==0 ? 5 : 2; g.fillPoly(generatePoly(center.x, tickWidth, angle), true); } - g.setColor(0,0,0); + g.setColor(g.theme.bg); g.fillCircle(center.x,center.y,center.x - TICK_LENGTH); } function drawScaleLabels(){ - g.setColor(1,1,1); + g.setColor(g.theme.fg); g.setFont("Vector",12); let label = MIN; for (let i=0;i <= NUMBER_OF_LABELS; i++){ - const angle = (i * (SCALE_SPAN/NUMBER_OF_LABELS)) + ZERO_OFFSET; - const labelDimensions = g.stringMetrics(label); + var angle = (i * (SCALE_SPAN/NUMBER_OF_LABELS)) + ZERO_OFFSET; + var labelDimensions = g.stringMetrics(label); - const LABEL_PADDING = 5; - const radius = center.x - TICK_LENGTH - LABEL_PADDING; - const x = center.x + Math.cos(angle) * radius; - const y = center.y + Math.sin(angle) * radius; + var LABEL_PADDING = 5; + var radius = center.x - TICK_LENGTH - LABEL_PADDING; + var x = center.x + Math.cos(angle) * radius; + var y = center.y + Math.sin(angle) * radius; - const visualX = x > center.x ? x - labelDimensions.width : x + labelDimensions.width > center.x ? x - (labelDimensions.width / 2) : x; - const visualY = y >= center.y - labelDimensions.height / 2 ? y - labelDimensions.height / 2 : y; + var visualX = x > center.x ? x - labelDimensions.width : x + labelDimensions.width > center.x ? x - (labelDimensions.width / 2) : x; + var visualY = y >= center.y - labelDimensions.height / 2 ? y - labelDimensions.height / 2 : y; g.drawString(label, visualX, visualY); @@ -80,29 +80,29 @@ function drawScaleLabels(){ } function drawIcons() { - const sunIcon = { - width : 24, height : 24, bpp : 4, + var sunIcon = { + width : 24, height : 24, bpp : 1, transparent : 0, - buffer : require("heatshrink").decompress(atob("AAkP+ALeA40PAYf/BYv/CYYLBBwIICCQ4ACHI4ICEIgkEAg48GDApcFAoYPBBY5NDBZIjLHZpTLNZiDKTZSzMZZT7iA=")) + buffer : require("heatshrink").decompress(atob("gEYAQ0IgEQjkAnEMv0wgH/gEB4eAgcA4EHgHgg0AsHmgFnAQQICBwQUCDQQgCEwQsCGQQ+IA")) }; g.drawImage(sunIcon, center.x + 15, center.y - 12); - const sunRainIcon = { - width : 24, height : 24, bpp : 4, + var sunRainIcon = { + width : 24, height : 24, bpp : 1, transparent : 0, - buffer : require("heatshrink").decompress(atob("AB/wBbEPBAoGEDI/wh4jJBQIMJEgUP///IpAJCBgf/+ALCAQRJFAoIHECgI7FIYwSEHAoGBEQwsEDIJdHCYYLLFwwTEQQwGFQQQACYpYpLf0AAEA")) + buffer : require("heatshrink").decompress(atob("AAeAAQmEgEQhEAhIIBg1ggEEj8AhEw4HokFAglAnEGoEGgHAgcRgEBkQCBgQCBgcAgUBwARBv/4HAcgiAFDCoIAC")) }; g.drawImage(sunRainIcon, center.x - 12, 30); - const rainIcon = { - width : 24, height : 24, bpp : 4, + var rainIcon = { + width : 24, height : 24, bpp : 1, transparent : 0, - buffer : require("heatshrink").decompress(atob("ADnwBRP/AIQAGh4ZKA4YLLh//EwoTFh4GCCIIfGDAQ5DIQ5bIBbQvII4gAGWLwzBOoarLCw4RKLBAAgA")) + buffer : require("heatshrink").decompress(atob("AA0gAQPMgEBgUAgQCCgPwAgMYj0AhkQgEECwICGBYMIj//+ArFgURwAqBB4NEgEQghAJ")) }; g.drawImage(rainIcon, center.x - 44, center.y - 12); } -g.setBgColor(0,0,0); +g.setBgColor(g.theme.bg); g.clear(); drawTicks(); diff --git a/apps/barometer/metadata.json b/apps/barometer/metadata.json index a10e18b32..68af55c68 100644 --- a/apps/barometer/metadata.json +++ b/apps/barometer/metadata.json @@ -1,7 +1,7 @@ { "id": "barometer", "name": "Barometer", "shortName":"Barometer", - "version":"0.01", + "version":"0.02", "description": "A simple barometer that displays the current air pressure", "icon": "barometer.png", "tags": "tool,outdoors", diff --git a/apps/contourclock/ChangeLog b/apps/contourclock/ChangeLog index f06033aca..b8d01ff86 100644 --- a/apps/contourclock/ChangeLog +++ b/apps/contourclock/ChangeLog @@ -1,3 +1,5 @@ 0.01: New app 0.20: Settings menu, different fonts, inverse fonts 0.21: Fixed settings menu, four more fonts +0.22: Changed timing code, original "Nunito" Font is back! +0.23: Customizer! Unused fonts no longer take up precious memory. diff --git a/apps/contourclock/app.js b/apps/contourclock/app.js index 310b068b6..a5440845d 100644 --- a/apps/contourclock/app.js +++ b/apps/contourclock/app.js @@ -6,16 +6,6 @@ if (settings.fontIndex==undefined) { settings.fontIndex=0; require('Storage').writeJSON("myapp.json", settings); } -require("FontTeletext10x18Ascii").add(Graphics); - -function queueDraw() { - if (drawTimeout) clearTimeout(drawTimeout); - drawTimeout = setTimeout(function() { - drawTimeout = undefined; - draw(); - queueDraw(); - }, 60000 - (Date.now() % 60000)); -} function draw() { var date = new Date(); @@ -28,9 +18,12 @@ function draw() { require('contourclock').drawClock(settings.fontIndex); } +require("FontTeletext10x18Ascii").add(Graphics); Bangle.setUI("clock"); g.clear(); Bangle.loadWidgets(); Bangle.drawWidgets(); draw(); -queueDraw(); +setTimeout(function() { + setInterval(draw,60000); +}, 60000 - Date.now() % 60000); diff --git a/apps/contourclock/custom.html b/apps/contourclock/custom.html new file mode 100644 index 000000000..7d780d39c --- /dev/null +++ b/apps/contourclock/custom.html @@ -0,0 +1,70 @@ + +
+ + + +