qmsched - Remove quiet property and save one theme copy

master
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() { function applyTheme() {
const theme = (STORAGE.readJSON("setting.json", 1) || {}).theme; const theme = (STORAGE.readJSON("setting.json", 1) || {}).theme;
if (theme && theme.dark===g.theme.dark) return; // already correct
g.theme = theme; g.theme = theme;
delete g.reset; delete g.reset;
g._reset = g.reset; g._reset = g.reset;
@ -105,24 +104,8 @@ function showThemeMenu(back, quiet){
function cl(x) { return g.setColor(x).getColor(); } function cl(x) { return g.setColor(x).getColor(); }
var themesMenu = { var themesMenu = {
'':{title:/*LANG*/'Theme', back: back}, '':{title:/*LANG*/'Theme', back: back},
/*LANG*/'Dark BW': ()=>{ /*LANG*/'Default': ()=>{
set(option, { unset(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
});
back(); back();
} }
}; };
@ -131,13 +114,7 @@ function showThemeMenu(back, quiet){
n => { n => {
let newTheme = STORAGE.readJSON(n); let newTheme = STORAGE.readJSON(n);
themesMenu[newTheme.name ? newTheme.name : n] = () => { themesMenu[newTheme.name ? newTheme.name : n] = () => {
set(option, { set(option, n);
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(); back();
}; };
} }

View File

@ -3,38 +3,71 @@
* @param {int} mode Quiet Mode * @param {int} mode Quiet Mode
*/ */
function switchTheme(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(); } 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 = { let quietTheme = {
// 'Dark BW' // 'Dark BW'
fg:cl("#fff"), bg:cl("#000"), fg:cl("#fff"), bg:cl("#000"),
fg2: cl("#0ff"), bg2: cl("#000"), fg2:cl("#fff"), bg2:cl("#004"),
fgH:cl("#fff"), bgH:cl("#00f"), fgH:cl("#fff"), bgH:cl("#00f"),
dark: true, dark:true
quiet: true
}; };
let normalTheme = { let normalTheme = {
// 'Light BW' // 'Light BW'
fg:cl("#000"), bg:cl("#fff"), fg:cl("#000"), bg:cl("#fff"),
fg2:cl("#000"), bg2:cl("#cff"), fg2:cl("#000"), bg2:cl("#cff"),
fgH:cl("#000"), bgH:cl("#0ff"), fgH:cl("#000"), bgH:cl("#0ff"),
dark: false, dark:false
quiet: false
}; };
if (q.normalTheme) normalTheme = q.normalTheme; let miss = false;
if (q.quietTheme) quietTheme = q.quietTheme;
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);
// 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); require("Storage").writeJSON("setting.json", s);
// reload clocks with new theme, otherwise just wait for user to switch apps // reload clocks with new theme, otherwise just wait for user to switch apps
if (Bangle.CLOCK) load(global.__FILE__); if (Bangle.CLOCK) load(global.__FILE__);
} }
}
/** /**
* Apply LCD options and theme for given mode * Apply LCD options and theme for given mode
* @param {int} mode Quiet Mode * @param {int} mode Quiet Mode