BangleApps/apps/timecal/timecal.settings.js

108 lines
3.5 KiB
JavaScript
Raw Normal View History

2022-02-17 01:42:21 +00:00
// Settings menu for Time calendar clock
(function(exit) {
2024-03-13 10:51:40 +00:00
const ABR_DAY = require("locale") && require("locale").abday ? require("locale").abday : ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
2022-02-17 01:42:21 +00:00
2022-02-18 11:41:30 +00:00
var FILE = "timecal.settings.json";
2022-02-17 01:42:21 +00:00
const DEFAULTS = {
shwDate:1, //0:none, 1:locale, 2:month, 3:monthshort.year #week
wdStrt:0, //identical to getDay() 0->Su, 1->Mo, ... //Issue #1154: weekstart So/Mo, -1 for use today
tdyNumClr:3, //0:fg, 1:red=#E00, 2:green=#0E0, 3:blue=#00E
tdyMrkr:0, //0:none, 1:circle, 2:rectangle, 3:filled
tdyMrkClr:2, //1:red=#E00, 2:green=#0E0, 3:blue=#00E
tdyMrkPxl:3, //px
suClr:1, //0:fg, 1:red=#E00, 2:green=#0E0, 3:blue=#00E
//phColor:"#E00", //public holiday
calBrdr:false
};
2024-03-13 10:51:40 +00:00
let validSttngs = require("Storage").readJSON(FILE, 1) || {};
2022-02-17 01:42:21 +00:00
for (const k in validSttngs) if (!DEFAULTS.hasOwnProperty(k)) delete this.validSttngs[k]; //remove invalid settings
2022-02-18 13:36:28 +00:00
for (const k in DEFAULTS) if(!validSttngs.hasOwnProperty(k)) validSttngs[k] = DEFAULTS[k]; //assign missing defaults fixed
2022-02-17 01:42:21 +00:00
2022-02-18 11:41:30 +00:00
var chngdSttngs = Object.assign({}, validSttngs);
2022-02-17 01:42:21 +00:00
var saveExitSettings = () => {
2022-02-18 11:41:30 +00:00
require('Storage').writeJSON(FILE, chngdSttngs);
2022-02-17 01:42:21 +00:00
exit();
};
var cancelExitSettings = () => {
require('Storage').writeJSON(FILE, validSttngs);
exit();
};
var showMainMenu = () => {
E.showMenu({
"": {
"title": "TimeCal "+ /*LANG*/"settings"
},
/*LANG*/"< Save": () => saveExitSettings(),
/*LANG*/"Show date": {
2022-02-18 11:41:30 +00:00
value: chngdSttngs.shwDate,
2022-02-17 01:42:21 +00:00
min: 0, max: 3,
format: v => [/*LANG*/"none", /*LANG*/"locale", /*LANG*/"M", /*LANG*/"m.Y #W"][v],
2022-02-18 11:41:30 +00:00
onchange: v => chngdSttngs.shwDate = v
2022-02-17 01:42:21 +00:00
},
/*LANG*/"Start wday": {
2022-02-18 11:41:30 +00:00
value: chngdSttngs.wdStrt,
2022-02-17 01:42:21 +00:00
min: -1, max: 6,
format: v => v>=0 ? ABR_DAY[v] : /*LANG*/"today",
2022-02-18 11:41:30 +00:00
onchange: v => chngdSttngs.wdStrt = v
2022-02-17 01:42:21 +00:00
},
/*LANG*/"Su color": {
2022-02-18 11:41:30 +00:00
value: chngdSttngs.suClr,
2022-02-17 01:42:21 +00:00
min: 0, max: 3,
format: v => [/*LANG*/"none", /*LANG*/"red", /*LANG*/"green", /*LANG*/"blue"][v],
2022-02-18 11:41:30 +00:00
onchange: v => chngdSttngs.suClr = v
2022-02-17 01:42:21 +00:00
},
/*LANG*/"Border": {
2022-02-18 11:41:30 +00:00
value: chngdSttngs.calBrdr,
2022-02-17 01:42:21 +00:00
format: v => v ? /*LANG*/"show" : /*LANG*/"none",
2022-02-18 11:41:30 +00:00
onchange: v => chngdSttngs.calBrdr = v
2022-02-17 01:42:21 +00:00
},
/*LANG*/"Today settings": () => showTodayMenu(),
2022-02-17 01:42:21 +00:00
/*LANG*/"< Cancel": () => cancelExitSettings()
});
};
var showTodayMenu = () => {
E.showMenu({
"": {
"title": /*LANG*/"Today settings"
},
"< Back": () => showMainMenu(),
/*LANG*/"Color": {
2022-02-18 11:41:30 +00:00
value: chngdSttngs.tdyNumClr,
2022-02-17 01:42:21 +00:00
min: 0, max: 3,
format: v => [/*LANG*/"none", /*LANG*/"red", /*LANG*/"green", /*LANG*/"blue"][v],
2022-02-18 11:41:30 +00:00
onchange: v => chngdSttngs.tdyNumClr = v
2022-02-17 01:42:21 +00:00
},
/*LANG*/"Marker": {
2022-02-18 11:41:30 +00:00
value: chngdSttngs.tdyMrkr,
2022-02-17 01:42:21 +00:00
min: 0, max: 3,
format: v => [/*LANG*/"none", /*LANG*/"circle", /*LANG*/"rectangle", /*LANG*/"filled"][v],
2022-02-18 11:41:30 +00:00
onchange: v => chngdSttngs.tdyMrkr = v
2022-02-17 01:42:21 +00:00
},
/*LANG*/"Mrk.Color": {
2022-02-18 11:41:30 +00:00
value: chngdSttngs.tdyMrkClr,
min: 1, max: 3,
format: v => [undefined, /*LANG*/"red", /*LANG*/"green", /*LANG*/"blue"][v],
2022-02-18 11:41:30 +00:00
onchange: v => chngdSttngs.tdyMrkClr = v
2022-02-17 01:42:21 +00:00
},
/*LANG*/"Mrk.Size": {
2022-02-18 11:41:30 +00:00
value: chngdSttngs.tdyMrkPxl,
2022-02-17 01:42:21 +00:00
min: 1, max: 10,
format: v => v+"px",
2022-02-18 11:41:30 +00:00
onchange: v => chngdSttngs.tdyMrkPxl = v
2022-02-17 01:42:21 +00:00
},
/*LANG*/"< Cancel": () => cancelExitSettings()
});
2022-02-17 01:42:21 +00:00
};
showMainMenu();
})