qmsched - Remove quiet property and save one theme copy

pull/2882/head
Martin Boonk 2023-07-18 22:03:02 +02:00
parent d60b2da468
commit ff0c236b03
2 changed files with 57 additions and 47 deletions

View File

@ -84,7 +84,6 @@ function formatTime(t) {
*/
function applyTheme() {
const theme = (STORAGE.readJSON("setting.json", 1) || {}).theme;
if (theme && theme.dark===g.theme.dark) return; // already correct
g.theme = theme;
delete g.reset;
g._reset = g.reset;
@ -105,24 +104,8 @@ function showThemeMenu(back, quiet){
function cl(x) { return g.setColor(x).getColor(); }
var themesMenu = {
'':{title:/*LANG*/'Theme', back: back},
/*LANG*/'Dark BW': ()=>{
set(option, {
fg:cl("#fff"), bg:cl("#000"),
fg2:cl("#fff"), bg2:cl("#004"),
fgH:cl("#fff"), bgH:cl("#00f"),
dark:true,
quiet: true
});
back();
},
/*LANG*/'Light BW': ()=>{
set(option, {
fg:cl("#000"), bg:cl("#fff"),
fg2:cl("#000"), bg2:cl("#cff"),
fgH:cl("#000"), bgH:cl("#0ff"),
dark:false,
quiet: true
});
/*LANG*/'Default': ()=>{
unset(option);
back();
}
};
@ -131,14 +114,8 @@ function showThemeMenu(back, quiet){
n => {
let newTheme = STORAGE.readJSON(n);
themesMenu[newTheme.name ? newTheme.name : n] = () => {
set(option, {
fg:cl(newTheme.fg), bg:cl(newTheme.bg),
fg2:cl(newTheme.fg2), bg2:cl(newTheme.bg2),
fgH:cl(newTheme.fgH), bgH:cl(newTheme.bgH),
dark:newTheme.dark,
quiet: quiet
});
back();
set(option, n);
back();
};
}
);

View File

@ -3,37 +3,70 @@
* @param {int} mode Quiet Mode
*/
function switchTheme(mode) {
let s = require("Storage").readJSON("setting.json", 1) || {};
if (!!mode === s.theme.quiet) return; // nothing to do
// default themes, copied from settings.js:showThemeMenu()
function cl(x) { return g.setColor(x).getColor(); }
const readTheme = function(name) {
const n = require("Storage").readJSON(name);
return {
fg:cl(n.fg), bg:cl(n.bg),
fg2:cl(n.fg2), bg2:cl(n.bg2),
fgH:cl(n.fgH), bgH:cl(n.bgH),
dark:n.dark
};
}
const s = require("Storage").readJSON("setting.json", 1) || {};
// default themes, copied from settings.js:showThemeMenu()
let q = require("Storage").readJSON("qmsched.json", 1) || {};
const q = require("Storage").readJSON("qmsched.json", 1) || {};
let quietTheme = {
// 'Dark BW'
fg: cl("#fff"), bg: cl("#000"),
fg2: cl("#0ff"), bg2: cl("#000"),
fgH: cl("#fff"), bgH: cl("#00f"),
dark: true,
quiet: true
fg:cl("#fff"), bg:cl("#000"),
fg2:cl("#fff"), bg2:cl("#004"),
fgH:cl("#fff"), bgH:cl("#00f"),
dark:true
};
let normalTheme = {
// 'Light BW'
fg: cl("#000"), bg: cl("#fff"),
fg2: cl("#000"), bg2: cl("#cff"),
fgH: cl("#000"), bgH: cl("#0ff"),
dark: false,
quiet: false
fg:cl("#000"), bg:cl("#fff"),
fg2:cl("#000"), bg2:cl("#cff"),
fgH:cl("#000"), bgH:cl("#0ff"),
dark:false
};
if (q.normalTheme) normalTheme = q.normalTheme;
if (q.quietTheme) quietTheme = q.quietTheme;
let miss = false;
s.theme = mode ? quietTheme : normalTheme;
// ensure referenced theme files actually exist or remove reference
if (q.normalTheme && require("Storage").read(q.normalTheme) == undefined){
delete q.normalTheme;
miss = true;
}
if (q.quietTheme && require("Storage").read(q.quietTheme) == undefined){
delete q.quietTheme;
miss = true;
}
if (miss)
require("Storage").writeJSON("qmsched.json", q);
require("Storage").writeJSON("setting.json", s);
// reload clocks with new theme, otherwise just wait for user to switch apps
if (Bangle.CLOCK) load(global.__FILE__);
// load theme files
if (q.normalTheme)
normalTheme = readTheme(q.normalTheme);
if (q.quietTheme)
quietTheme = readTheme(q.quietTheme);
const newTheme = mode ? quietTheme : normalTheme;
let changed = false;
for (const c in newTheme) {
if (!(c in g.theme) || newTheme[c] !== g.theme[c]) {
changed = true;
break;
}
}
if (changed) {
s.theme = newTheme;
require("Storage").writeJSON("setting.json", s);
// reload clocks with new theme, otherwise just wait for user to switch apps
if (Bangle.CLOCK) load(global.__FILE__);
}
}
/**
* Apply LCD options and theme for given mode