mirror of https://github.com/espruino/BangleApps
79 lines
1.7 KiB
JavaScript
79 lines
1.7 KiB
JavaScript
|
|
||
|
// Learn more!
|
||
|
// https://www.espruino.com/Reference#l_NRF_setAdvertising
|
||
|
// https://www.espruino.com/Bangle.js#buttons
|
||
|
|
||
|
// Initial graphics setup
|
||
|
g.clear();
|
||
|
g.setFontAlign(0, 0); // center font
|
||
|
// g.setFont("6x8", 8); // bitmap font, 8x magnified
|
||
|
g.setFont("Vector", 40); // vector font, 80px
|
||
|
|
||
|
// Let the app begin!
|
||
|
const storage = require("Storage");
|
||
|
|
||
|
let currentPage = 0;
|
||
|
let pages = [
|
||
|
{
|
||
|
name: "Downstairs",
|
||
|
icon: "light",
|
||
|
state: false
|
||
|
},
|
||
|
{
|
||
|
name: "Upstairs",
|
||
|
icon: "switch",
|
||
|
state: false
|
||
|
}];
|
||
|
|
||
|
function loadPage(page) {
|
||
|
const icon = page.state ? page.icon + "-on" : page.icon + "-off";
|
||
|
Bangle.beep();
|
||
|
g.clear();
|
||
|
g.setFont("Vector", 10);
|
||
|
g.drawString("prev", g.getWidth() - 25, 20);
|
||
|
g.drawString("next", g.getWidth() - 25, 220);
|
||
|
g.setFont("Vector", 15);
|
||
|
g.drawString(page.name, g.getWidth() / 2, 200);
|
||
|
g.setFont("Vector", 40);
|
||
|
g.drawString(page.state ? "On" : "Off", g.getWidth() / 2, g.getHeight() / 2);
|
||
|
g.drawImage(storage.read(`${icon}.img`), g.getWidth() / 2 - 24, g.getHeight() / 2 - 24 - 50);
|
||
|
}
|
||
|
|
||
|
function prevPage() {
|
||
|
if (currentPage > 0) {
|
||
|
currentPage--;
|
||
|
loadPage(pages[currentPage]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function nextPage() {
|
||
|
if (currentPage < pages.length - 1) {
|
||
|
currentPage++;
|
||
|
loadPage(pages[currentPage]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function swipe(dir) {
|
||
|
|
||
|
const page = pages[currentPage];
|
||
|
|
||
|
page.state = dir == 1;
|
||
|
|
||
|
NRF.setAdvertising({
|
||
|
0xFFFF: [currentPage, page.state]
|
||
|
});
|
||
|
|
||
|
loadPage(page);
|
||
|
|
||
|
// optional - this keeps the watch LCD lit up
|
||
|
g.flip();
|
||
|
|
||
|
Bangle.buzz();
|
||
|
}
|
||
|
|
||
|
Bangle.on('swipe', swipe);
|
||
|
|
||
|
setWatch(prevPage, BTN, {edge: "rising", debounce: 50, repeat: true});
|
||
|
setWatch(nextPage, BTN3, {edge: "rising", debounce: 50, repeat: true});
|
||
|
|
||
|
loadPage(pages[currentPage]);
|