slpquiet + thmswtch:

cleaned up indentation via vs code
master
jan lamos 2024-03-16 10:17:11 +01:00
parent 0eb73b95c7
commit 7310ab9708
5 changed files with 260 additions and 250 deletions

View File

@ -4,29 +4,29 @@ let saved = storage.readJSON(SETTINGS_FILE, 1) || {};
// Main menu // Main menu
var mainmenu = { var mainmenu = {
"" : { "": {
"title" : "Quiet Switch" "title": "Quiet Switch"
}, },
"Quiet Switch" : { "Quiet Switch": {
value : saved.quietWhenSleep, value: saved.quietWhenSleep,
format : v => v?"On":"Off", format: v => v ? "On" : "Off",
min:0,max:1,step:1, min: 0, max: 1, step: 1,
onchange :v=>{ onchange: v => {
saved.quietWhenSleep = v; saved.quietWhenSleep = v;
storage.writeJSON(SETTINGS_FILE,saved); storage.writeJSON(SETTINGS_FILE, saved);
} }
}, },
"Quiet Mode" : { "Quiet Mode": {
value : saved.quietMode, value: saved.quietMode,
format : v => v?"Alerts":"Silent", format: v => v ? "Alerts" : "Silent",
min:0,max:1,step:1, min: 0, max: 1, step: 1,
onchange :v=>{ onchange: v => {
saved.quietMode = v; saved.quietMode = v;
storage.writeJSON(SETTINGS_FILE,saved); storage.writeJSON(SETTINGS_FILE, saved);
} }
}, },
"Exit" : function() {load();}, "Exit": function () { load(); },
}; };
// Actually display the menu // Actually display the menu
@ -34,11 +34,11 @@ E.showMenu(mainmenu);
// Function to fix time format // Function to fix time format
function fixTime(h, m) { function fixTime(h, m) {
if (h.toString().length <2) { if (h.toString().length < 2) {
h = "0" + h.toString(); h = "0" + h.toString();
} }
if (m.toString().length <2) { if (m.toString().length < 2) {
m = "0" + m.toString(); m = "0" + m.toString();
} }
return h.toString() +":" + m.toString(); return h.toString() + ":" + m.toString();
} }

View File

@ -2,13 +2,13 @@
if (typeof (global.sleeplog || {}).trigger === "object") { if (typeof (global.sleeplog || {}).trigger === "object") {
// then add your parameters with the function to call as object into the trigger object // then add your parameters with the function to call as object into the trigger object
sleeplog.trigger["quietMode"] = { sleeplog.trigger["quietMode"] = {
onChange: true, // false as default, if true call fn only on a status change onChange: true, // false as default, if true call fn only on a status change
from: 0, // 0 as default, in ms, first time fn will be called from: 0, // 0 as default, in ms, first time fn will be called
// to: 24*60*60*1000, // 24h as default, in ms, last time fn will be called // to: 24*60*60*1000, // 24h as default, in ms, last time fn will be called
to: 0, to: 0,
// reference time to from & to is rounded to full minutes // reference time to from & to is rounded to full minutes
fn: function(data, thisTriggerEntry) { fn: function (data, thisTriggerEntry) {
aSettings = require('Storage').readJSON('quietSwitch.json', 1) || {}; aSettings = require('Storage').readJSON('quietSwitch.json', 1) || {};
const DEFAULTS = { const DEFAULTS = {
'quietWhenSleep': false, 'quietWhenSleep': false,
@ -18,16 +18,16 @@ sleeplog.trigger["quietMode"] = {
if (aSettings[k] === undefined) aSettings[k] = DEFAULTS[k]; if (aSettings[k] === undefined) aSettings[k] = DEFAULTS[k];
}); });
if (aSettings && aSettings['quietWhenSleep']){ if (aSettings && aSettings['quietWhenSleep']) {
console.log("the sleep status is: "+data.status); console.log("the sleep status is: " + data.status);
quietMode = aSettings['quietMode']; quietMode = aSettings['quietMode'];
delete aSettings; delete aSettings;
if ((data.status === 3 || data.status === 4) if ((data.status === 3 || data.status === 4)
&& (data.prevStatus !== 3 && data.prevStatus !== 4 )) { && (data.prevStatus !== 3 && data.prevStatus !== 4)) {
bSettings = require("Storage").readJSON('setting.json',true)||{}; bSettings = require("Storage").readJSON('setting.json', true) || {};
current = 0|bSettings.quiet; current = 0 | bSettings.quiet;
console.log("quiet mode is:" + current); console.log("quiet mode is:" + current);
if (current !== quietMode ){ if (current !== quietMode) {
console.log("fallen asleep"); console.log("fallen asleep");
bSettings.quiet = quietMode; bSettings.quiet = quietMode;
require("Storage").writeJSON("setting.json", bSettings); require("Storage").writeJSON("setting.json", bSettings);
@ -35,11 +35,11 @@ sleeplog.trigger["quietMode"] = {
delete bSettings; delete bSettings;
} }
if ((data.status === 2 || data.status === 1) if ((data.status === 2 || data.status === 1)
&& (data.prevStatus !== 2 && data.prevStatus !== 1 )) { && (data.prevStatus !== 2 && data.prevStatus !== 1)) {
bSettings = require("Storage").readJSON('setting.json',true)||{}; bSettings = require("Storage").readJSON('setting.json', true) || {};
current = 0|bSettings.quiet; current = 0 | bSettings.quiet;
console.log("quiet mode is:" + current); console.log("quiet mode is:" + current);
if (current !== 0 ){ if (current !== 0) {
console.log("woken up"); console.log("woken up");
bSettings.quiet = 0; bSettings.quiet = 0;
require("Storage").writeJSON("setting.json", bSettings); require("Storage").writeJSON("setting.json", bSettings);

View File

@ -1,36 +1,36 @@
(function() { (function () {
WIDGETS["slpquiet"] = { WIDGETS["slpquiet"] = {
area: "tl", area: "tl",
width: ((require("Storage").readJSON("setting.json", 1) || {}).quiet|0) ? 24 : 0, width: ((require("Storage").readJSON("setting.json", 1) || {}).quiet | 0) ? 24 : 0,
draw: function() { draw: function () {
const mode = (require("Storage").readJSON("setting.json", 1) || {}).quiet|0; const mode = (require("Storage").readJSON("setting.json", 1) || {}).quiet | 0;
if (mode===0) { // Off if (mode === 0) { // Off
if (this.width!==0) { if (this.width !== 0) {
this.width = 0; this.width = 0;
Bangle.drawWidgets(); Bangle.drawWidgets();
} }
return; return;
} }
// not Off: make sure width is correct // not Off: make sure width is correct
if (this.width!==24) { if (this.width !== 24) {
this.width = 24; this.width = 24;
Bangle.drawWidgets(); Bangle.drawWidgets();
return; // drawWidgets will call draw again return; // drawWidgets will call draw again
} }
let x = this.x, y = this.y; let x = this.x, y = this.y;
g.reset().clearRect(x, y, x+23, y+23); g.reset().clearRect(x, y, x + 23, y + 23);
// quiet mode: draw red one-way-street sign (dim red on Bangle.js 1) // quiet mode: draw red one-way-street sign (dim red on Bangle.js 1)
x = this.x+11;y = this.y+11; // center of widget x = this.x + 11; y = this.y + 11; // center of widget
g.setColor(process.env.HWVERSION===2 ? 1 : 0.8, 0, 0).fillCircle(x, y, 8); g.setColor(process.env.HWVERSION === 2 ? 1 : 0.8, 0, 0).fillCircle(x, y, 8);
g.setColor(g.theme.bg).fillRect(x-6, y-2, x+6, y+2); g.setColor(g.theme.bg).fillRect(x - 6, y - 2, x + 6, y + 2);
if (mode>1) {return;} // no alarms if (mode > 1) { return; } // no alarms
// alarms still on: draw alarm icon in bottom-right corner // alarms still on: draw alarm icon in bottom-right corner
x = this.x+18;y = this.y+17; // center of alarm x = this.x + 18; y = this.y + 17; // center of alarm
g.setColor(1, 1, 0) g.setColor(1, 1, 0)
.fillCircle(x, y, 3) // alarm body .fillCircle(x, y, 3) // alarm body
.fillRect(x-5, y+2, x+5, y+3) // bottom ridge .fillRect(x - 5, y + 2, x + 5, y + 3) // bottom ridge
.fillRect(x-1, y-5, x+1, y+5).drawLine(x, y-6, x, y+6) // top+bottom .fillRect(x - 1, y - 5, x + 1, y + 5).drawLine(x, y - 6, x, y + 6) // top+bottom
.drawLine(x+5, y-3, x+3, y-5).drawLine(x-5, y-3, x-3, y-5); // wriggles .drawLine(x + 5, y - 3, x + 3, y - 5).drawLine(x - 5, y - 3, x - 3, y - 5); // wriggles
}, },
}; };
})(); })();

View File

@ -5,62 +5,63 @@ var SunCalc = require("suncalc"); // from modules folder
const locale = require("locale"); const locale = require("locale");
let settings = storage.readJSON('setting.json', 1); let settings = storage.readJSON('setting.json', 1);
let saved = storage.readJSON(SETTINGS_FILE, 1) || {}; let saved = storage.readJSON(SETTINGS_FILE, 1) || {};
if (settings.theme.fg >0) { if (settings.theme.fg > 0) {
saved.darkModeActive = 1 saved.darkModeActive = 1
}else { } else {
saved.darkModeActive = 0 saved.darkModeActive = 0
} }
if (require("Storage").readJSON("themeSwitch.json",1) !== undefined){ if (require("Storage").readJSON("themeSwitch.json", 1) !== undefined) {
dmH = parseInt(saved.darkModeAt.split(":")[0]| 0); dmH = parseInt(saved.darkModeAt.split(":")[0] | 0);
dmM = parseInt(saved.darkModeAt.split(":")[1] |0); dmM = parseInt(saved.darkModeAt.split(":")[1] | 0);
lmH = parseInt(saved.lightModeAt.split(":")[0] |0); lmH = parseInt(saved.lightModeAt.split(":")[0] | 0);
lmM = parseInt(saved.lightModeAt.split(":")[1] |0); lmM = parseInt(saved.lightModeAt.split(":")[1] | 0);
}else{ } else {
dmH = 0; dmH = 0;
dmM = 0; dmM = 0;
lmH = 0; lmH = 0;
lmM = 0; lmM = 0;
} }
// Main menu // Main menu
var mainmenu = { var mainmenu = {
"" : { "": {
"title" : "Theme Switch" "title": "Theme Switch"
}, },
"< Back" : function() {load();}, "< Back": function () { load(); },
"Automatic Dark Mode" : { "Automatic Dark Mode": {
value : saved.darkMode | false, value: saved.darkMode | false,
format : v => v?"On":"Off", format: v => v ? "On" : "Off",
min:0,max:1,step:1, min: 0, max: 1, step: 1,
onchange :v=>{ onchange: v => {
saved.darkMode = v; saved.darkMode = v;
storage.writeJSON(SETTINGS_FILE,saved); storage.writeJSON(SETTINGS_FILE, saved);
} }
}, },
"Dark Mode Active" : { "Dark Mode Active": {
value : saved.darkModeActive | false, value: saved.darkModeActive | false,
format : v => v?"On":"Off", format: v => v ? "On" : "Off",
min:0,max:1,step:1, min: 0, max: 1, step: 1,
onchange :v=>{ onchange: v => {
saved.darkModeActive = v; saved.darkModeActive = v;
storage.writeJSON(SETTINGS_FILE,saved); storage.writeJSON(SETTINGS_FILE, saved);
if (v!==0) { if (v !== 0) {
setDarkTheme(); setDarkTheme();
Bangle.drawWidgets(); Bangle.drawWidgets();
delete m.lastIdx; delete m.lastIdx;
}else { } else {
setLightTheme(); setLightTheme();
Bangle.drawWidgets(); Bangle.drawWidgets();
delete m.lastIdx;} delete m.lastIdx;
}
} }
}, },
"Dark Mode by Sun" : { "Dark Mode by Sun": {
value : saved.darkModeBySun | false, value: saved.darkModeBySun | false,
format : v => v?"On":"Off", format: v => v ? "On" : "Off",
min:0,max:1,step:1, min: 0, max: 1, step: 1,
onchange : v =>{ onchange: v => {
saved.darkModeBySun =v; saved.darkModeBySun = v;
if (v!==0) { if (v !== 0) {
//print("calculating sun times"); //print("calculating sun times");
calculateSunTimes(); calculateSunTimes();
saved.lightModeAt = sunrise; saved.lightModeAt = sunrise;
@ -71,97 +72,105 @@ if (settings.theme.fg >0) {
} }
storage.writeJSON(SETTINGS_FILE,saved); storage.writeJSON(SETTINGS_FILE, saved);
}, },
}, },
"light mode at" : { "light mode at": {
value : saved.lightModeAt, value: saved.lightModeAt,
format: v => saved.lightModeAt, format: v => saved.lightModeAt,
onchange :function(){ onchange: function () {
if(saved.darkModeBySun===0){ if (saved.darkModeBySun === 0) {
E.showMenu(lightModeAtMenu); E.showMenu(lightModeAtMenu);
} }
else{ else {
E.showAlert("Deactivate dark mode first!", "Action Blocked").then( E.showAlert("Deactivate dark mode first!", "Action Blocked").then(
function() {E.showMenu(mainmenu);}); function () { E.showMenu(mainmenu); });
} }
} }
}, },
"dark mode at" : { "dark mode at": {
value : saved.darkModeAt , value: saved.darkModeAt,
format: v => saved.darkModeAt, format: v => saved.darkModeAt,
onchange :function(){ onchange: function () {
if(saved.darkModeBySun===0){ if (saved.darkModeBySun === 0) {
E.showMenu(darkModeAtMenu); E.showMenu(darkModeAtMenu);
} }
else{ else {
E.showAlert("Deactivate dark mode first!", "Action Blocked").then( function() {E.showMenu(mainmenu);}); E.showAlert("Deactivate dark mode first!", "Action Blocked").then(function () { E.showMenu(mainmenu); });
} }
} }
}, },
"Exit" : function() {load();}, "Exit": function () { load(); },
}; };
var lightModeAtMenu = { var lightModeAtMenu = {
"" : { "": {
"title" : "light mode at" "title": "light mode at"
}, },
"Hour" : { "Hour": {
value : lmH, value: lmH,
min:0,max:23,step:1, min: 0, max: 23, step: 1,
onchange : v => { lmH=v; }}, onchange: v => { lmH = v; }
"Minute" : { },
value : lmM, "Minute": {
min:0,max:59,step:1, value: lmM,
onchange : v => { lmM=v; }}, min: 0, max: 59, step: 1,
"< Back" : function() { saved.lightModeAt = fixTime(lmH,lmM); onchange: v => { lmM = v; }
storage.writeJSON(SETTINGS_FILE,saved); },
E.showMenu(mainmenu); }, "< Back": function () {
}; saved.lightModeAt = fixTime(lmH, lmM);
storage.writeJSON(SETTINGS_FILE, saved);
E.showMenu(mainmenu);
},
};
var darkModeAtMenu = { var darkModeAtMenu = {
"" : { "": {
"title" : "dark mode at" "title": "dark mode at"
}, },
"Hour" : { "Hour": {
value : dmH, value: dmH,
min:0,max:23,step:1, min: 0, max: 23, step: 1,
onchange : v => { dmH=v; }}, onchange: v => { dmH = v; }
"Minute" : { },
value : dmM, "Minute": {
min:0,max:59,step:1, value: dmM,
onchange : v => { dmM=v; }}, min: 0, max: 59, step: 1,
"< Back" : function() {saved.darkModeAt = fixTime(dmH,dmM); onchange: v => { dmM = v; }
storage.writeJSON(SETTINGS_FILE,saved); },
E.showMenu(mainmenu); }, "< Back": function () {
}; saved.darkModeAt = fixTime(dmH, dmM);
storage.writeJSON(SETTINGS_FILE, saved);
E.showMenu(mainmenu);
},
};
// Actually display the menu // Actually display the menu
E.showMenu(mainmenu); E.showMenu(mainmenu);
// Function to fix time format // Function to fix time format
function fixTime(h, m) { function fixTime(h, m) {
if (h.toString().length <2) { if (h.toString().length < 2) {
h = "0" + h.toString(); h = "0" + h.toString();
} }
if (m.toString().length <2) { if (m.toString().length < 2) {
m = "0" + m.toString(); m = "0" + m.toString();
} }
return h.toString() +":" + m.toString(); return h.toString() + ":" + m.toString();
} }
function calculateSunTimes() { function calculateSunTimes() {
var location = require("Storage").readJSON("mylocation.json",1)||{}; var location = require("Storage").readJSON("mylocation.json", 1) || {};
location.lat = location.lat||51.5072; location.lat = location.lat || 51.5072;
location.lon = location.lon||0.1276; // London location.lon = location.lon || 0.1276; // London
date = new Date(Date.now()); date = new Date(Date.now());
var times = SunCalc.getTimes(date, location.lat, location.lon); var times = SunCalc.getTimes(date, location.lat, location.lon);
sunrise = fixTime(times.sunrise.getHours() , times.sunrise.getMinutes()); sunrise = fixTime(times.sunrise.getHours(), times.sunrise.getMinutes());
sunset = fixTime(times.sunset.getHours() ,times.sunset.getMinutes()); sunset = fixTime(times.sunset.getHours(), times.sunset.getMinutes());
/* do we want to re-calculate this every day? Or we just assume /* do we want to re-calculate this every day? Or we just assume
that 'show' will get called once a day? */ that 'show' will get called once a day? */
} }
function cl(x) { return g.setColor(x).getColor(); } function cl(x) { return g.setColor(x).getColor(); }
@ -171,25 +180,25 @@ function upd(th) {
storage.write('setting.json', settings); storage.write('setting.json', settings);
delete g.reset; delete g.reset;
g._reset = g.reset; g._reset = g.reset;
g.reset = function(n) { return g._reset().setColor(th.fg).setBgColor(th.bg); }; g.reset = function (n) { return g._reset().setColor(th.fg).setBgColor(th.bg); };
g.clear = function(n) { if (n) g.reset(); return g.clearRect(0,0,g.getWidth(),g.getHeight()); }; g.clear = function (n) { if (n) g.reset(); return g.clearRect(0, 0, g.getWidth(), g.getHeight()); };
g.clear(1); g.clear(1);
} }
function flipTheme() { function flipTheme() {
if (!g.theme.dark) { if (!g.theme.dark) {
upd({ upd({
fg:cl("#fff"), bg:cl("#000"), fg: cl("#fff"), bg: cl("#000"),
fg2:cl("#fff"), bg2:cl("#004"), fg2: cl("#fff"), bg2: cl("#004"),
fgH:cl("#fff"), bgH:cl("#00f"), fgH: cl("#fff"), bgH: cl("#00f"),
dark:true dark: true
}); });
} else { } else {
upd({ upd({
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
}); });
} }
} }
@ -197,10 +206,10 @@ function flipTheme() {
function setDarkTheme() { function setDarkTheme() {
if (!g.theme.dark) { if (!g.theme.dark) {
upd({ upd({
fg:cl("#fff"), bg:cl("#000"), fg: cl("#fff"), bg: cl("#000"),
fg2:cl("#fff"), bg2:cl("#004"), fg2: cl("#fff"), bg2: cl("#004"),
fgH:cl("#fff"), bgH:cl("#00f"), fgH: cl("#fff"), bgH: cl("#00f"),
dark:true dark: true
}); });
} }
} }
@ -208,10 +217,10 @@ function setDarkTheme() {
function setLightTheme() { function setLightTheme() {
if (g.theme.dark) { if (g.theme.dark) {
upd({ upd({
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
}); });
} }
} }

View File

@ -1,19 +1,20 @@
(function dm() { (function dm() {
function selectRightMode(lt,dt,at) { function selectRightMode(lt, dt, at) {
if (at < lt && at < dt ) { if (at < lt && at < dt) {
return "lightT"; return "lightT";
}else if (at > lt && at < dt) { } else if (at > lt && at < dt) {
return "darkT"; return "darkT";
}else if (at >lt && at > dt) { } else if (at > lt && at > dt) {
return "lightN";} return "lightN";
}
} }
function setDarkTheme() { function setDarkTheme() {
if (!g.theme.dark) { if (!g.theme.dark) {
upd({ upd({
fg:cl("#fff"), bg:cl("#000"), fg: cl("#fff"), bg: cl("#000"),
fg2:cl("#fff"), bg2:cl("#004"), fg2: cl("#fff"), bg2: cl("#004"),
fgH:cl("#fff"), bgH:cl("#00f"), fgH: cl("#fff"), bgH: cl("#00f"),
dark:true dark: true
}); });
} }
} }
@ -21,43 +22,43 @@
function setLightTheme() { function setLightTheme() {
if (g.theme.dark) { if (g.theme.dark) {
upd({ upd({
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
}); });
} }
} }
function fixTime(h, m) { function fixTime(h, m) {
if (h.toString().length <2) { if (h.toString().length < 2) {
h = "0" + h.toString(); h = "0" + h.toString();
} }
if (m.toString().length <2) { if (m.toString().length < 2) {
m = "0" + m.toString(); m = "0" + m.toString();
} }
return h.toString() +":" + m.toString(); return h.toString() + ":" + m.toString();
} }
function calculateSunTimes() { function calculateSunTimes() {
var location = require("Storage").readJSON("mylocation.json",1)||{}; var location = require("Storage").readJSON("mylocation.json", 1) || {};
location.lat = location.lat||51.5072; location.lat = location.lat || 51.5072;
location.lon = location.lon||0.1276; // London location.lon = location.lon || 0.1276; // London
date = new Date(Date.now()); date = new Date(Date.now());
var times = SunCalc.getTimes(date, location.lat, location.lon); var times = SunCalc.getTimes(date, location.lat, location.lon);
sunrise = fixTime(times.sunrise.getHours() , times.sunrise.getMinutes()); sunrise = fixTime(times.sunrise.getHours(), times.sunrise.getMinutes());
sunset = fixTime(times.sunset.getHours() ,times.sunset.getMinutes()); sunset = fixTime(times.sunset.getHours(), times.sunset.getMinutes());
/* do we want to re-calculate this every day? Or we just assume /* do we want to re-calculate this every day? Or we just assume
that 'show' will get called once a day? */ that 'show' will get called once a day? */
} }
function cl(x) { return g.setColor(x).getColor(); } function cl(x) { return g.setColor(x).getColor(); }
function upd(th) { function upd(th) {
g.theme = th; g.theme = th;
settings = storage.readJSON('setting.json',1) settings = storage.readJSON('setting.json', 1)
settings.theme = th; settings.theme = th;
storage.write('setting.json', settings); storage.write('setting.json', settings);
delete g.reset; delete g.reset;
g._reset = g.reset; g._reset = g.reset;
g.reset = function(n) { return g._reset().setColor(th.fg).setBgColor(th.bg); }; g.reset = function (n) { return g._reset().setColor(th.fg).setBgColor(th.bg); };
g.clear = function(n) { if (n) g.reset(); return g.clearRect(0,0,g.getWidth(),g.getHeight()); }; g.clear = function (n) { if (n) g.reset(); return g.clearRect(0, 0, g.getWidth(), g.getHeight()); };
g.clear(1); g.clear(1);
} }
try { try {
@ -71,39 +72,39 @@
var sunrise, sunset, date; var sunrise, sunset, date;
var SunCalc = require("suncalc"); // from modules folder var SunCalc = require("suncalc"); // from modules folder
const locale = require("locale"); const locale = require("locale");
let bSettings = storage.readJSON(SETTINGS_FILE,true)||{}; let bSettings = storage.readJSON(SETTINGS_FILE, true) || {};
const now = new Date(); const now = new Date();
hr = now.getHours()+(now.getMinutes()/60)+(now.getSeconds()/3600); // current (decimal) hour hr = now.getHours() + (now.getMinutes() / 60) + (now.getSeconds() / 3600); // current (decimal) hour
dmH = parseFloat(bSettings.darkModeAt.split(":")[0]); dmH = parseFloat(bSettings.darkModeAt.split(":")[0]);
dmM = parseFloat(bSettings.darkModeAt.split(":")[1]); dmM = parseFloat(bSettings.darkModeAt.split(":")[1]);
lmH = parseFloat(bSettings.lightModeAt.split(":")[0]); lmH = parseFloat(bSettings.lightModeAt.split(":")[0]);
lmM = parseFloat(bSettings.lightModeAt.split(":")[1]); lmM = parseFloat(bSettings.lightModeAt.split(":")[1]);
print("reading switch timeslots....."); print("reading switch timeslots.....");
let dmDec = parseFloat(dmH)+parseFloat(dmM)/parseFloat(60); let dmDec = parseFloat(dmH) + parseFloat(dmM) / parseFloat(60);
let lmDec = parseFloat(lmH)+parseFloat(lmM)/parseFloat(60); let lmDec = parseFloat(lmH) + parseFloat(lmM) / parseFloat(60);
targetMode = selectRightMode(parseFloat(lmDec),parseFloat(dmDec),parseFloat(hr)); targetMode = selectRightMode(parseFloat(lmDec), parseFloat(dmDec), parseFloat(hr));
if (targetMode === "lightT" || targetMode === "lightN" ){ if (targetMode === "lightT" || targetMode === "lightN") {
nextH = lmH; nextH = lmH;
nextM = lmM; nextM = lmM;
} else { } else {
nextH = dmH; nextH = dmH;
nextM = dmM; nextM = dmM;
} }
nextDecH = parseFloat(nextH) + parseFloat(nextM)/parseFloat(60); nextDecH = parseFloat(nextH) + parseFloat(nextM) / parseFloat(60);
let t = 3600000*(nextDecH-hr); // timeout in milliseconds let t = 3600000 * (nextDecH - hr); // timeout in milliseconds
if (t<0) {t += 86400000;} // scheduled for tomorrow: add a day if (t < 0) { t += 86400000; } // scheduled for tomorrow: add a day
/* update theme mode at the correct time. */ /* update theme mode at the correct time. */
Bangle.dmTimeout=setTimeout(() => { Bangle.dmTimeout = setTimeout(() => {
if (bSettings.darkMode !==0){ if (bSettings.darkMode !== 0) {
if (targetMode === "lightT" || targetMode === "lightN" ){ if (targetMode === "lightT" || targetMode === "lightN") {
setLightTheme(); setLightTheme();
}else { } else {
setDarkTheme(); setDarkTheme();
} }
Bangle.loadWidgets(); Bangle.loadWidgets();
Bangle.drawWidgets(); Bangle.drawWidgets();
setTimeout(load, 20); setTimeout(load, 20);
if (bSettings.darkModeBySun !==0){ if (bSettings.darkModeBySun !== 0) {
calculateSunTimes(); calculateSunTimes();
bSettings.lightModeAt = sunrise; bSettings.lightModeAt = sunrise;
bSettings.darkModeAt = sunset; bSettings.darkModeAt = sunset;