Merge remote-tracking branch 'upstream/master'
138
apps.json
|
|
@ -32,7 +32,7 @@
|
||||||
{
|
{
|
||||||
"id": "messages",
|
"id": "messages",
|
||||||
"name": "Messages",
|
"name": "Messages",
|
||||||
"version": "0.03",
|
"version": "0.05",
|
||||||
"description": "App to display notifications from iOS and Gadgetbridge",
|
"description": "App to display notifications from iOS and Gadgetbridge",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
|
|
@ -45,12 +45,14 @@
|
||||||
{"name":"messages.wid.js","url":"widget.js"},
|
{"name":"messages.wid.js","url":"widget.js"},
|
||||||
{"name":"messages","url":"lib.js"}
|
{"name":"messages","url":"lib.js"}
|
||||||
],
|
],
|
||||||
|
"data": [{"name":"messages.json"}],
|
||||||
"sortorder": -9
|
"sortorder": -9
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "android",
|
"id": "android",
|
||||||
"name": "Android Integration",
|
"name": "Android Integration",
|
||||||
"version": "0.01",
|
"shortName": "Android",
|
||||||
|
"version": "0.03",
|
||||||
"description": "(BETA) App to display notifications from Gadgetbridge on Android. This will eventually replace the Gadgetbridge widget.",
|
"description": "(BETA) App to display notifications from Gadgetbridge on Android. This will eventually replace the Gadgetbridge widget.",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,system,messages,notifications",
|
"tags": "tool,system,messages,notifications",
|
||||||
|
|
@ -61,12 +63,12 @@
|
||||||
{"name":"android.img","url":"app-icon.js","evaluate":true},
|
{"name":"android.img","url":"app-icon.js","evaluate":true},
|
||||||
{"name":"android.boot.js","url":"boot.js"}
|
{"name":"android.boot.js","url":"boot.js"}
|
||||||
],
|
],
|
||||||
"sortorder": -9
|
"sortorder": -8
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "ios",
|
"id": "ios",
|
||||||
"name": "iOS Integration",
|
"name": "iOS Integration",
|
||||||
"version": "0.01",
|
"version": "0.03",
|
||||||
"description": "(BETA) App to display notifications from iOS devices",
|
"description": "(BETA) App to display notifications from iOS devices",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,system,ios,apple,messages,notifications",
|
"tags": "tool,system,ios,apple,messages,notifications",
|
||||||
|
|
@ -77,7 +79,7 @@
|
||||||
{"name":"ios.img","url":"app-icon.js","evaluate":true},
|
{"name":"ios.img","url":"app-icon.js","evaluate":true},
|
||||||
{"name":"ios.boot.js","url":"boot.js"}
|
{"name":"ios.boot.js","url":"boot.js"}
|
||||||
],
|
],
|
||||||
"sortorder": -9
|
"sortorder": -8
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "health",
|
"id": "health",
|
||||||
|
|
@ -136,6 +138,7 @@
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,system",
|
"tags": "tool,system",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
|
"screenshots": [{"url":"bangle1-about-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"about.app.js","url":"app-bangle1.js","supports": ["BANGLEJS"]},
|
{"name":"about.app.js","url":"app-bangle1.js","supports": ["BANGLEJS"]},
|
||||||
|
|
@ -211,7 +214,7 @@
|
||||||
"id": "welcome",
|
"id": "welcome",
|
||||||
"name": "Welcome",
|
"name": "Welcome",
|
||||||
"shortName": "Welcome",
|
"shortName": "Welcome",
|
||||||
"version": "0.13",
|
"version": "0.14",
|
||||||
"description": "Appears at first boot and explains how to use Bangle.js",
|
"description": "Appears at first boot and explains how to use Bangle.js",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"screenshots": [{"url":"screenshot_welcome.png"}],
|
"screenshots": [{"url":"screenshot_welcome.png"}],
|
||||||
|
|
@ -237,6 +240,7 @@
|
||||||
"tags": "start,welcome",
|
"tags": "start,welcome",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"custom": "custom.html",
|
"custom": "custom.html",
|
||||||
|
"screenshots": [{"url":"bangle1-customized-welcome-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"mywelcome.boot.js","url":"boot.js"},
|
{"name":"mywelcome.boot.js","url":"boot.js"},
|
||||||
{"name":"mywelcome.app.js","url":"app.js"},
|
{"name":"mywelcome.app.js","url":"app.js"},
|
||||||
|
|
@ -273,6 +277,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-morphing-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"mclock.app.js","url":"clock-morphing.js"},
|
{"name":"mclock.app.js","url":"clock-morphing.js"},
|
||||||
{"name":"mclock.img","url":"clock-morphing-icon.js","evaluate":true}
|
{"name":"mclock.img","url":"clock-morphing-icon.js","evaluate":true}
|
||||||
|
|
@ -287,6 +292,7 @@
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "",
|
"tags": "",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-moon-phase-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"moonphase.app.js","url":"app.js"},
|
{"name":"moonphase.app.js","url":"app.js"},
|
||||||
|
|
@ -417,6 +423,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-sweep-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"sweepclock.app.js","url":"sweepclock.js"},
|
{"name":"sweepclock.app.js","url":"sweepclock.js"},
|
||||||
{"name":"sweepclock.img","url":"sweepclock-icon.js","evaluate":true}
|
{"name":"sweepclock.img","url":"sweepclock-icon.js","evaluate":true}
|
||||||
|
|
@ -467,6 +474,7 @@
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-impercise-word-clock-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"impwclock.app.js","url":"clock-impword.js"},
|
{"name":"impwclock.app.js","url":"clock-impword.js"},
|
||||||
|
|
@ -550,6 +558,7 @@
|
||||||
"supports" : ["BANGLEJS","BANGLEJS2"],
|
"supports" : ["BANGLEJS","BANGLEJS2"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-cube-scramble-screenshot.png"},{"url":"bangle1-cube-scramble-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"cubescramble.app.js","url":"cube-scramble.js"},
|
{"name":"cubescramble.app.js","url":"cube-scramble.js"},
|
||||||
{"name":"cubescramble.img","url":"cube-scramble-icon.js","evaluate":true}
|
{"name":"cubescramble.img","url":"cube-scramble-icon.js","evaluate":true}
|
||||||
|
|
@ -653,7 +662,7 @@
|
||||||
{
|
{
|
||||||
"id": "gpsrec",
|
"id": "gpsrec",
|
||||||
"name": "GPS Recorder",
|
"name": "GPS Recorder",
|
||||||
"version": "0.24",
|
"version": "0.25",
|
||||||
"description": "Application that allows you to record a GPS track. Can run in background",
|
"description": "Application that allows you to record a GPS track. Can run in background",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "tool,outdoors,gps,widget",
|
"tags": "tool,outdoors,gps,widget",
|
||||||
|
|
@ -740,7 +749,7 @@
|
||||||
"description": "Show currently installed apps, free space, and allow their deletion from the watch",
|
"description": "Show currently installed apps, free space, and allow their deletion from the watch",
|
||||||
"icon": "files.png",
|
"icon": "files.png",
|
||||||
"tags": "tool,system,files",
|
"tags": "tool,system,files",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"files.app.js","url":"files.js"},
|
{"name":"files.app.js","url":"files.js"},
|
||||||
{"name":"files.img","url":"files-icon.js","evaluate":true}
|
{"name":"files.img","url":"files-icon.js","evaluate":true}
|
||||||
|
|
@ -774,6 +783,7 @@
|
||||||
"tags": "battery",
|
"tags": "battery",
|
||||||
"supports": ["BANGLEJS", "BANGLEJS2"],
|
"supports": ["BANGLEJS", "BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-charge-animation-screenshot.png"},{"url":"bangle-charge-animation-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"chargeanim.app.js","url":"app.js"},
|
{"name":"chargeanim.app.js","url":"app.js"},
|
||||||
{"name":"chargeanim.boot.js","url":"boot.js"},
|
{"name":"chargeanim.boot.js","url":"boot.js"},
|
||||||
|
|
@ -979,6 +989,7 @@
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"interface": "interface.html",
|
"interface": "interface.html",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-stopwatch-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"swatch.app.js","url":"stopwatch.js"},
|
{"name":"swatch.app.js","url":"stopwatch.js"},
|
||||||
{"name":"swatch.img","url":"stopwatch-icon.js","evaluate":true}
|
{"name":"swatch.img","url":"stopwatch-icon.js","evaluate":true}
|
||||||
|
|
@ -1180,6 +1191,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-vibrate-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"vibrclock.app.js","url":"app.js"},
|
{"name":"vibrclock.app.js","url":"app.js"},
|
||||||
{"name":"vibrclock.img","url":"app-icon.js","evaluate":true}
|
{"name":"vibrclock.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1195,6 +1207,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-simple-v-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"svclock.app.js","url":"vclock-simple.js"},
|
{"name":"svclock.app.js","url":"vclock-simple.js"},
|
||||||
{"name":"svclock.img","url":"vclock-simple-icon.js","evaluate":true}
|
{"name":"svclock.img","url":"vclock-simple-icon.js","evaluate":true}
|
||||||
|
|
@ -1210,6 +1223,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-dev-clock-screenshot.png"},{"url":"bangle1-dev-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"dclock.app.js","url":"clock-dev.js"},
|
{"name":"dclock.app.js","url":"clock-dev.js"},
|
||||||
{"name":"dclock.img","url":"clock-dev-icon.js","evaluate":true}
|
{"name":"dclock.img","url":"clock-dev-icon.js","evaluate":true}
|
||||||
|
|
@ -1241,6 +1255,7 @@
|
||||||
"tags": "party,parrot,lol",
|
"tags": "party,parrot,lol",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-party-parrot-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"pparrot.app.js","url":"party-parrot.js"},
|
{"name":"pparrot.app.js","url":"party-parrot.js"},
|
||||||
{"name":"pparrot.img","url":"party-parrot-icon.js","evaluate":true}
|
{"name":"pparrot.img","url":"party-parrot-icon.js","evaluate":true}
|
||||||
|
|
@ -1256,6 +1271,7 @@
|
||||||
"tags": "rings,hypnosis,psychadelic",
|
"tags": "rings,hypnosis,psychadelic",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-hypno-rings-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"hrings.app.js","url":"hypno-rings.js"},
|
{"name":"hrings.app.js","url":"hypno-rings.js"},
|
||||||
{"name":"hrings.img","url":"hypno-rings-icon.js","evaluate":true}
|
{"name":"hrings.img","url":"hypno-rings-icon.js","evaluate":true}
|
||||||
|
|
@ -1323,6 +1339,7 @@
|
||||||
"icon": "show-color.png",
|
"icon": "show-color.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
"tags": "tool",
|
"tags": "tool",
|
||||||
|
"screenshots": [{"url":"bangle1-view-color-screenshot.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -1338,6 +1355,7 @@
|
||||||
"icon": "clock-mixed.png",
|
"icon": "clock-mixed.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
|
"screenshots": [{"url":"bangle1-mixed-clock-screenshot.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -1355,6 +1373,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-binary-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"bclock.app.js","url":"clock-binary.js"},
|
{"name":"bclock.app.js","url":"clock-binary.js"},
|
||||||
{"name":"bclock.img","url":"clock-binary-icon.js","evaluate":true}
|
{"name":"bclock.img","url":"clock-binary-icon.js","evaluate":true}
|
||||||
|
|
@ -1368,6 +1387,7 @@
|
||||||
"icon": "clock-tris.png",
|
"icon": "clock-tris.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-clock-tris-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"clotris.app.js","url":"clock-tris.js"},
|
{"name":"clotris.app.js","url":"clock-tris.js"},
|
||||||
|
|
@ -1427,6 +1447,7 @@
|
||||||
"tags": "pomodoro,cooking,tools",
|
"tags": "pomodoro,cooking,tools",
|
||||||
"supports": ["BANGLEJS", "BANGLEJS2"],
|
"supports": ["BANGLEJS", "BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-pomodoro-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"pomodo.app.js","url":"pomodoro.js"},
|
{"name":"pomodo.app.js","url":"pomodoro.js"},
|
||||||
{"name":"pomodo.img","url":"pomodoro-icon.js","evaluate":true}
|
{"name":"pomodo.img","url":"pomodoro-icon.js","evaluate":true}
|
||||||
|
|
@ -1443,6 +1464,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-large-digit-blob-clock-screenshot.png"},{"url":"bangle1-large-digit-blob-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"blobclk.app.js","url":"clock-blob.js"},
|
{"name":"blobclk.app.js","url":"clock-blob.js"},
|
||||||
{"name":"blobclk.img","url":"clock-blob-icon.js","evaluate":true}
|
{"name":"blobclk.img","url":"clock-blob-icon.js","evaluate":true}
|
||||||
|
|
@ -1502,6 +1524,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"berlin-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"berlinc.app.js","url":"berlin-clock.js"},
|
{"name":"berlinc.app.js","url":"berlin-clock.js"},
|
||||||
{"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}
|
{"name":"berlinc.img","url":"berlin-clock-icon.js","evaluate":true}
|
||||||
|
|
@ -1516,6 +1539,7 @@
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-center-clock-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"ctrclk.app.js","url":"app.js"},
|
{"name":"ctrclk.app.js","url":"app.js"},
|
||||||
|
|
@ -1530,6 +1554,7 @@
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"type": "app",
|
"type": "app",
|
||||||
"tags": "",
|
"tags": "",
|
||||||
|
"screenshots": [{"url":"bangle1-demo-loop-screenshot1.png"},{"url":"bangle1-demo-loop-screenshot2.png"},{"url":"bangle1-demo-loop-screenshot3.png"},{"url":"bangle1-demo-loop-screenshot4.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -1562,6 +1587,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-pipboy-themed-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"pipboy.app.js","url":"app.js"},
|
{"name":"pipboy.app.js","url":"app.js"},
|
||||||
{"name":"pipboy.img","url":"app-icon.js","evaluate":true}
|
{"name":"pipboy.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1608,6 +1634,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-workout-HRM-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"wohrm.app.js","url":"app.js"},
|
{"name":"wohrm.app.js","url":"app.js"},
|
||||||
{"name":"wohrm.img","url":"app-icon.js","evaluate":true}
|
{"name":"wohrm.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1652,6 +1679,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": false,
|
"allow_emulator": false,
|
||||||
|
"screenshots": [{"url":"bangle1-mario-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"marioclock.app.js","url":"marioclock-app.js"},
|
{"name":"marioclock.app.js","url":"marioclock-app.js"},
|
||||||
{"name":"marioclock.img","url":"marioclock-icon.js","evaluate":true}
|
{"name":"marioclock.img","url":"marioclock-icon.js","evaluate":true}
|
||||||
|
|
@ -1690,13 +1718,13 @@
|
||||||
{
|
{
|
||||||
"id": "barclock",
|
"id": "barclock",
|
||||||
"name": "Bar Clock",
|
"name": "Bar Clock",
|
||||||
"version": "0.08",
|
"version": "0.09",
|
||||||
"description": "A simple digital clock showing seconds as a bar",
|
"description": "A simple digital clock showing seconds as a bar",
|
||||||
"icon": "clock-bar.png",
|
"icon": "clock-bar.png",
|
||||||
"screenshots": [{"url":"screenshot.png"},{"url":"screenshot_pm.png"}],
|
"screenshots": [{"url":"screenshot.png"},{"url":"screenshot_pm.png"}],
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -1714,6 +1742,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle2-dot-clcok-screenshot.png"},{"url":"bangle1-dot-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"dotclock.app.js","url":"clock-dot.js"},
|
{"name":"dotclock.app.js","url":"clock-dot.js"},
|
||||||
{"name":"dotclock.img","url":"clock-dot-icon.js","evaluate":true}
|
{"name":"dotclock.img","url":"clock-dot-icon.js","evaluate":true}
|
||||||
|
|
@ -1823,6 +1852,7 @@
|
||||||
"tags": "game,fun",
|
"tags": "game,fun",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-rpg-dice-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"rpgdice.app.js","url":"app.js"},
|
{"name":"rpgdice.app.js","url":"app.js"},
|
||||||
{"name":"rpgdice.img","url":"app-icon.js","evaluate":true}
|
{"name":"rpgdice.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1851,6 +1881,7 @@
|
||||||
"tags": "clock,minion",
|
"tags": "clock,minion",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-minion-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"minionclk.app.js","url":"app.js"},
|
{"name":"minionclk.app.js","url":"app.js"},
|
||||||
{"name":"minionclk.img","url":"app-icon.js","evaluate":true}
|
{"name":"minionclk.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -1928,7 +1959,7 @@
|
||||||
"icon": "custom.png",
|
"icon": "custom.png",
|
||||||
"type": "bootloader",
|
"type": "bootloader",
|
||||||
"tags": "tool,system",
|
"tags": "tool,system",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"custom": "custom.html",
|
"custom": "custom.html",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"custom"}
|
{"name":"custom"}
|
||||||
|
|
@ -1943,6 +1974,7 @@
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
"tags": "stopwatch,chrono,timer,chronometer",
|
"tags": "stopwatch,chrono,timer,chronometer",
|
||||||
"supports": ["BANGLEJS","BANGLEJS2"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
|
"screenshots": [{"url":"bangle1-dev-stopwatch-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"devstopwatch.app.js","url":"app.js"},
|
{"name":"devstopwatch.app.js","url":"app.js"},
|
||||||
|
|
@ -1976,6 +2008,7 @@
|
||||||
"tags": "app,learn,visual",
|
"tags": "app,learn,visual",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-NATO-alphabet-screenshot.png"},{"url":"bangle1-NATO-alphabet-screenshot2.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"nato.app.js","url":"nato.js"},
|
{"name":"nato.app.js","url":"nato.js"},
|
||||||
{"name":"nato.img","url":"nato-icon.js","evaluate":true}
|
{"name":"nato.img","url":"nato-icon.js","evaluate":true}
|
||||||
|
|
@ -1992,6 +2025,7 @@
|
||||||
"tags": "numerals,clock",
|
"tags": "numerals,clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-numerals-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"numerals.app.js","url":"numerals.app.js"},
|
{"name":"numerals.app.js","url":"numerals.app.js"},
|
||||||
{"name":"numerals.img","url":"numerals-icon.js","evaluate":true},
|
{"name":"numerals.img","url":"numerals-icon.js","evaluate":true},
|
||||||
|
|
@ -2118,13 +2152,14 @@
|
||||||
{
|
{
|
||||||
"id": "metronome",
|
"id": "metronome",
|
||||||
"name": "Metronome",
|
"name": "Metronome",
|
||||||
"version": "0.06",
|
"version": "0.07",
|
||||||
|
"readme": "README.md",
|
||||||
"description": "Makes the watch blinking and vibrating with a given rate",
|
"description": "Makes the watch blinking and vibrating with a given rate",
|
||||||
"icon": "metronome_icon.png",
|
"icon": "metronome_icon.png",
|
||||||
"tags": "tool",
|
"tags": "tool",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS","BANGLEJS2"],
|
||||||
"readme": "README.md",
|
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-metronome-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"metronome.app.js","url":"metronome.js"},
|
{"name":"metronome.app.js","url":"metronome.js"},
|
||||||
{"name":"metronome.img","url":"metronome-icon.js","evaluate":true},
|
{"name":"metronome.img","url":"metronome-icon.js","evaluate":true},
|
||||||
|
|
@ -2140,6 +2175,7 @@
|
||||||
"icon": "blackjack.png",
|
"icon": "blackjack.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-black-jack-game-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"blackjack.app.js","url":"blackjack.app.js"},
|
{"name":"blackjack.app.js","url":"blackjack.app.js"},
|
||||||
|
|
@ -2173,6 +2209,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-SWL-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"swlclk.app.js","url":"app.js"},
|
{"name":"swlclk.app.js","url":"app.js"},
|
||||||
{"name":"swlclk.img","url":"app-icon.js","evaluate":true}
|
{"name":"swlclk.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -2250,6 +2287,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-pong-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"pong.app.js","url":"app.js"},
|
{"name":"pong.app.js","url":"app.js"},
|
||||||
{"name":"pong.img","url":"app-icon.js","evaluate":true}
|
{"name":"pong.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -2312,6 +2350,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-large-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"largeclock.app.js","url":"largeclock.js"},
|
{"name":"largeclock.app.js","url":"largeclock.js"},
|
||||||
{"name":"largeclock.img","url":"largeclock-icon.js","evaluate":true},
|
{"name":"largeclock.img","url":"largeclock-icon.js","evaluate":true},
|
||||||
|
|
@ -2363,6 +2402,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-timer-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"simpletimer.app.js","url":"app.js"},
|
{"name":"simpletimer.app.js","url":"app.js"},
|
||||||
{"name":".tfnames","url":"gesture-tfnames.js","evaluate":true},
|
{"name":".tfnames","url":"gesture-tfnames.js","evaluate":true},
|
||||||
|
|
@ -2379,6 +2419,7 @@
|
||||||
"icon": "beebclock.png",
|
"icon": "beebclock.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
|
"screenshots": [{"url":"bangle1-beeb-clock-screenshot.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -2412,6 +2453,7 @@
|
||||||
"tags": "tools,health",
|
"tags": "tools,health",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
|
"screenshots": [{"url":"bangle1-get-up-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"getup.app.js","url":"app.js"},
|
{"name":"getup.app.js","url":"app.js"},
|
||||||
|
|
@ -2490,6 +2532,7 @@
|
||||||
"version": "0.01",
|
"version": "0.01",
|
||||||
"description": "La palla predice il futuro",
|
"description": "La palla predice il futuro",
|
||||||
"icon": "app.png",
|
"icon": "app.png",
|
||||||
|
"screenshots": [{"url":"bangle1-magic-8-ball-italiano-screenshot.png"}],
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
|
@ -2603,6 +2646,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-vertical-watch-face-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"verticalface.app.js","url":"app.js"},
|
{"name":"verticalface.app.js","url":"app.js"},
|
||||||
{"name":"verticalface.img","url":"app-icon.js","evaluate":true}
|
{"name":"verticalface.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -2630,6 +2674,7 @@
|
||||||
"icon": "life.png",
|
"icon": "life.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-game-of-life-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"life.app.js","url":"life.min.js"},
|
{"name":"life.app.js","url":"life.min.js"},
|
||||||
|
|
@ -2677,6 +2722,7 @@
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-mixed-clock-2-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"miclock2.app.js","url":"clock-mixed.js"},
|
{"name":"miclock2.app.js","url":"clock-mixed.js"},
|
||||||
|
|
@ -2812,6 +2858,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-CPR-assist-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"cprassist.app.js","url":"cprassist.js"},
|
{"name":"cprassist.app.js","url":"cprassist.js"},
|
||||||
{"name":"cprassist.img","url":"cprassist-icon.js","evaluate":true},
|
{"name":"cprassist.img","url":"cprassist-icon.js","evaluate":true},
|
||||||
|
|
@ -2855,6 +2902,7 @@
|
||||||
"icon": "counter_icon.png",
|
"icon": "counter_icon.png",
|
||||||
"tags": "tool",
|
"tags": "tool",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-counter-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"counter.app.js","url":"counter.js"},
|
{"name":"counter.app.js","url":"counter.js"},
|
||||||
|
|
@ -3234,6 +3282,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
|
"screenshots": [{"url":"bangle1-lazy-clock-screenshot.png"}],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"lazyclock.app.js","url":"lazyclock-app.js"},
|
{"name":"lazyclock.app.js","url":"lazyclock-app.js"},
|
||||||
|
|
@ -3335,6 +3384,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-slow-mo-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"slomoclock.app.js","url":"app.js"},
|
{"name":"slomoclock.app.js","url":"app.js"},
|
||||||
{"name":"slomoclock.img","url":"app-icon.js","evaluate":true},
|
{"name":"slomoclock.img","url":"app-icon.js","evaluate":true},
|
||||||
|
|
@ -3674,6 +3724,7 @@
|
||||||
"icon": "battleship-icon.png",
|
"icon": "battleship-icon.png",
|
||||||
"tags": "game",
|
"tags": "game",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-battle-ship-screenshot.png"}],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -3877,6 +3928,7 @@
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
|
"screenshots": [{"url":"bangle1-mystic-clock-screenshot.png"}],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -3893,6 +3945,7 @@
|
||||||
"icon": "hcclock-icon.png",
|
"icon": "hcclock-icon.png",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
|
"screenshots": [{"url":"bangle1-high-contrast-clock-screenshot.png"}],
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
"storage": [
|
"storage": [
|
||||||
|
|
@ -3974,6 +4027,7 @@
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-vector-clock-screenshot.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"vectorclock.app.js","url":"app.js"},
|
{"name":"vectorclock.app.js","url":"app.js"},
|
||||||
{"name":"vectorclock.img","url":"app-icon.js","evaluate":true}
|
{"name":"vectorclock.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -4003,6 +4057,7 @@
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"readme": "README.md",
|
"readme": "README.md",
|
||||||
"allow_emulator": true,
|
"allow_emulator": true,
|
||||||
|
"screenshots": [{"url":"bangle1-choozi-screenshot1.png"},{"url":"bangle1-choozi-screenshot2.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"choozi.app.js","url":"app.js"},
|
{"name":"choozi.app.js","url":"app.js"},
|
||||||
{"name":"choozi.img","url":"app-icon.js","evaluate":true}
|
{"name":"choozi.img","url":"app-icon.js","evaluate":true}
|
||||||
|
|
@ -4303,7 +4358,7 @@
|
||||||
"name": "LCARS Clock",
|
"name": "LCARS Clock",
|
||||||
"shortName":"LCARS",
|
"shortName":"LCARS",
|
||||||
"icon": "lcars.png",
|
"icon": "lcars.png",
|
||||||
"version":"0.03",
|
"version":"0.05",
|
||||||
"supports": ["BANGLEJS2"],
|
"supports": ["BANGLEJS2"],
|
||||||
"description": "Library Computer Access Retrieval System (LCARS) clock.",
|
"description": "Library Computer Access Retrieval System (LCARS) clock.",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
|
|
@ -4326,8 +4381,10 @@
|
||||||
"description": "Famous binary watch",
|
"description": "Famous binary watch",
|
||||||
"tags": "clock",
|
"tags": "clock",
|
||||||
"type": "clock",
|
"type": "clock",
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"binwatch.app.js","url":"app.js"},
|
{"name":"binwatch.app.js","url":"app.js"},
|
||||||
|
{"name":"binwatch.bg176.img","url":"Background176_center.img"},
|
||||||
|
{"name":"binwatch.bg240.img","url":"Background240_center.img"},
|
||||||
{"name":"binwatch.img","url":"app-icon.js","evaluate":true}
|
{"name":"binwatch.img","url":"app-icon.js","evaluate":true}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -4364,23 +4421,36 @@
|
||||||
],
|
],
|
||||||
"data": [{"name":"authentiwatch.json"}]
|
"data": [{"name":"authentiwatch.json"}]
|
||||||
},
|
},
|
||||||
{ "id": "schoolCalendar",
|
{ "id": "schoolCalendar",
|
||||||
"name": "School Calendar",
|
"name": "School Calendar",
|
||||||
"shortName":"SCalendar",
|
"shortName":"SCalendar",
|
||||||
"icon": "CalenderLogo.png",
|
"icon": "CalenderLogo.png",
|
||||||
"version": "0.01",
|
"version": "0.01",
|
||||||
"description": "A simple calendar that you can see your upcoming events that you create in the customizer. Keep in note that your events reapeat weekly.(Beta)",
|
"description": "A simple calendar that you can see your upcoming events that you create in the customizer. Keep in note that your events reapeat weekly.(Beta)",
|
||||||
"tags": "tool",
|
"tags": "tool",
|
||||||
"readme":"README.md",
|
"readme":"README.md",
|
||||||
"custom":"custom.html",
|
"custom":"custom.html",
|
||||||
"supports": ["BANGLEJS"],
|
"supports": ["BANGLEJS"],
|
||||||
"screenshots": [{"url":"screenshot_basic.png"},{"url":"screenshot_info.png"}],
|
"screenshots": [{"url":"screenshot_basic.png"},{"url":"screenshot_info.png"}],
|
||||||
"storage": [
|
"storage": [
|
||||||
{"name":"schoolCalendar.app.js"},
|
{"name":"schoolCalendar.app.js"},
|
||||||
{"name":"schoolCalendar.img","url":"app-icon.js","evaluate":true}
|
{"name":"schoolCalendar.img","url":"app-icon.js","evaluate":true}
|
||||||
],
|
],
|
||||||
"data": [
|
"data": [
|
||||||
{"name":"app.json"}
|
{"name":"app.json"}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{ "id": "timecal",
|
||||||
|
"name": "TimeCal",
|
||||||
|
"shortName":"TimeCal",
|
||||||
|
"icon": "icon.png",
|
||||||
|
"version":"0.01",
|
||||||
|
"description": "TimeCal shows the Time along with a 3 week calendar",
|
||||||
|
"tags": "clock",
|
||||||
|
"type": "clock",
|
||||||
|
"supports":["BANGLEJS2"],
|
||||||
|
"storage": [
|
||||||
|
{"name":"timecal.app.js","url":"timecal.app.js"}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 15 KiB |
|
|
@ -1 +1,4 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
|
0.02: Remove messages on disconnect
|
||||||
|
Fix music control
|
||||||
|
0.03: Handling of message actions (ok/clear)
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
/* TODO: Call handling, fitness */
|
/* TODO: Call handling, fitness */
|
||||||
var HANDLERS = {
|
var HANDLERS = {
|
||||||
// {t:"notify",id:int, src,title,subject,body,sender,tel:string} add
|
// {t:"notify",id:int, src,title,subject,body,sender,tel:string} add
|
||||||
"notify" : function() { event.t="add";require("messages").pushMessage(event); },
|
"notify" : function() { Object.assign(event,{t:"add",positive:true, negative:true});require("messages").pushMessage(event); },
|
||||||
// {t:"notify~",id:int, title:string} // modified
|
// {t:"notify~",id:int, title:string} // modified
|
||||||
"notify~" : function() { event.t="modify";require("messages").pushMessage(event); },
|
"notify~" : function() { event.t="modify";require("messages").pushMessage(event); },
|
||||||
// {t:"notify-",id:int} // remove
|
// {t:"notify-",id:int} // remove
|
||||||
|
|
@ -33,7 +33,16 @@
|
||||||
// {t:"musicinfo", artist,album,track,dur,c(track count),n(track num}
|
// {t:"musicinfo", artist,album,track,dur,c(track count),n(track num}
|
||||||
"musicinfo" : function() {
|
"musicinfo" : function() {
|
||||||
require("messages").pushMessage(Object.assign(event, {t:"modify",id:"music",title:"Music"}));
|
require("messages").pushMessage(Object.assign(event, {t:"modify",id:"music",title:"Music"}));
|
||||||
}
|
},
|
||||||
|
// {"t":"call","cmd":"incoming/end","name":"Bob","number":"12421312"})
|
||||||
|
"call" : function() {
|
||||||
|
Object.assign(event, {
|
||||||
|
t:event.cmd=="incoming"?"add":"remove",
|
||||||
|
id:"call", src:"Phone",
|
||||||
|
positive:true, negative:true,
|
||||||
|
title:event.name||"Call", body:"Incoming call\n"+event.number});
|
||||||
|
require("messages").pushMessage(event);
|
||||||
|
},
|
||||||
};
|
};
|
||||||
var h = HANDLERS[event.t];
|
var h = HANDLERS[event.t];
|
||||||
if (h) h(); else console.log("GB Unknown",event);
|
if (h) h(); else console.log("GB Unknown",event);
|
||||||
|
|
@ -42,6 +51,7 @@
|
||||||
// Battery monitor
|
// Battery monitor
|
||||||
function sendBattery() { gbSend({ t: "status", bat: E.getBattery() }); }
|
function sendBattery() { gbSend({ t: "status", bat: E.getBattery() }); }
|
||||||
NRF.on("connect", () => setTimeout(sendBattery, 2000));
|
NRF.on("connect", () => setTimeout(sendBattery, 2000));
|
||||||
|
NRF.on("disconnect", () => require("messages").clearAll()); // remove all messages on disconnect
|
||||||
setInterval(sendBattery, 10*60*1000);
|
setInterval(sendBattery, 10*60*1000);
|
||||||
// Health tracking
|
// Health tracking
|
||||||
Bangle.on('health', health=>{
|
Bangle.on('health', health=>{
|
||||||
|
|
@ -50,6 +60,12 @@
|
||||||
// Music control
|
// Music control
|
||||||
Bangle.musicControl = cmd => {
|
Bangle.musicControl = cmd => {
|
||||||
// play/pause/next/previous/volumeup/volumedown
|
// play/pause/next/previous/volumeup/volumedown
|
||||||
gbSend({ t: "music", m:cmd });
|
gbSend({ t: "music", n:cmd });
|
||||||
}
|
};
|
||||||
|
// Message response
|
||||||
|
Bangle.messageResponse = (msg,response) => {
|
||||||
|
if (msg.id=="call") return gbSend({ t: "call", n:response?"ACCEPT":"REJECT" });
|
||||||
|
if (isFinite(msg.id)) return gbSend({ t: "notify", n:response?"OPEN":"DISMISS" });
|
||||||
|
// error/warn here?
|
||||||
|
};
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -5,4 +5,5 @@
|
||||||
0.05: Clock does not start if app Languages is not installed
|
0.05: Clock does not start if app Languages is not installed
|
||||||
0.06: Improve accuracy
|
0.06: Improve accuracy
|
||||||
0.07: Update to use Bangle.setUI instead of setWatch
|
0.07: Update to use Bangle.setUI instead of setWatch
|
||||||
0.08: Use theme colors, Layout library
|
0.08: Use theme colors, Layout library
|
||||||
|
0.09: Fix time/date disappearing after fullscreen notification
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ function renderBar(l) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const width = this.fraction*l.w;
|
const width = this.fraction*l.w;
|
||||||
g.fillRect(l.x, l.y, width-1, l.y+l.height-1);
|
g.fillRect(l.x, l.y, l.x+width-1, l.y+l.height-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
const Layout = require("Layout");
|
const Layout = require("Layout");
|
||||||
|
|
@ -78,7 +78,7 @@ function dateText(date) {
|
||||||
return `${dayName} ${dayMonth}`;
|
return `${dayName} ${dayMonth}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
draw = function draw() {
|
draw = function draw(force) {
|
||||||
if (!Bangle.isLCDOn()) {return;} // no drawing, also no new update scheduled
|
if (!Bangle.isLCDOn()) {return;} // no drawing, also no new update scheduled
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
layout.time.label = timeText(date);
|
layout.time.label = timeText(date);
|
||||||
|
|
@ -86,6 +86,10 @@ draw = function draw() {
|
||||||
layout.date.label = dateText(date);
|
layout.date.label = dateText(date);
|
||||||
const SECONDS_PER_MINUTE = 60;
|
const SECONDS_PER_MINUTE = 60;
|
||||||
layout.bar.fraction = date.getSeconds()/SECONDS_PER_MINUTE;
|
layout.bar.fraction = date.getSeconds()/SECONDS_PER_MINUTE;
|
||||||
|
if (force) {
|
||||||
|
Bangle.drawWidgets();
|
||||||
|
layout.forgetLazyState();
|
||||||
|
}
|
||||||
layout.render();
|
layout.render();
|
||||||
// schedule update at start of next second
|
// schedule update at start of next second
|
||||||
const millis = date.getMilliseconds();
|
const millis = date.getMilliseconds();
|
||||||
|
|
@ -96,7 +100,7 @@ draw = function draw() {
|
||||||
Bangle.setUI("clock");
|
Bangle.setUI("clock");
|
||||||
Bangle.on("lcdPower", function(on) {
|
Bangle.on("lcdPower", function(on) {
|
||||||
if (on) {
|
if (on) {
|
||||||
draw();
|
draw(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
g.reset().clear();
|
g.reset().clear();
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.2 KiB |
|
|
@ -1,3 +1,4 @@
|
||||||
0.01: start of development
|
0.01: start of development
|
||||||
0.02: first running version for BangleJs2
|
0.02: first running version for BangleJs2
|
||||||
0.03: corrected icon, added screen shot, extended description
|
0.03: corrected icon, added screen shot, extended description
|
||||||
|
0.04: corrected format of background image (raw binary)
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@
|
||||||
require("Font7x11Numeric7Seg").add(Graphics);
|
require("Font7x11Numeric7Seg").add(Graphics);
|
||||||
require("Font5x7Numeric7Seg").add(Graphics);
|
require("Font5x7Numeric7Seg").add(Graphics);
|
||||||
|
|
||||||
|
|
||||||
/* constants and definitions */
|
/* constants and definitions */
|
||||||
|
|
||||||
/* Bangle 2: 176 x 176 */
|
/* Bangle 2: 176 x 176 */
|
||||||
|
|
@ -63,7 +62,7 @@ const V2_BAT_SIZE_Y = 2;
|
||||||
|
|
||||||
const V2_SCREEN_SIZE_X = 176;
|
const V2_SCREEN_SIZE_X = 176;
|
||||||
const V2_SCREEN_SIZE_Y = 176;
|
const V2_SCREEN_SIZE_Y = 176;
|
||||||
const V2_BACKGROUND_IMAGE = "Background176_center.png";
|
const V2_BACKGROUND_IMAGE = "binwatch.bg176.img";
|
||||||
const V2_BG_COLOR = 0;
|
const V2_BG_COLOR = 0;
|
||||||
const V2_FG_COLOR = 1;
|
const V2_FG_COLOR = 1;
|
||||||
|
|
||||||
|
|
@ -91,7 +90,7 @@ const V1_BAT_SIZE_X = 3;
|
||||||
const V1_BAT_SIZE_Y = 5;
|
const V1_BAT_SIZE_Y = 5;
|
||||||
const V1_SCREEN_SIZE_X = 240;
|
const V1_SCREEN_SIZE_X = 240;
|
||||||
const V1_SCREEN_SIZE_Y = 240;
|
const V1_SCREEN_SIZE_Y = 240;
|
||||||
const V1_BACKGROUND_IMAGE = "Background240_center.png";
|
const V1_BACKGROUND_IMAGE = "binwatch.bg240.img";
|
||||||
const V1_BG_COLOR = 1;
|
const V1_BG_COLOR = 1;
|
||||||
const V1_FG_COLOR = 0;
|
const V1_FG_COLOR = 0;
|
||||||
|
|
||||||
|
|
@ -293,7 +292,7 @@ function setRuntimeValues(resolution) {
|
||||||
bat_size_x = V1_BAT_SIZE_X;
|
bat_size_x = V1_BAT_SIZE_X;
|
||||||
bat_size_y = V1_BAT_SIZE_Y;
|
bat_size_y = V1_BAT_SIZE_Y;
|
||||||
|
|
||||||
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
|
setWatch(toggleDateTime, BTN1, { repeat : true, edge: "falling"});
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
x_step = V2_X_STEP;
|
x_step = V2_X_STEP;
|
||||||
|
|
@ -362,8 +361,7 @@ function draw() {
|
||||||
updateVTime();
|
updateVTime();
|
||||||
g.clear();
|
g.clear();
|
||||||
g.drawImages([{image:cgimg},
|
g.drawImages([{image:cgimg},
|
||||||
{image:require("Storage").read(backgroundImage)},
|
{image:require("Storage").read(backgroundImage)}
|
||||||
// { x:bt_x, y:bt_y, rotate: 0, image:require("Storage").read("bt-icon.png")},
|
|
||||||
]);
|
]);
|
||||||
drawBT(g, NRF.getSecurityStatus().connected);
|
drawBT(g, NRF.getSecurityStatus().connected);
|
||||||
// Bangle.drawWidgets();
|
// Bangle.drawWidgets();
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 4.1 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 9.4 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
After Width: | Height: | Size: 3.5 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
|
@ -1 +1 @@
|
||||||
require("heatshrink").decompress(atob("mEwghC/AEkIxAABwUiAAwKBC6+AC6ERiIXDGBAXPGA8JzIAByQXKGA4XUA4eDmYAGJwQXVxEizAXPIgIXDwWZC6uIxIwCC6eIGAQX/C9i/FC5mCCw0yC5wAMC/4Xnx//ABf4C/Xzdw8zn4XkL/5f/L+oUDI6YX3AB4XeAH4AdA=="))
|
require("heatshrink").decompress(atob("mEw4cA///7c0AYMXlm3gf42s1yvb5xT/ABdJkmStu27YCCtMkCKOACJdm7YRCyARQyQRLBwIRDoARTgVLtu3K4tJl4RQkvpCJdbtwRBkm5CKGZCKGTCKGSsgR/R4gRHpIMBCInaCJIIBARAR/CJtPB5FLCI1KEhMSCLN//4AE/QRbI/5H/CI4PCGpwRXp4RIpZFDCIQiJAQIRWAH4AGA"))
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 2.3 KiB |
|
|
@ -26,3 +26,4 @@
|
||||||
0.22: Ensure Bangle.setGPSPower uses 'gpsrec' as a tag
|
0.22: Ensure Bangle.setGPSPower uses 'gpsrec' as a tag
|
||||||
0.23: Fix issue where tracks wouldn't record when running from OpenStMap if a period hadn't been set up first
|
0.23: Fix issue where tracks wouldn't record when running from OpenStMap if a period hadn't been set up first
|
||||||
0.24: Better support for Bangle.js 2, avoid widget area for Graphs, smooth graphs more
|
0.24: Better support for Bangle.js 2, avoid widget area for Graphs, smooth graphs more
|
||||||
|
0.25: Fix issue where if Bangle.js 2 got a GPS fix but no reported time, errors could be caused by the widget (fix #935)
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@
|
||||||
fixToggle = !fixToggle;
|
fixToggle = !fixToggle;
|
||||||
WIDGETS["gpsrec"].draw();
|
WIDGETS["gpsrec"].draw();
|
||||||
if (hasFix) {
|
if (hasFix) {
|
||||||
|
if (fix.time===undefined) fix.time = new Date(); // Bangle.js 2 can provide a fix before time it seems
|
||||||
var period = fix.time.getTime() - lastFixTime;
|
var period = fix.time.getTime() - lastFixTime;
|
||||||
if (period+500 > settings.period*1000) { // round up
|
if (period+500 > settings.period*1000) { // round up
|
||||||
lastFixTime = fix.time.getTime();
|
lastFixTime = fix.time.getTime();
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
|
@ -1 +1,3 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
|
0.02: Remove messages on disconnect
|
||||||
|
0.03: Handling of message actions (ok/clear)
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,14 @@ E.on('AMS',a=>{
|
||||||
Bangle.musicControl = cmd => {
|
Bangle.musicControl = cmd => {
|
||||||
// play, pause, playpause, next, prev, volup, voldown, repeat, shuffle, skipforward, skipback, like, dislike, bookmark
|
// play, pause, playpause, next, prev, volup, voldown, repeat, shuffle, skipforward, skipback, like, dislike, bookmark
|
||||||
NRF.amsCommand(cmd);
|
NRF.amsCommand(cmd);
|
||||||
}
|
};
|
||||||
|
// Message response
|
||||||
|
Bangle.messageResponse = (msg,response) => {
|
||||||
|
if (isFinite(msg.id)) return NRF.sendANCSAction(msg.id, response);//true/false
|
||||||
|
// error/warn here?
|
||||||
|
};
|
||||||
|
// remove all messages on disconnect
|
||||||
|
NRF.on("disconnect", () => require("messages").clearAll());
|
||||||
|
|
||||||
/*
|
/*
|
||||||
// For testing...
|
// For testing...
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 4.9 KiB |
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -1,3 +1,5 @@
|
||||||
0.01: Launch app
|
0.01: Launch app.
|
||||||
0.02: Swipe left/right to set an alarm.
|
0.02: Swipe left/right to set an alarm.
|
||||||
0.03: New design with different icons if gps, hrm or compass is on.
|
0.03: New design with different icons if gps, hrm or compass is on.
|
||||||
|
0.04: Inluded LCARS Logo.
|
||||||
|
0.05: Additional icons for (1) charging and (2) bat < 30%.
|
||||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
|
@ -3,12 +3,12 @@
|
||||||
*/
|
*/
|
||||||
const locale = require('locale');
|
const locale = require('locale');
|
||||||
var alarm = -1;
|
var alarm = -1;
|
||||||
var hrmStr = "-"
|
var hrmValue = "-";
|
||||||
|
|
||||||
var backgroundImage = {
|
var backgroundImage = {
|
||||||
width : 176, height : 151, bpp : 3,
|
width : 176, height : 151, bpp : 3,
|
||||||
transparent : 2,
|
transparent : 2,
|
||||||
buffer : require("heatshrink").decompress(atob("AEcEiFBASFADpETps06YCcEYXnz15ASBBJzVp0wCdEYU8+fPASHAIJCAdQf6DpoUIkGCATCDWIBCDDzANJAGaDC6BB9QYWAQf804CD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/QbhA9Qf6D2oMEiFAQfoyB6ZBKQeYyBzVgQf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6Dnz1586D+AGaDNAGaD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qc8Bg8euPv337ASHwDQNz588+YCC5AlCjR6CARCDN+/fvoCV6AbBj158+eAQV4EwUTPQQCIQZcB859SQdkPQCyDpvaAWQbmYIBUDQC6DQAC8eQC6DQAC8XQf6D/AASAYQdCAYQf6DHAESDeAESD/Qf6D/Qf6DK+2LtmXQfu8FEiDb8BB9QYRA9QYZB+Qf6D/AAccuPHIPwA/AH4A/AH4AHyVJkhB+zVp0yD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6DlwCD/02QQf8kyVIkGChACeFAMo0WKAQOIC56/CQYQCi0kAgMv33794CUQYYChQYU9+/fvoCTviD/Qf6D/Qf6D/Qf6DLjSD/94="))
|
buffer : require("heatshrink").decompress(atob("AAdx48cATojCufPnnzASocCyVJkgCdyAkCh158+eASsAgMHQDyDggKAeQcKAgQYodZgRoFpAkCAG0QJQtwIPMSQYtAIPLOGQfSADAQRA5Qf6D6g/gQf8H/iD/n//wCD9gP/Qf5BBQf5BC+CD9h5BB/yD8jl/IIPx46D6g4/BQYU//+AQe8B/6DD//Hj/x4CD2v/4AQJBC4ED/4IBQegvBPQJBERgSD1j/wgB9BAASACn/gQepECIIaACg/8QeY1DQYjCD/+AQeUHQZSPDwUIkACDQdT7DIJEfQYIAxg44DIJHwIOU/fwYAERgUDIOUBPQhBE/hB1QZRBFjlx44CDuBBpg4CCHwdxIIcfIIPnz15AQeAQdT+CIIXgZwJBDHAM8+fPAQbOqQY0AIIkcAQKDxg44BIIX4RgX/GoICCQeR3BIIXARIfwJoSDyfYI4B//+BAaABn/gAoKDxfYNx459BJQnx/4FCQeUAv7EBIIv//AFCQeUAgPH/lwAwUHQYPAQe0An6EBAAfj/wMDQeZ9B/jIC//HgCJDQe3gAYICCgF+Qe8B/4IGIIiD0nAHGhyD3ABqD0ABiD/Qf4ADjiD/gEnQYuQQf6D7gaDFzxB5gFzQYnz4JB5hyDFATfkEwUN23btoCVgEBQYoCcIIRhZDYMJQf4ABjiD/AH4A/AH4AGiFx48cATokCufPnnzASocCyVJkgCdyAkCj158+eASsAgKAfQcEJQDyDhNA8QoMEAQIqCACweEASkCNAtIHbIAfdI1wIPMSQYtAQf6D7QAYCCIHKD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/AH4A/AH4A/AH4Asjlx44CDsBB57dt2wCDQfWevPnAQaD/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf4Akjlx44CDQfQA/AH4A/AH4A/ABM8+fPAQfwIPPnz15AQeAQf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf6D/Qf4AZjiD/gEHQYuQQf6D7gaDFzxB5gFzQYnz48cuICZEwQdZgECQYoCb8hBChMkyVJASsAgPHQYgCcQboABQf4ABfzACIQbg="))
|
||||||
}
|
}
|
||||||
|
|
||||||
var iconPlanet = {
|
var iconPlanet = {
|
||||||
|
|
@ -23,12 +23,6 @@ var iconGps = {
|
||||||
buffer : require("heatshrink").decompress(atob("pMkyQCFpH0BAwCJv/6CJ8l589CJ0kyf//wIDpVEChM8+/fBAdZ8QRIp++///0gIBlMkxI4IuZKB+/SKAPHzpKJ/YkB//pKAP2BYeXhIFDx88+fPvqYBnibEkmUAofv34lC/RQBBYdcmPCXIYjBEwPfvnzJoILBQoUlHAUuJQYmCDodw48cuBKGTA0WEYIEBJQ6YEQwMMuImBJQyYEkmZFAVkyVSJQ6YCyUcmPDjgmBTAJKETAlJiS4ETANPJQpxCJQtxTALgBEwnfvohBI4NZkmWpNlcAgAD/wzBEYaYCy8cJQiYEyIjCTAWS3wlGTAVIEwkerJKFTAkmOIclToK8GAAIPBIgImCufHyxxG59pEIS8DvfypMr968HEwOHEwfx8+cEYkpCIeSoiYByVf/uSkmTEQP7ZIiYDnl5AQNwBYgCGyOn38k2+2pIRKyVeuPPj1x4ccCJVKSgP/5cJA4NSExMps+cSoMMKAIVCCg7SBpd7TANZkmUHBMevPnjlwcwXCCJFEzYDBA4WWKIIRHpEw4+eNwUxEwKYIkVJk1IyIKFHA+DR4VcJQYCBJRBoCkxHBAgNkyyYKkmXEYaYMAQMSEYKYNAQOHEwnSfBYjBAgVaCJdJJSMkTAK8KYQyVKAQ4jBNxiYEcBCYJXIkgA="))
|
buffer : require("heatshrink").decompress(atob("pMkyQCFpH0BAwCJv/6CJ8l589CJ0kyf//wIDpVEChM8+/fBAdZ8QRIp++///0gIBlMkxI4IuZKB+/SKAPHzpKJ/YkB//pKAP2BYeXhIFDx88+fPvqYBnibEkmUAofv34lC/RQBBYdcmPCXIYjBEwPfvnzJoILBQoUlHAUuJQYmCDodw48cuBKGTA0WEYIEBJQ6YEQwMMuImBJQyYEkmZFAVkyVSJQ6YCyUcmPDjgmBTAJKETAlJiS4ETANPJQpxCJQtxTALgBEwnfvohBI4NZkmWpNlcAgAD/wzBEYaYCy8cJQiYEyIjCTAWS3wlGTAVIEwkerJKFTAkmOIclToK8GAAIPBIgImCufHyxxG59pEIS8DvfypMr968HEwOHEwfx8+cEYkpCIeSoiYByVf/uSkmTEQP7ZIiYDnl5AQNwBYgCGyOn38k2+2pIRKyVeuPPj1x4ccCJVKSgP/5cJA4NSExMps+cSoMMKAIVCCg7SBpd7TANZkmUHBMevPnjlwcwXCCJFEzYDBA4WWKIIRHpEw4+eNwUxEwKYIkVJk1IyIKFHA+DR4VcJQYCBJRBoCkxHBAgNkyyYKkmXEYaYMAQMSEYKYNAQOHEwnSfBYjBAgVaCJdJJSMkTAK8KYQyVKAQ4jBNxiYEcBCYJXIkgA="))
|
||||||
}
|
}
|
||||||
|
|
||||||
var iconHrm = {
|
|
||||||
width : 50, height : 50, bpp : 3,
|
|
||||||
transparent : 1,
|
|
||||||
buffer : require("heatshrink").decompress(atob("kmSpIC/AX4CT+PHjlxARfBkmGjFhAR2REZwCC7AjPAQIjQ48dw0//4ANsOB49/CJv8JQNjEh32JQN3BY/5AwpKLkhKQ8+eBIhKK/jZBJR/+vPnJR/JkmTJR3xJQN5JRPypMkz5uByfJk5KI/zXCFQMev/nC4JKIkhrBn4pB/+Sp5KJfwnnOIqVHSQS5CFgaVIDQPHj4FBOIJNCSo/9EAI/CFIJNCSo/njiSC/KYDcBH6IgQAFcBHx44RGcBYAHcBIAHJRAAJJRAAJJSrdEARfYsOGjACOngjP48EyQdHx04BAtkyTnCAQYsCDoILGAQ2OnfvCJ2TIgNwCJuSpHj335CJnxNYvBChU48ZKC3378gRJp6SGiQ4JkaSBJQP7EwIOEyA"))
|
|
||||||
}
|
|
||||||
|
|
||||||
var iconCompass = {
|
var iconCompass = {
|
||||||
width : 50, height : 50, bpp : 3,
|
width : 50, height : 50, bpp : 3,
|
||||||
transparent : 2,
|
transparent : 2,
|
||||||
|
|
@ -41,6 +35,18 @@ var iconAlarm = {
|
||||||
buffer : require("heatshrink").decompress(atob("kmSpICEp//BAwCJn/+CJ8k//5CKAABCJs8uPH//x48EI5YjCAARNKEYUcv//jgFBExEnEYoAC+QmHIgIgC/gpCuPBCI2fIgU4AQXjA4P8CIuTEYZKBAolwHApXBEAWP//jxwpBAALaFDoYCIiQmDDIP4EAT+CEwnJEwYjLAQLaFEYomDKALmDNwoCIOIZuD8AkFgCYDHAQjMAQTdDNwOAEg0Dx0/cYeREZtxQYOTHgJuHOIvkXJy8DNwIACJQ8Ah4NDAAfxEZARHOIIkHg4jQAQb1CQ4KVJgEOnDIBSoIjNAQPBcAaVJcAKVBcDGOcD7OBMQM48BuH8f//JKCnhKNggRBkmfTQJxBEwhuD/gRCyVHJRlyCIVJXgYmB8ZQBAoIKBXIQmCOIt/NxAUCOIImCIgIpCBAJuDAQZEE/huIAQWTDgImBTYQGC8gRFcYpKFCI8kDwQAFCJBfBEAX/+IjBiQRIEw4jJAQc8v//NYwCIOgJrIJpA1OcwbaFAQWQA="))
|
buffer : require("heatshrink").decompress(atob("kmSpICEp//BAwCJn/+CJ8k//5CKAABCJs8uPH//x48EI5YjCAARNKEYUcv//jgFBExEnEYoAC+QmHIgIgC/gpCuPBCI2fIgU4AQXjA4P8CIuTEYZKBAolwHApXBEAWP//jxwpBAALaFDoYCIiQmDDIP4EAT+CEwnJEwYjLAQLaFEYomDKALmDNwoCIOIZuD8AkFgCYDHAQjMAQTdDNwOAEg0Dx0/cYeREZtxQYOTHgJuHOIvkXJy8DNwIACJQ8Ah4NDAAfxEZARHOIIkHg4jQAQb1CQ4KVJgEOnDIBSoIjNAQPBcAaVJcAKVBcDGOcD7OBMQM48BuH8f//JKCnhKNggRBkmfTQJxBEwhuD/gRCyVHJRlyCIVJXgYmB8ZQBAoIKBXIQmCOIt/NxAUCOIImCIgIpCBAJuDAQZEE/huIAQWTDgImBTYQGC8gRFcYpKFCI8kDwQAFCJBfBEAX/+IjBiQRIEw4jJAQc8v//NYwCIOgJrIJpA1OcwbaFAQWQA="))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var iconCharging = {
|
||||||
|
width : 50, height : 50, bpp : 3,
|
||||||
|
transparent : 5,
|
||||||
|
buffer : require("heatshrink").decompress(atob("23btugAwUBtoICARG0h048eODQYCJ6P/AAUCCJfbo4SDxYRLtEcuPHjlwgoRJ7RnIloUHoYjDAQfAExEAwUIkACEkSAIEYwCBhZKH6EIJI0CJRFHEY0BJRWBSgf//0AJRYSE4BKLj4SE8BKLv4RD/hK/JS2AXY0gXwRKG4cMmACCJQMAg8csEFJQsBAwfasEAm379u0gFbcBfHzgFBz1xMQZKBjY/D0E2+BOChu26yVEEYdww+cgAFCg+cgIfB6RKF4HbgEIkGChEAthfCJQ0eEAIjBBAMxk6GCJQtgtyVBwRKBAQMbHAJKGXIIFCgACBhl54qVG2E+EAJKBJoWAm0WJQ6SCXgdxFgMLJQvYjeAEAUwFIUitEtJQ14NwUHgEwKYZKGwOwNYX7XgWCg3CJQ5rB4MevPnAoPDJRJrCgEG/ECAoNsJRUwoEesIIBiJKI3CVDti/CJRKVDiJHBSo0YsOGjED8AjBcAcIgdhcAXAPIUAcAYIBcA4dBAQUG8BrBgBuCgOwcBEeXIK2BBAIFBgRqBGoYAChq8CcYUE4FbUYOACQsHzgjDgwFBCIImBAQsDtwYD7cAloRI22B86YBw5QBgoRJ7dAgYEDCJaeBJoMcsARMAQNoJIIRE6A"))
|
||||||
|
}
|
||||||
|
|
||||||
|
var iconNoBattery = {
|
||||||
|
width : 50, height : 50, bpp : 3,
|
||||||
|
transparent : 2,
|
||||||
|
buffer : require("heatshrink").decompress(atob("pMkyQCoycMmHDhgLEqVECg1Bw0YsOGBAdKpMSEwwjCmHCBAYDBHA4jCjFpBAUpkmJJR0lkmRL49Fy1ZsuWBAWkyQRGxcs2XLAQe0ymSNw9t23bAQnSyVICI1IEYoCBqSAIkwjF7dupMiQA5KH/KSIJQ+5SRBKH2fkSRBKH8iSHJRHPSRBKIH4PSCJBKFn1JhYRIJQqSBkdtJRscSQLgBJRliAwONcAJKM9MkyAFBJRm/AwM2AoJKMUgNCFIJKM7A8BOgRKMmVJg8MJRqSBAwMGJRqSBzVpJRu5kmTpMhJRmz8mQ2emJRqABm3cyK/BJRWPSQUauRKMSQVmpFbJRdSpMLOIODX4JKJpVJkYgB+gCBJRQDBEAQCDJREpkmNEAQCDJQ8lkmQEYpKJ0mScAIjEJRGUyVEcAJKNSQLgBJRqSBiVIJRqSBkTgBJRoDBAIJKNSQOJAoJKN0mRAoJKOyQFCSp4CikAA="))
|
||||||
|
}
|
||||||
|
|
||||||
Graphics.prototype.setFontAntonioMedium = function(scale) {
|
Graphics.prototype.setFontAntonioMedium = function(scale) {
|
||||||
// Actual height 18 (17 - 0)
|
// Actual height 18 (17 - 0)
|
||||||
g.setFontCustom(atob("AAAAAAAAAAAAAAAf4Mf/sYAMAAAAAAfgAfAAAAAfgAeAAAAAAiAAj8H/4fyEAv8f/gfiAAgAAAAD54H98eOPHn8Hz8AhwAAAP8Af+AYGAYCAf+AP8MAB8AHwA+AD4AfAAcf4A/8AwMAwMA/8Af4AAAAAwGD8f/8f8MY/cfz4PD8AHMAAAfAAeAAAAAAAAP/+f//YADAAAQABYADf//P/+AAAAAANAAPAAfwAfgAPAANAAAAAAEAAEAA/AA/AAEAAEAAAAAAZAAfAAYAAAAIAAIAAIAAIAAAAAAAAAMAAMAAAAAAAAEAB8Af4H+AfwAcAAAAAP/4f/8YAMf/8f/8H/wAAAAAAEAAMAAf/8f/8f/8AAAAAAAAAHgcfh8cH8YPMf8MPwEAAAAAAOB4eB8YYMY4Mf/8Pn4AAAAAgAHwA/wPwwf/8f/8AAwAAgAAAf54f58ZwMZwMY/8Qf4AAAAAAP/4f/8YYMYYMff8HP4AAAQAAYAAYD8Y/8f/AfgAcAAAAAAAAPv4f/8YYMY8Mf/8Pn4AAAAAAP94f98YGMcMMf/8H/wAAAAAABgwBgwAAAAAABgABg/Bg8AAAAEAAOAAbAA7gAxgBwwASAAbAAbAAbAAbAASAAAAAxwA5gAbAAPAAOAAAAPAAfHcYPcf8Af4AHgAAAAAAAB/gH/wOA4Y/MZ/sbAsbBkb/MZ/sOBsH/AAAAAAMAP8f/4fwwf4wH/8AH8AAMAAAf/8f/8YYMYYMf/8P/4ADgAAAP/4f/8YAMYAMfj8Pj4AAAAAAf/8f/8YAMYAMf/8P/4B/AAAAf/8f/8YMMYMMYIMAAAAAAf/8f/8YYAYYAYYAAAAAAAP/4f/8YAMYIMfP8Pv8AAAAAAf/8f/8AMAAMAf/8f/8f/8AAAAAAf/8f/8AAAAAAAD4AB8AAMf/8f/4f/gAAAAAAf/8f/8A+AD/gfj4eA8QAEAAAf/8f/8AAMAAMAAMAAAf/8f/8f8AB/wAB8AP8P/Af/8f/8AAAAAAf/8f/8HwAA+AAPwf/8f/8AAAAAAP/4f/8YAMYAMf/8P/4AAAAAAf/8f/8YGAYGAf8AP8ABAAAAAf/w//4wAYwAc//+f/yAAAAAAf/8f/8YMAYMAf/8f/8DA8CAAPj4fz8Y4MeeMfP8HD4YAAYAAf/8f/8YAAQAAAAAf/4f/8AAMAAMf/8f/4AAAYAAf4AP/4AP8AP8f/4fwAQAAYAAf8AP/8AD8D/8f8Af8AD/8AD8f/8f8AAAAQAEeB8P/4B/AP/4fA8QAEYAAfAAP4AB/8H/8fwAcAAAAMYD8Y/8f/MfwMcAMAAAf/+f//YADYADAAAAAAfAAf8AB/wAH8AAMQACYADf//f//AAAAA"), 32, atob("BAUHCAcTCAQFBQgGBAYFBggICAgICAgICAgEBQYGBggNCAgICAcHCAkECAgGCwkICAgIBwYICAwHBwYGBgY="), 18+(scale<<8)+(1<<16));
|
g.setFontCustom(atob("AAAAAAAAAAAAAAAf4Mf/sYAMAAAAAAfgAfAAAAAfgAeAAAAAAiAAj8H/4fyEAv8f/gfiAAgAAAAD54H98eOPHn8Hz8AhwAAAP8Af+AYGAYCAf+AP8MAB8AHwA+AD4AfAAcf4A/8AwMAwMA/8Af4AAAAAwGD8f/8f8MY/cfz4PD8AHMAAAfAAeAAAAAAAAP/+f//YADAAAQABYADf//P/+AAAAAANAAPAAfwAfgAPAANAAAAAAEAAEAA/AA/AAEAAEAAAAAAZAAfAAYAAAAIAAIAAIAAIAAAAAAAAAMAAMAAAAAAAAEAB8Af4H+AfwAcAAAAAP/4f/8YAMf/8f/8H/wAAAAAAEAAMAAf/8f/8f/8AAAAAAAAAHgcfh8cH8YPMf8MPwEAAAAAAOB4eB8YYMY4Mf/8Pn4AAAAAgAHwA/wPwwf/8f/8AAwAAgAAAf54f58ZwMZwMY/8Qf4AAAAAAP/4f/8YYMYYMff8HP4AAAQAAYAAYD8Y/8f/AfgAcAAAAAAAAPv4f/8YYMY8Mf/8Pn4AAAAAAP94f98YGMcMMf/8H/wAAAAAABgwBgwAAAAAABgABg/Bg8AAAAEAAOAAbAA7gAxgBwwASAAbAAbAAbAAbAASAAAAAxwA5gAbAAPAAOAAAAPAAfHcYPcf8Af4AHgAAAAAAAB/gH/wOA4Y/MZ/sbAsbBkb/MZ/sOBsH/AAAAAAMAP8f/4fwwf4wH/8AH8AAMAAAf/8f/8YYMYYMf/8P/4ADgAAAP/4f/8YAMYAMfj8Pj4AAAAAAf/8f/8YAMYAMf/8P/4B/AAAAf/8f/8YMMYMMYIMAAAAAAf/8f/8YYAYYAYYAAAAAAAP/4f/8YAMYIMfP8Pv8AAAAAAf/8f/8AMAAMAf/8f/8f/8AAAAAAf/8f/8AAAAAAAD4AB8AAMf/8f/4f/gAAAAAAf/8f/8A+AD/gfj4eA8QAEAAAf/8f/8AAMAAMAAMAAAf/8f/8f8AB/wAB8AP8P/Af/8f/8AAAAAAf/8f/8HwAA+AAPwf/8f/8AAAAAAP/4f/8YAMYAMf/8P/4AAAAAAf/8f/8YGAYGAf8AP8ABAAAAAf/w//4wAYwAc//+f/yAAAAAAf/8f/8YMAYMAf/8f/8DA8CAAPj4fz8Y4MeeMfP8HD4YAAYAAf/8f/8YAAQAAAAAf/4f/8AAMAAMf/8f/4AAAYAAf4AP/4AP8AP8f/4fwAQAAYAAf8AP/8AD8D/8f8Af8AD/8AD8f/8f8AAAAQAEeB8P/4B/AP/4fA8QAEYAAfAAP4AB/8H/8fwAcAAAAMYD8Y/8f/MfwMcAMAAAf/+f//YADYADAAAAAAfAAf8AB/wAH8AAMQACYADf//f//AAAAA"), 32, atob("BAUHCAcTCAQFBQgGBAYFBggICAgICAgICAgEBQYGBggNCAgICAcHCAkECAgGCwkICAgIBwYICAwHBwYGBgY="), 18+(scale<<8)+(1<<16));
|
||||||
|
|
@ -72,62 +78,64 @@ function draw(queue){
|
||||||
g.drawImage(backgroundImage, 0, 24);
|
g.drawImage(backgroundImage, 0, 24);
|
||||||
|
|
||||||
// Draw raster
|
// Draw raster
|
||||||
for(var x=0; x<6; x++){
|
// g.drawLine(112, 100, 112, 165);
|
||||||
g.drawLine(115+x*10, 100, 115+x*10, 160);
|
for(var x=1; x<7; x++){
|
||||||
|
g.drawLine(110+x*10, 100, 110+x*10, 160);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(var y=0; y<6; y++){
|
for(var y=0; y<6; y++){
|
||||||
g.drawLine(110, 105+y*10, 170, 105+y*10);
|
g.drawLine(113, 105+y*10, 175, 105+y*10);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Draw symbol
|
// Draw symbol
|
||||||
|
var bat = E.getBattery();
|
||||||
|
|
||||||
var iconImg =
|
var iconImg =
|
||||||
alarm >= 0 ? iconAlarm :
|
alarm >= 0 ? iconAlarm :
|
||||||
Bangle.isGPSOn() ? iconGps :
|
Bangle.isCharging() ? iconCharging :
|
||||||
Bangle.isHRMOn() ? iconHrm :
|
bat < 30 ? iconNoBattery :
|
||||||
Bangle.isCompassOn() ? iconCompass :
|
Bangle.isGPSOn() ? iconGps :
|
||||||
iconPlanet;
|
Bangle.isCompassOn() ? iconCompass :
|
||||||
g.drawImage(iconImg, 115, 105);
|
iconPlanet;
|
||||||
|
g.drawImage(iconImg, 120, 107);
|
||||||
|
|
||||||
|
// Alarm within symbol
|
||||||
|
g.setFontAntonioMedium();
|
||||||
|
if(alarm > 0){
|
||||||
|
g.setFontAlign(0,0,0);
|
||||||
|
g.drawString(alarm, 120+25, 107+25);
|
||||||
|
g.setFontAlign(-1,-1,0);
|
||||||
|
}
|
||||||
|
|
||||||
// Write time
|
// Write time
|
||||||
var currentDate = new Date();
|
var currentDate = new Date();
|
||||||
var timeStr = locale.time(currentDate,1);
|
var timeStr = locale.time(currentDate,1);
|
||||||
g.setFontAlign(0,0,0);
|
g.setFontAlign(0,0,0);
|
||||||
g.setFontAntonioLarge();
|
g.setFontAntonioLarge();
|
||||||
g.drawString(timeStr, 57, 57);
|
g.drawString(timeStr, 60, 55);
|
||||||
|
|
||||||
// Write date
|
// Write date
|
||||||
g.setFontAlign(1,-1, 0);
|
g.setFontAlign(-1,-1, 0);
|
||||||
g.setFontAntonioMedium();
|
g.setFontAntonioMedium();
|
||||||
|
|
||||||
var dayName = locale.dow(currentDate, true).toUpperCase();
|
var dayName = locale.dow(currentDate, true).toUpperCase();
|
||||||
var day = currentDate.getDate();
|
var day = currentDate.getDate();
|
||||||
g.drawString(day, 133, 37);
|
g.drawString(day, 100, 35);
|
||||||
g.drawString(dayName, 133, 57);
|
g.drawString(dayName, 100, 55);
|
||||||
|
|
||||||
// Alarm within symbol
|
|
||||||
if(alarm > 0){
|
|
||||||
g.setFontAlign(0,0,0);
|
|
||||||
g.drawString(alarm, 115+25, 105+25);
|
|
||||||
g.setFontAlign(-1,-1,0);
|
|
||||||
}
|
|
||||||
|
|
||||||
// HRM
|
// HRM
|
||||||
g.setFontAlign(-1,-1,0);
|
g.setFontAlign(-1,-1,0);
|
||||||
g.drawString("HRM:", 20, 104);
|
g.drawString("HRM:", 28, 102);
|
||||||
g.drawString(hrmStr, 60, 104);
|
g.drawString(hrmValue, 63, 102);
|
||||||
|
|
||||||
// Draw steps
|
// Draw steps
|
||||||
var steps = getSteps();
|
var steps = getSteps();
|
||||||
g.drawString("STEP:", 20, 124);
|
g.drawString("STEP:", 28, 122);
|
||||||
g.drawString(steps, 60, 124);
|
g.drawString(steps, 63, 122);
|
||||||
|
|
||||||
// Draw battery
|
// Draw battery
|
||||||
var bat = E.getBattery();
|
g.drawString("BAT:", 28, 142);
|
||||||
var charging = Bangle.isCharging() ? "*" : "";
|
g.drawString(bat+ "%", 63, 142);
|
||||||
g.drawString("BAT:", 20, 144);
|
|
||||||
g.drawString(charging + bat+ "%", 60, 144);
|
|
||||||
|
|
||||||
|
|
||||||
// Queue draw in one minute
|
// Queue draw in one minute
|
||||||
if(queue){
|
if(queue){
|
||||||
|
|
@ -153,6 +161,13 @@ function stepsWidget() {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* HRM
|
||||||
|
*/
|
||||||
|
Bangle.on('HRM',function(hrm) {
|
||||||
|
hrmValue = hrm.bpm;
|
||||||
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle alarm
|
* Handle alarm
|
||||||
*/
|
*/
|
||||||
|
|
@ -214,14 +229,6 @@ Bangle.on('swipe',function(dir) {
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Measure heart rate
|
|
||||||
*/
|
|
||||||
Bangle.on('HRM', function(hrm) {
|
|
||||||
hrmStr = hrm.bpm;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Stop updates when LCD is off, restart when on
|
* Stop updates when LCD is off, restart when on
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
|
@ -1,3 +1,5 @@
|
||||||
0.01: New App!
|
0.01: New App!
|
||||||
0.02: Add 'messages' library
|
0.02: Add 'messages' library
|
||||||
0.03: Fixes for Bangle.js 1
|
0.03: Fixes for Bangle.js 1
|
||||||
|
0.04: Add require("messages").clearAll()
|
||||||
|
0.05: Handling of message actions (ok/clear)
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,8 @@
|
||||||
{"t":"add","id":1575479849,"src":"Hangouts","title":"A Name","body":"message contents"}
|
{"t":"add","id":1575479849,"src":"Hangouts","title":"A Name","body":"message contents"}
|
||||||
// maps
|
// maps
|
||||||
{"t":"add","id":1,"src":"Maps","title":"0 yd - High St","body":"Campton - 11:48 ETA","img":"GhqBAAAMAAAHgAAD8AAB/gAA/8AAf/gAP/8AH//gD/98B//Pg/4B8f8Afv+PP//n3/f5//j+f/wfn/4D5/8Aef+AD//AAf/gAD/wAAf4AAD8AAAeAAADAAA="}
|
{"t":"add","id":1,"src":"Maps","title":"0 yd - High St","body":"Campton - 11:48 ETA","img":"GhqBAAAMAAAHgAAD8AAB/gAA/8AAf/gAP/8AH//gD/98B//Pg/4B8f8Afv+PP//n3/f5//j+f/wfn/4D5/8Aef+AD//AAf/gAD/wAAf4AAD8AAAeAAADAAA="}
|
||||||
|
// call
|
||||||
|
{"t":"add","id":"call","src":"Phone","name":"Bob","number":"12421312",positive:true,negative:true}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Layout = require("Layout");
|
var Layout = require("Layout");
|
||||||
|
|
@ -55,9 +56,16 @@ function saveMessages() {
|
||||||
function getBackImage() {
|
function getBackImage() {
|
||||||
return atob("FhYBAAAAEAAAwAAHAAA//wH//wf//g///BwB+DAB4EAHwAAPAAA8AADwAAPAAB4AAHgAB+AH/wA/+AD/wAH8AA==");
|
return atob("FhYBAAAAEAAAwAAHAAA//wH//wf//g///BwB+DAB4EAHwAAPAAA8AADwAAPAAB4AAHgAB+AH/wA/+AD/wAH8AA==");
|
||||||
}
|
}
|
||||||
|
function getPosImage() {
|
||||||
|
return atob("GRSBAAAAAYAAAcAAAeAAAfAAAfAAAfAAAfAAAfAAAfBgAfA4AfAeAfAPgfAD4fAA+fAAP/AAD/AAA/AAAPAAADAAAA==");
|
||||||
|
}
|
||||||
|
function getNegImage() {
|
||||||
|
return atob("FhaBADAAMeAB78AP/4B/fwP4/h/B/P4D//AH/4AP/AAf4AB/gAP/AB/+AP/8B/P4P4fx/A/v4B//AD94AHjAAMA=");
|
||||||
|
}
|
||||||
function getMessageImage(msg) {
|
function getMessageImage(msg) {
|
||||||
if (msg.img) return atob(msg.img);
|
if (msg.img) return atob(msg.img);
|
||||||
var s = (msg.src||"").toLowerCase();
|
var s = (msg.src||"").toLowerCase();
|
||||||
|
if (s=="Phone") return atob("FxeBABgAAPgAAfAAB/AAD+AAH+AAP8AAP4AAfgAA/AAA+AAA+AAA+AAB+AAB+AAB+OAB//AB//gB//gA//AA/8AAf4AAPAA=");
|
||||||
if (s=="skype") return atob("GhoBB8AAB//AA//+Af//wH//+D///w/8D+P8Afz/DD8/j4/H4fP5/A/+f4B/n/gP5//B+fj8fj4/H8+DB/PwA/x/A/8P///B///gP//4B//8AD/+AAA+AA==");
|
if (s=="skype") return atob("GhoBB8AAB//AA//+Af//wH//+D///w/8D+P8Afz/DD8/j4/H4fP5/A/+f4B/n/gP5//B+fj8fj4/H8+DB/PwA/x/A/8P///B///gP//4B//8AD/+AAA+AA==");
|
||||||
if (s=="hangouts") return atob("FBaBAAH4AH/gD/8B//g//8P//H5n58Y+fGPnxj5+d+fmfj//4//8H//B//gH/4A/8AA+AAHAABgAAAA=");
|
if (s=="hangouts") return atob("FBaBAAH4AH/gD/8B//g//8P//H5n58Y+fGPnxj5+d+fmfj//4//8H//B//gH/4A/8AA+AAHAABgAAAA=");
|
||||||
if (s=="whatsapp") return atob("GBiBAAB+AAP/wAf/4A//8B//+D///H9//n5//nw//vw///x///5///4///8e//+EP3/APn/wPn/+/j///H//+H//8H//4H//wMB+AA==");
|
if (s=="whatsapp") return atob("GBiBAAB+AAP/wAf/4A//8B//+D///H9//n5//nw//vw///x///5///4///8e//+EP3/APn/wPn/+/j///H//+H//8H//4H//wMB+AA==");
|
||||||
|
|
@ -154,6 +162,28 @@ function showMessage(msgid) {
|
||||||
if (g.setFont(titleFont).stringWidth(title) > w)
|
if (g.setFont(titleFont).stringWidth(title) > w)
|
||||||
title = g.wrapString(title, w).join("\n");
|
title = g.wrapString(title, w).join("\n");
|
||||||
}
|
}
|
||||||
|
var buttons = [
|
||||||
|
{type:"btn", src:getBackImage(), cb:()=>checkMessages(true)}, // back
|
||||||
|
msg.new?{type:"btn", src:atob("HRiBAD///8D///wj///Fj//8bj//x3z//Hvx/8/fx/j+/x+Ad/B4AL8Rh+HxwH+PHwf+cf5/+x/n/PH/P8cf+cx5/84HwAB4fgAD5/AAD/8AAD/wAAD/AAAD8A=="), cb:()=>{
|
||||||
|
msg.new = false; // read mail
|
||||||
|
saveMessages();
|
||||||
|
checkMessages();
|
||||||
|
}}:{}
|
||||||
|
];
|
||||||
|
if (msg.positive) {
|
||||||
|
buttons.push({type:"btn", src:getPosImage(), cb:()=>{
|
||||||
|
msg.new = false; saveMessages();
|
||||||
|
Bangle.messageResponse(msg,true);
|
||||||
|
checkMessages();
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
if (msg.negative) {
|
||||||
|
buttons.push({type:"btn", src:getNegImage(), cb:()=>{
|
||||||
|
msg.new = false; saveMessages();
|
||||||
|
Bangle.messageResponse(msg,true);
|
||||||
|
checkMessages();
|
||||||
|
}});
|
||||||
|
}
|
||||||
layout = new Layout({ type:"v", c: [
|
layout = new Layout({ type:"v", c: [
|
||||||
{type:"h", fillx:1, bgCol:colBg, c: [
|
{type:"h", fillx:1, bgCol:colBg, c: [
|
||||||
{ type:"img", src:getMessageImage(msg), pad:2 },
|
{ type:"img", src:getMessageImage(msg), pad:2 },
|
||||||
|
|
@ -163,14 +193,7 @@ function showMessage(msgid) {
|
||||||
]},
|
]},
|
||||||
]},
|
]},
|
||||||
{type:"txt", font:fontMedium, label:msg.body||"", wrap:true, fillx:1, filly:1, pad:2 },
|
{type:"txt", font:fontMedium, label:msg.body||"", wrap:true, fillx:1, filly:1, pad:2 },
|
||||||
{type:"h",fillx:1, c: [
|
{type:"h",fillx:1, c: buttons}
|
||||||
{type:"btn", src:getBackImage(), cb:()=>checkMessages(true)}, // back
|
|
||||||
msg.new?{type:"btn", src:atob("HRiBAD///8D///wj///Fj//8bj//x3z//Hvx/8/fx/j+/x+Ad/B4AL8Rh+HxwH+PHwf+cf5/+x/n/PH/P8cf+cx5/84HwAB4fgAD5/AAD/8AAD/wAAD/AAAD8A=="), cb:()=>{
|
|
||||||
msg.new = false; // read mail
|
|
||||||
saveMessages();
|
|
||||||
checkMessages();
|
|
||||||
}}:{}
|
|
||||||
]}
|
|
||||||
]});
|
]});
|
||||||
g.clearRect(Bangle.appRect);
|
g.clearRect(Bangle.appRect);
|
||||||
layout.render();
|
layout.render();
|
||||||
|
|
@ -178,12 +201,15 @@ function showMessage(msgid) {
|
||||||
|
|
||||||
function checkMessages(forceShowMenu) {
|
function checkMessages(forceShowMenu) {
|
||||||
// If no messages, just show 'no messages' and return
|
// If no messages, just show 'no messages' and return
|
||||||
if (!MESSAGES.length)
|
if (!MESSAGES.length) {
|
||||||
return E.showPrompt("No Messages",{
|
if (forceShowMenu) return E.showPrompt("No Messages",{
|
||||||
title:"Messages",
|
title:"Messages",
|
||||||
img:require("heatshrink").decompress(atob("kkk4UBrkc/4AC/tEqtACQkBqtUDg0VqAIGgoZFDYQIIM1sD1QAD4AIBhnqA4WrmAIBhc6BAWs8AIBhXOBAWz0AIC2YIC5wID1gkB1c6BAYFBEQPqBAYXBEQOqBAnDAIQaEnkAngaEEAPDFgo+IKA5iIOhCGIAFb7RqAIGgtUBA0VqobFgNVA")),
|
img:require("heatshrink").decompress(atob("kkk4UBrkc/4AC/tEqtACQkBqtUDg0VqAIGgoZFDYQIIM1sD1QAD4AIBhnqA4WrmAIBhc6BAWs8AIBhXOBAWz0AIC2YIC5wID1gkB1c6BAYFBEQPqBAYXBEQOqBAnDAIQaEnkAngaEEAPDFgo+IKA5iIOhCGIAFb7RqAIGgtUBA0VqobFgNVA")),
|
||||||
buttons : {"Ok":1}
|
buttons : {"Ok":1}
|
||||||
}).then(() => { load() });
|
}).then(() => { load() });
|
||||||
|
load();
|
||||||
|
return;
|
||||||
|
}
|
||||||
// we have >0 messages
|
// we have >0 messages
|
||||||
// If we have a new message, show it
|
// If we have a new message, show it
|
||||||
if (!forceShowMenu) {
|
if (!forceShowMenu) {
|
||||||
|
|
@ -194,7 +220,7 @@ function checkMessages(forceShowMenu) {
|
||||||
// Otherwise show a menu
|
// Otherwise show a menu
|
||||||
E.showScroller({
|
E.showScroller({
|
||||||
h : 48,
|
h : 48,
|
||||||
c : MESSAGES.length+1,
|
c : Math.min(MESSAGES.length+1,3), // workaround for 2v10.219 firmware (min 3 not needed for 2v11)
|
||||||
draw : function(idx, r) {"ram"
|
draw : function(idx, r) {"ram"
|
||||||
var msg = MESSAGES[idx-1];
|
var msg = MESSAGES[idx-1];
|
||||||
if (msg && msg.new) g.setBgColor(colBg);
|
if (msg && msg.new) g.setBgColor(colBg);
|
||||||
|
|
@ -235,4 +261,4 @@ function checkMessages(forceShowMenu) {
|
||||||
g.clear();
|
g.clear();
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
checkMessages();
|
checkMessages(true); // force showing a menu
|
||||||
|
|
|
||||||
|
|
@ -28,10 +28,25 @@ exports.pushMessage = function(event) {
|
||||||
// otherwise load after a delay, to ensure we have all the messages
|
// otherwise load after a delay, to ensure we have all the messages
|
||||||
if (exports.messageTimeout) clearTimeout(exports.messageTimeout);
|
if (exports.messageTimeout) clearTimeout(exports.messageTimeout);
|
||||||
exports.messageTimeout = setTimeout(function() {
|
exports.messageTimeout = setTimeout(function() {
|
||||||
exports.messageTimeout = undefined;
|
exports.messageTimeout = undefined;
|
||||||
// if we're in a clock or it's important, go straight to messages app
|
// if we're in a clock or it's important, go straight to messages app
|
||||||
if (Bangle.CLOCK || event.important) return load("messages.app.js");
|
if (Bangle.CLOCK || event.important) return load("messages.app.js");
|
||||||
if (!global.WIDGETS || !WIDGETS.messages) return Bangle.buzz(); // no widgets - just buzz to let someone know
|
if (!global.WIDGETS || !WIDGETS.messages) return Bangle.buzz(); // no widgets - just buzz to let someone know
|
||||||
WIDGETS.messages.newMessage();
|
WIDGETS.messages.show();
|
||||||
}, 500);
|
}, 500);
|
||||||
}
|
}
|
||||||
|
exports.clearAll = function(event) {
|
||||||
|
var messages, inApp = "undefined"!=typeof MESSAGES;
|
||||||
|
if (inApp) {
|
||||||
|
MESSAGES = [];
|
||||||
|
messages = MESSAGES; // we're in an app that has already loaded messages
|
||||||
|
} else // no app - empty messages
|
||||||
|
messages = [];
|
||||||
|
// Save all messages
|
||||||
|
require("Storage").writeJSON("messages.json",messages);
|
||||||
|
// update app if in app
|
||||||
|
if (inApp) return onMessagesModified();
|
||||||
|
// if we have a widget, update it
|
||||||
|
if (global.WIDGETS && WIDGETS.messages)
|
||||||
|
WIDGETS.messages.hide();
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,15 @@ WIDGETS["messages"]={area:"tl",width:0,draw:function() {
|
||||||
Bangle.buzz(); // buzz every 4 seconds
|
Bangle.buzz(); // buzz every 4 seconds
|
||||||
}
|
}
|
||||||
setTimeout(()=>WIDGETS["messages"].draw(), 1000);
|
setTimeout(()=>WIDGETS["messages"].draw(), 1000);
|
||||||
},newMessage:function() {
|
},show:function() {
|
||||||
WIDGETS["messages"].t=Date.now(); // first time
|
WIDGETS["messages"].t=Date.now(); // first time
|
||||||
WIDGETS["messages"].l=Date.now()-10000; // last buzz
|
WIDGETS["messages"].l=Date.now()-10000; // last buzz
|
||||||
if (WIDGETS["messages"].c!==undefined) return; // already called
|
|
||||||
WIDGETS["messages"].width=64;
|
WIDGETS["messages"].width=64;
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
Bangle.setLCDPower(1);// turns screen on
|
Bangle.setLCDPower(1);// turns screen on
|
||||||
|
},hide:function() {
|
||||||
|
delete WIDGETS["messages"].t;
|
||||||
|
delete WIDGETS["messages"].l;
|
||||||
|
WIDGETS["messages"].width=0;
|
||||||
|
Bangle.drawWidgets();
|
||||||
}};
|
}};
|
||||||
|
|
|
||||||
|
|
@ -4,3 +4,4 @@
|
||||||
0.04: App shows instructions, Widgets remain visible, color changed
|
0.04: App shows instructions, Widgets remain visible, color changed
|
||||||
0.05: Buzz intensity and beats per bar can be changed via settings-app
|
0.05: Buzz intensity and beats per bar can be changed via settings-app
|
||||||
0.06: Correct string position
|
0.06: Correct string position
|
||||||
|
0.07: Add support for Bangle.sjs2
|
||||||
|
|
@ -4,11 +4,12 @@ This metronome makes your watch blink and vibrate with a given rate.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
* Tap the screen at least three times. The app calculates the mean rate of your tapping. This rate is displayed in bmp while the text blinks and the watch softly vibrates with every beat.
|
* Tap the screen at least three times. The app calculates the mean rate of your tapping. This rate is displayed in bpm while the text blinks and the watch softly vibrates with every beat.
|
||||||
* Use `BTN1` to increase the bmp value by one.
|
* Use `BTN1` to increase the bpm value by one.
|
||||||
* Use `BTN3` to decrease the bmp value by one.
|
* Use `BTN3` to decrease the bpm value by one.
|
||||||
* You can change the bpm value any time by tapping the screen or using `BTN1` and `BTN3`.
|
* You can change the bpm value any time by tapping the screen or using `BTN1` and `BTN3`.
|
||||||
* Intensity of buzzing and the beats per bar (default 4) can be changed with the settings-app. The first beat per bar will be marked in red.
|
* Intensity of buzzing and the beats per bar (default 4) can be changed with the settings-app. The first beat per bar will be marked in red.
|
||||||
|
* On Bangle.js 2 tapping the center of the screen initiates bpm. in- or decreasing bpm can by 1 can be done by tapping left or right site of the screen.
|
||||||
|
|
||||||
## Attributions
|
## Attributions
|
||||||
|
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 3.6 KiB |
|
|
@ -3,10 +3,9 @@ var cindex=0; // index to iterate through colous
|
||||||
var bpm=60; // ininital bpm value
|
var bpm=60; // ininital bpm value
|
||||||
var time_diffs = [1000, 1000, 1000]; //array to calculate mean bpm
|
var time_diffs = [1000, 1000, 1000]; //array to calculate mean bpm
|
||||||
var tindex=0; //index to iterate through time_diffs
|
var tindex=0; //index to iterate through time_diffs
|
||||||
|
// set background colour
|
||||||
|
g.setTheme({bg:"#000"});
|
||||||
Bangle.setLCDTimeout(undefined); //do not deaktivate display while running this app
|
Bangle.setLCDTimeout(undefined); //do not deactivate display while running this app
|
||||||
|
|
||||||
const storage = require("Storage");
|
const storage = require("Storage");
|
||||||
const SETTINGS_FILE = 'metronome.settings.json';
|
const SETTINGS_FILE = 'metronome.settings.json';
|
||||||
|
|
||||||
|
|
@ -15,7 +14,7 @@ function setting(key) {
|
||||||
//define default settings
|
//define default settings
|
||||||
const DEFAULTS = {
|
const DEFAULTS = {
|
||||||
'beatsperbar': 4,
|
'beatsperbar': 4,
|
||||||
'buzzintens': 0.75,
|
'buzzintens': 1.0,
|
||||||
};
|
};
|
||||||
if (!settings) { loadSettings(); }
|
if (!settings) { loadSettings(); }
|
||||||
return (key in settings) ? settings[key] : DEFAULTS[key];
|
return (key in settings) ? settings[key] : DEFAULTS[key];
|
||||||
|
|
@ -40,6 +39,10 @@ function changecolor() {
|
||||||
7: { value: 0xFFFF, name: "White" },
|
7: { value: 0xFFFF, name: "White" },
|
||||||
};
|
};
|
||||||
g.setColor(colors[cindex].value);
|
g.setColor(colors[cindex].value);
|
||||||
|
if ((process.env.HWVERSION==2 )) {
|
||||||
|
g.drawLine(39,0,39,g.getWidth()/3);
|
||||||
|
g.drawLine(136,0,136,g.getWidth()/3);
|
||||||
|
}
|
||||||
if (cindex == setting('beatsperbar')-1) {
|
if (cindex == setting('beatsperbar')-1) {
|
||||||
cindex = 0;
|
cindex = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -50,43 +53,73 @@ function changecolor() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateScreen() {
|
function updateScreen() {
|
||||||
g.reset().clearRect(0, 50, 250, 150);
|
g.reset().clearRect(0, 50, 250, 120);
|
||||||
changecolor();
|
changecolor();
|
||||||
try {
|
try {
|
||||||
Bangle.buzz(50, setting('buzzintens'));
|
Bangle.buzz(50, setting('buzzintens'));
|
||||||
} catch(err) {
|
} catch(err) {
|
||||||
}
|
}
|
||||||
g.setFont("Vector",40).setFontAlign(0,0);
|
g.setFont("Vector",40).setFontAlign(0,0);
|
||||||
g.drawString(Math.floor(bpm)+"bpm", g.getWidth()/2, 100);
|
g.drawString(Math.floor(bpm)+"bpm", g.getWidth()/2, g.getWidth()/2);
|
||||||
}
|
}
|
||||||
|
|
||||||
Bangle.on('touch', function(button) {
|
//Write user instructuins to screen
|
||||||
// setting bpm by tapping the screen. Uses the mean time difference between several tappings.
|
function printInstructions() {
|
||||||
if (tindex < time_diffs.length) {
|
g.clear(1).setFont("4x6");
|
||||||
if (Date.now()-tStart < 5000) {
|
g.setColor(-1); //set color to white
|
||||||
time_diffs[tindex] = Date.now()-tStart;
|
g.drawString('Drum the beat on the center\nof the screen to set tempo.', 30, g.getWidth()/3*2+15);
|
||||||
}
|
if(process.env.HWVERSION==1) {
|
||||||
} else {
|
g.drawString('Use BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 30, g.getWidth()/3*2+30);
|
||||||
tindex=0;
|
}
|
||||||
time_diffs[tindex] = Date.now()-tStart;
|
else {
|
||||||
}
|
g.drawString('Touch left part of the screen\nto decrease, or the right site\nto increase bpm value by 1.', 30, g.getWidth()/3*2+30);
|
||||||
tindex += 1;
|
}
|
||||||
mean_time = 0.0;
|
}
|
||||||
for(count = 0; count < time_diffs.length; count++) {
|
|
||||||
mean_time += time_diffs[count];
|
|
||||||
}
|
|
||||||
time_diff = mean_time/count;
|
|
||||||
|
|
||||||
tStart = Date.now();
|
Bangle.on('touch', function(zone, e) {
|
||||||
clearInterval(time_diff);
|
// setting bpm by tapping the screen. Uses the mean time difference between several tappings.
|
||||||
bpm = (60 * 1000/(time_diff));
|
if ((process.env.HWVERSION==2 && e.x > 39 && e.x < 136) || process.env.HWVERSION==1){
|
||||||
updateScreen();
|
if (tindex < time_diffs.length) {
|
||||||
clearInterval(interval);
|
if (Date.now()-tStart < 5000) {
|
||||||
interval = setInterval(updateScreen, 60000 / bpm);
|
time_diffs[tindex] = Date.now()-tStart;
|
||||||
return bpm;
|
}
|
||||||
|
} else {
|
||||||
|
tindex=0;
|
||||||
|
time_diffs[tindex] = Date.now()-tStart;
|
||||||
|
}
|
||||||
|
tindex += 1;
|
||||||
|
mean_time = 0.0;
|
||||||
|
for (count = 0; count < time_diffs.length; count++) {
|
||||||
|
mean_time += time_diffs[count];
|
||||||
|
}
|
||||||
|
time_diff = mean_time/count;
|
||||||
|
|
||||||
|
tStart = Date.now();
|
||||||
|
clearInterval(time_diff);
|
||||||
|
bpm = (60 * 1000/(time_diff));
|
||||||
|
updateScreen();
|
||||||
|
clearInterval(interval);
|
||||||
|
interval = setInterval(updateScreen, 60000 / bpm);
|
||||||
|
return bpm;
|
||||||
|
}
|
||||||
|
else if (e.x < 39) {
|
||||||
|
if (bpm > 1) {
|
||||||
|
bpm -= 1;
|
||||||
|
clearInterval(interval);
|
||||||
|
interval = setInterval(updateScreen, 60000 / bpm);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (e.x > 136) {
|
||||||
|
if (bpm > 1) {
|
||||||
|
bpm += 1;
|
||||||
|
clearInterval(interval);
|
||||||
|
interval = setInterval(updateScreen, 60000 / bpm);
|
||||||
|
}}
|
||||||
});
|
});
|
||||||
|
|
||||||
// enable bpm finetuning via buttons.
|
|
||||||
|
// enable bpm finetuning
|
||||||
|
if ((process.env.HWVERSION==1)) {
|
||||||
setWatch(() => {
|
setWatch(() => {
|
||||||
bpm += 1;
|
bpm += 1;
|
||||||
clearInterval(interval);
|
clearInterval(interval);
|
||||||
|
|
@ -101,10 +134,10 @@ setWatch(() => {
|
||||||
}
|
}
|
||||||
}, BTN3, {repeat:true});
|
}, BTN3, {repeat:true});
|
||||||
|
|
||||||
|
}
|
||||||
interval = setInterval(updateScreen, 60000 / bpm);
|
interval = setInterval(updateScreen, 60000 / bpm);
|
||||||
|
printInstructions();
|
||||||
|
|
||||||
g.clear(1).setFont("6x8");
|
|
||||||
g.drawString('Touch the screen to set tempo.\nUse BTN1 to increase, and\nBTN3 to decrease bpm value by 1.', 25, 200);
|
|
||||||
|
|
||||||
Bangle.loadWidgets();
|
Bangle.loadWidgets();
|
||||||
Bangle.drawWidgets();
|
Bangle.drawWidgets();
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 4.0 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 9.8 KiB |
|
After Width: | Height: | Size: 4.7 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 3.9 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
|
@ -1,6 +0,0 @@
|
||||||
// check for alarms
|
|
||||||
(function() {
|
|
||||||
var alarms = require('Storage').readJSON('schoolCalendarAlarms.json',1)||[];
|
|
||||||
var time = new Date();
|
|
||||||
E.showPrompt("School Calendar Alarm Test");
|
|
||||||
})();
|
|
||||||
|
|
@ -173,11 +173,7 @@ function updateDay(ffunction,day){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function getScheduleTable() {
|
function getScheduleTable() {
|
||||||
let schedule = [//Monday:
|
let schedule = ${JSON.stringify(schedule)};
|
||||||
{cn: "Biblical Theology", dow:1, sh: 8, sm: 10, eh:9, em: 5, r:"207", t:"Mr. Besaw"},
|
|
||||||
{cn: "English", dow:1, sh: 9, sm: 5, eh:10, em: 0, t:"Dr. Wong"},
|
|
||||||
{cn: "Break", dow:1, sh: 10, sm: 0, eh:10, em: 10, t:""},
|
|
||||||
{cn: "MS Robotics", dow:1, sh: 10, sm: 10, eh:11, em: 0, r:"211", t:"Mr. Broyles"}];//${JSON.stringify(schedule)};
|
|
||||||
logDebug(JSON.stringify(schedule));
|
logDebug(JSON.stringify(schedule));
|
||||||
return schedule;
|
return schedule;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 2.7 KiB |
|
After Width: | Height: | Size: 3.8 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 3.3 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
After Width: | Height: | Size: 5.2 KiB |
|
After Width: | Height: | Size: 3.7 KiB |
|
|
@ -0,0 +1,94 @@
|
||||||
|
var center = g.getWidth() / 2;
|
||||||
|
var lastDayDraw;
|
||||||
|
var lastTimeDraw;
|
||||||
|
|
||||||
|
var fontColor = g.theme.fg;
|
||||||
|
var accentColor = "#FF0000";
|
||||||
|
var locale = require("locale");
|
||||||
|
|
||||||
|
function loop() {
|
||||||
|
var d = new Date();
|
||||||
|
var cleared = false;
|
||||||
|
if(lastDayDraw != d.getDate()){
|
||||||
|
lastDayDraw = d.getDate();
|
||||||
|
drawDate(d);
|
||||||
|
drawCal(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(lastTimeDraw != d.getMinutes() || cleared){
|
||||||
|
lastTimeDraw = d.getMinutes();
|
||||||
|
drawTime(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function drawTime(d){
|
||||||
|
var hour = ("0" + d.getHours()).slice(-2);
|
||||||
|
var min = ("0" + d.getMinutes()).slice(-2);
|
||||||
|
g.setFontAlign(0,-1,0);
|
||||||
|
g.setFont("Vector",40);
|
||||||
|
g.setColor(fontColor);
|
||||||
|
g.clearRect(0,50,g.getWidth(),90);
|
||||||
|
g.drawString(hour + ":" + min,center,50);
|
||||||
|
}
|
||||||
|
function drawDate(d){
|
||||||
|
var day = ("0" + d.getDate()).slice(-2);
|
||||||
|
var month = ("0" + d.getMonth()).slice(-2);
|
||||||
|
var dateStr = locale.date(d,1);
|
||||||
|
g.clearRect(0,24,g.getWidth(),44);
|
||||||
|
g.setFont("Vector",20);
|
||||||
|
g.setColor(fontColor);
|
||||||
|
g.setFontAlign(0,-1,0);
|
||||||
|
g.drawString(dateStr,center,24);
|
||||||
|
}
|
||||||
|
|
||||||
|
function drawCal(d){
|
||||||
|
var calStart = 101;
|
||||||
|
var cellSize = g.getWidth() / 7;
|
||||||
|
var halfSize = cellSize / 2;
|
||||||
|
g.clearRect(0,calStart,g.getWidth(),g.getHeight());
|
||||||
|
g.drawLine(0,calStart,g.getWidth(),calStart);
|
||||||
|
var days = ["Mo","Tu","We","Th","Fr","Sa","Su"];
|
||||||
|
g.setFont("Vector",10);
|
||||||
|
g.setColor(fontColor);
|
||||||
|
g.setFontAlign(-1,-1,0);
|
||||||
|
for(var i = 0; i < days.length;i++){
|
||||||
|
g.drawString(days[i],i*cellSize+5,calStart -11);
|
||||||
|
if(i!=0){
|
||||||
|
g.drawLine(i*cellSize,calStart,i*cellSize,g.getHeight());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var cellHeight = (g.getHeight() -calStart ) / 3;
|
||||||
|
for(var i = 0;i < 3;i++){
|
||||||
|
var starty = calStart + i * cellHeight;
|
||||||
|
g.drawLine(0,starty,g.getWidth(),starty);
|
||||||
|
}
|
||||||
|
|
||||||
|
g.setFont("Vector",15);
|
||||||
|
|
||||||
|
var dayOfWeek = d.getDay();
|
||||||
|
var dayRem = d.getDay() - 1;
|
||||||
|
if(dayRem <0){
|
||||||
|
dayRem = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
var start = new Date();
|
||||||
|
start.setDate(start.getDate()-(7+dayRem));
|
||||||
|
g.setFontAlign(0,-1,0);
|
||||||
|
for (var y = 0;y < 3; y++){
|
||||||
|
for(var x = 0;x < 7; x++){
|
||||||
|
if(start.getDate() === d.getDate()){
|
||||||
|
g.setColor(accentColor);
|
||||||
|
}else{
|
||||||
|
g.setColor(fontColor);
|
||||||
|
}
|
||||||
|
g.drawString(start.getDate(),x*cellSize +(cellSize / 2) + 2,calStart+(cellHeight*y) + 5);
|
||||||
|
start.setDate(start.getDate()+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
g.clear();
|
||||||
|
Bangle.setUI("clock");
|
||||||
|
Bangle.loadWidgets();
|
||||||
|
Bangle.drawWidgets();
|
||||||
|
loop();
|
||||||
|
setInterval(loop,1000);
|
||||||
|
After Width: | Height: | Size: 5.0 KiB |
|
After Width: | Height: | Size: 3.6 KiB |
|
After Width: | Height: | Size: 3.0 KiB |
|
|
@ -15,3 +15,4 @@
|
||||||
0.11: Fix initial screen fill colour
|
0.11: Fix initial screen fill colour
|
||||||
0.12: Fix swipe direction (#800)
|
0.12: Fix swipe direction (#800)
|
||||||
0.13: Mods for Bangle.js 2
|
0.13: Mods for Bangle.js 2
|
||||||
|
0.14: Turn off and run later to use softOff to time is set right
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,8 @@
|
||||||
'Run Now': () => load('welcome.app.js'),
|
'Run Now': () => load('welcome.app.js'),
|
||||||
'Turn off & run next': () => {
|
'Turn off & run next': () => {
|
||||||
require('Storage').write('welcome.json', {welcomed: false});
|
require('Storage').write('welcome.json', {welcomed: false});
|
||||||
Bangle.off();
|
Bangle.setLocked(true); // fix for pre-2v11 firmware that can accidentally leave touchscreen on
|
||||||
|
if (Bangle.softOff()) Bangle.softOff(); else Bangle.off();
|
||||||
},
|
},
|
||||||
'< Back': back,
|
'< Back': back,
|
||||||
})
|
})
|
||||||
|
|
|
||||||