Added settings menu for Pastel

pull/812/head
hughbarney 2021-09-14 22:01:20 +01:00
parent 63b19409f4
commit e455c3616c
4 changed files with 98 additions and 11 deletions

View File

@ -3454,7 +3454,11 @@
"readme": "README.md",
"storage": [
{"name":"pastel.app.js","url":"pastel.app.js"},
{"name":"pastel.img","url":"pastel.icon.js","evaluate":true}
{"name":"pastel.img","url":"pastel.icon.js","evaluate":true},
{"name":"pastel.settings.js","url":"pastel.settings.js"}
],
"data": [
{"name":"pastel.json"}
]
}
]

View File

@ -45,6 +45,18 @@ g.setFontCustom(font, 46, widths, 73+(scale<<8)+(1<<16));
};
const SETTINGS_FILE = "pastel.json";
let settings = undefined;
function loadSettings() {
//console.log("loadSettings()");
settings = require("Storage").readJSON(SETTINGS_FILE,1)||{};
settings.grid = settings.grid||false;
settings.date = settings.date||false;
settings.font = settings.font||"Lato";
//console.log(settings);
}
var mm_prev = "xx";
function draw() {
@ -80,7 +92,7 @@ function draw() {
}
// draw a grid like graph paper
if (process.env.HWVERSION !=1) {
if (settings.grid && process.env.HWVERSION !=1) {
g.setColor("#0f0");
for (var gx=20; gx <= w; gx += 20)
g.drawLine(gx, 30, gx, h);
@ -93,10 +105,15 @@ function draw() {
else
g.setColor("#000");
g.setFontLato();
//g.setFontArchitect();
//g.setFontGochiHand();
//g.setFontCabinSketch();
if (settings.font == "Architect")
g.setFontArchitect();
else if (settings.font == "GochiHand")
g.setFontGochiHand();
else if (settings.font == "CabinSketch")
g.setFontCabinSketch();
else
g.setFontLato();
g.setFontAlign(1,-1); // right aligned
g.drawString(hh, x - 6, y);
g.setFontAlign(-1,-1); // left aligned
@ -116,10 +133,12 @@ function draw() {
}
}
g.setFontLatoSmall();
g.setFontAlign(1, -1);
g.drawString(day + " ", w, h - 24 - 24);
g.drawString(month_day + " ", w, h - 24);
if (settings.date) {
g.setFontLatoSmall();
g.setFontAlign(1, -1);
g.drawString(day + " ", w, h - 24 - 24);
g.drawString(month_day + " ", w, h - 24);
}
}
// handle switch display on by pressing BTN1
@ -130,6 +149,7 @@ Bangle.on('lcdPower', function(on) {
g.clear();
Bangle.loadWidgets();
Bangle.drawWidgets();
loadSettings();
setInterval(draw, 1000); // refresh every second
draw();
// Show launcher when button pressed

View File

@ -0,0 +1,57 @@
(function(back) {
const SETTINGS_FILE = "pastel.json";
// initialize with default settings...
let s = {
'grid': false,
'date': false,
'font': "Lato"
}
// ...and overwrite them with any saved values
// This way saved values are preserved if a new version adds more settings
const storage = require('Storage')
const settings = storage.readJSON(SETTINGS_FILE, 1) || {}
const saved = settings || {}
for (const key in saved) {
s[key] = saved[key]
}
function save() {
settings = s
storage.write(SETTINGS_FILE, settings)
}
var font_options = ["Lato","Architect","GochiHand","CabinSketch"];
E.showMenu({
'': { 'title': 'Pastel Clock' },
'< Back': back,
'Font': {
value: 0 | font_options.indexOf(s.font),
min: 0, max: 3,
format: v => font_options[v],
onchange: v => {
s.font = font_options[v];
save();
},
},
'Show Grid': {
value: s.grid,
format: () => (s.grid ? 'Yes' : 'No'),
onchange: () => {
s.grid = !s.grid
save()
},
},
'Show Date': {
value: s.date,
format: () => (s.date ? 'Yes' : 'No'),
onchange: () => {
s.date = !s.date
save()
},
},
'< Back': back,
})
})

View File

@ -0,0 +1,6 @@
const SETTINGS_FILE = "pastel.json";
let settings = {"grid":false, "date":false, "font":"Lato"}
require("Storage").write(SETTINGS_FILE, settings);
settings = require("Storage").readJSON(SETTINGS_FILE,1)||{};
console.log(settings);