diff --git a/apps.json b/apps.json index a75ff0e5b..a09d18e12 100644 --- a/apps.json +++ b/apps.json @@ -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"} ] } ] diff --git a/apps/pastel/pastel.app.js b/apps/pastel/pastel.app.js index 42c8d0f96..96ac67766 100644 --- a/apps/pastel/pastel.app.js +++ b/apps/pastel/pastel.app.js @@ -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 @@ -115,11 +132,13 @@ function draw() { g.setColor("#fff"); } } - - 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 diff --git a/apps/pastel/pastel.settings.js b/apps/pastel/pastel.settings.js new file mode 100644 index 000000000..c6870cd71 --- /dev/null +++ b/apps/pastel/pastel.settings.js @@ -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, + }) +}) diff --git a/apps/pastel/test-settings.js b/apps/pastel/test-settings.js new file mode 100644 index 000000000..45e655818 --- /dev/null +++ b/apps/pastel/test-settings.js @@ -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);