1
0
Fork 0

Add settings for time and date lines

Add separate defaults file
master
Martin Pool 2024-09-03 23:05:45 +02:00
parent 45cc0dc60f
commit 9753795231
4 changed files with 40 additions and 20 deletions

View File

@ -1,29 +1,42 @@
const SCREEN_WIDTH = g.getWidth();
const SCREEN_HEIGHT = g.getHeight();
const WIDGETS_HEIGHT = 25;
const DATETIME_SPACING_HEIGHT = 10;
const DATE_HEIGHT = 10;
const TIME_HEIGHT = 10;
const TEXT_WIDTH = SCREEN_WIDTH - 2;
const MINS_IN_HOUR = 60;
const VARIANT_EXACT = 'exact';
const VARIANT_APPROXIMATE = 'approximate';
const VARIANT_HYBRID = 'hybrid';
const DEFAULTS_FILE = "dutchclock.default.json";
const SETTINGS_FILE = "dutchclock.json";
let date, mins;
var settings = Object.assign({
// default values
variant: VARIANT_APPROXIMATE,
showWidgets: true
}, require('Storage').readJSON(SETTINGS_FILE, true) || {});
// Load settings
const settings = Object.assign(
storage.readJSON(DEFAULTS_FILE, true)?.settings || {},
storage.readJSON(SETTINGS_FILE, true) || {}
);
const maxFontSize = SCREEN_HEIGHT
- 20 // For the date
- (settings.showWidgets ? 25 : 0);
- (settings.showWidgets ? WIDGETS_HEIGHT : 0)
- (settings.showDate || settings.showTime ? DATETIME_SPACING_HEIGHT : 0)
- (settings.showDate ? DATE_HEIGHT : 0)
- (settings.showTime ? TIME_HEIGHT : 0);
const X = SCREEN_WIDTH / 2;
const Y = SCREEN_HEIGHT / 2
+ (settings.showWidgets ? 5 : -5);
+ (settings.showWidgets ? WIDGETS_HEIGHT / 2 : 0)
- (settings.showDate || settings.showTime ? DATETIME_SPACING_HEIGHT / 2 : 0)
- (settings.showDate ? DATE_HEIGHT / 2 : 0)
- (settings.showTime ? TIME_HEIGHT / 2 : 0);
let date, mins;
function initialize() {
// draw immediately at first
@ -75,7 +88,7 @@ function draw() {
g.setFontAlign(0,1); // align center bottom
// pad the date - this clears the background if the date were to change length
var dateStr = " "+require("locale").date(date)+" ";
g.drawString(dateStr, SCREEN_WIDTH/2, SCREEN_HEIGHT - 5, true /*clear background*/);
g.drawString(dateStr, SCREEN_WIDTH / 2, SCREEN_HEIGHT - 5, true /*clear background*/);
/* Show launcher when middle button pressed
This should be done *before* Bangle.loadWidgets so that
@ -96,8 +109,8 @@ function setFont(timeLines) {
let width = g.stringWidth(timeLines.join('\n'));
if (width > SCREEN_WIDTH) {
g.setFont("Vector", Math.floor(size * (SCREEN_WIDTH / width)));
if (width > TEXT_WIDTH) {
g.setFont("Vector", Math.floor(size * (TEXT_WIDTH / width)));
}
}
@ -225,4 +238,4 @@ function roundTo(x) {
return n => Math.round(n / x) * x;
}
initialize();
initialize();

View File

@ -0,0 +1,6 @@
{
"variant": "approximate",
"showWidgets": true,
"showTimeLine": false,
"showDateLine": true
}

View File

@ -12,6 +12,7 @@
"storage": [
{"name":"dutchclock.app.js","url":"app.js"},
{"name":"dutchclock.settings.js","url":"settings.js"},
{"name":"dutchclock.default.json","url":"default.json"},
{"name":"dutchclock.img","url":"app-icon.js","evaluate":true}
],
"data": [

View File

@ -3,14 +3,14 @@
const VARIANT_APPROXIMATE = 'approximate';
const VARIANT_HYBRID = 'hybrid';
const DEFAULTS_FILE = "dutchclock.default.json";
const SETTINGS_FILE = "dutchclock.json";
// Load settings
var settings = Object.assign({
// default values
variant: VARIANT_APPROXIMATE,
showWidgets: true
}, require('Storage').readJSON(SETTINGS_FILE, true) || {});
const settings = Object.assign(
storage.readJSON(DEFAULTS_FILE, true)?.settings || {},
storage.readJSON(SETTINGS_FILE, true) || {}
);
function writeSettings() {
require('Storage').writeJSON(SETTINGS_FILE, settings);