parent
0eb73b95c7
commit
7310ab9708
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,51 +2,51 @@
|
||||||
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,
|
||||||
'quietMode': 1
|
'quietMode': 1
|
||||||
};
|
};
|
||||||
Object.keys(DEFAULTS).forEach(k => {
|
Object.keys(DEFAULTS).forEach(k => {
|
||||||
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);
|
||||||
|
}
|
||||||
|
delete bSettings;
|
||||||
}
|
}
|
||||||
delete bSettings;
|
if ((data.status === 2 || data.status === 1)
|
||||||
}
|
&& (data.prevStatus !== 2 && data.prevStatus !== 1)) {
|
||||||
if ((data.status === 2 || data.status === 1)
|
bSettings = require("Storage").readJSON('setting.json', true) || {};
|
||||||
&& (data.prevStatus !== 2 && data.prevStatus !== 1 )) {
|
current = 0 | bSettings.quiet;
|
||||||
bSettings = require("Storage").readJSON('setting.json',true)||{};
|
|
||||||
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);
|
||||||
}
|
}
|
||||||
delete bSettings;
|
delete bSettings;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
|
||||||
|
|
@ -5,163 +5,172 @@ 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) {
|
||||||
|
dmH = parseInt(saved.darkModeAt.split(":")[0] | 0);
|
||||||
|
dmM = parseInt(saved.darkModeAt.split(":")[1] | 0);
|
||||||
|
lmH = parseInt(saved.lightModeAt.split(":")[0] | 0);
|
||||||
|
lmM = parseInt(saved.lightModeAt.split(":")[1] | 0);
|
||||||
|
} else {
|
||||||
|
dmH = 0;
|
||||||
|
dmM = 0;
|
||||||
|
lmH = 0;
|
||||||
|
lmM = 0;
|
||||||
}
|
}
|
||||||
if (require("Storage").readJSON("themeSwitch.json",1) !== undefined){
|
|
||||||
dmH = parseInt(saved.darkModeAt.split(":")[0]| 0);
|
|
||||||
dmM = parseInt(saved.darkModeAt.split(":")[1] |0);
|
|
||||||
lmH = parseInt(saved.lightModeAt.split(":")[0] |0);
|
|
||||||
lmM = parseInt(saved.lightModeAt.split(":")[1] |0);
|
|
||||||
}else{
|
|
||||||
dmH = 0;
|
|
||||||
dmM = 0;
|
|
||||||
lmH = 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" : {
|
|
||||||
value : saved.darkModeBySun | false,
|
|
||||||
format : v => v?"On":"Off",
|
|
||||||
min:0,max:1,step:1,
|
|
||||||
onchange : v =>{
|
|
||||||
saved.darkModeBySun =v;
|
|
||||||
if (v!==0) {
|
|
||||||
//print("calculating sun times");
|
|
||||||
calculateSunTimes();
|
|
||||||
saved.lightModeAt = sunrise;
|
|
||||||
saved.darkModeAt = sunset;
|
|
||||||
//print("sunrise" +sunrise);
|
|
||||||
//print("sunset" +sunset);
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
storage.writeJSON(SETTINGS_FILE,saved);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
"light mode at" : {
|
|
||||||
value : saved.lightModeAt,
|
|
||||||
format: v => saved.lightModeAt,
|
|
||||||
onchange :function(){
|
|
||||||
if(saved.darkModeBySun===0){
|
|
||||||
E.showMenu(lightModeAtMenu);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
E.showAlert("Deactivate dark mode first!", "Action Blocked").then(
|
|
||||||
function() {E.showMenu(mainmenu);});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dark mode at" : {
|
|
||||||
value : saved.darkModeAt ,
|
|
||||||
format: v => saved.darkModeAt,
|
|
||||||
onchange :function(){
|
|
||||||
if(saved.darkModeBySun===0){
|
|
||||||
E.showMenu(darkModeAtMenu);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
E.showAlert("Deactivate dark mode first!", "Action Blocked").then( function() {E.showMenu(mainmenu);});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"Exit" : function() {load();},
|
"Dark Mode by Sun": {
|
||||||
|
value: saved.darkModeBySun | false,
|
||||||
|
format: v => v ? "On" : "Off",
|
||||||
|
min: 0, max: 1, step: 1,
|
||||||
|
onchange: v => {
|
||||||
|
saved.darkModeBySun = v;
|
||||||
|
if (v !== 0) {
|
||||||
|
//print("calculating sun times");
|
||||||
|
calculateSunTimes();
|
||||||
|
saved.lightModeAt = sunrise;
|
||||||
|
saved.darkModeAt = sunset;
|
||||||
|
//print("sunrise" +sunrise);
|
||||||
|
//print("sunset" +sunset);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
storage.writeJSON(SETTINGS_FILE, saved);
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"light mode at": {
|
||||||
|
value: saved.lightModeAt,
|
||||||
|
format: v => saved.lightModeAt,
|
||||||
|
onchange: function () {
|
||||||
|
if (saved.darkModeBySun === 0) {
|
||||||
|
E.showMenu(lightModeAtMenu);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
E.showAlert("Deactivate dark mode first!", "Action Blocked").then(
|
||||||
|
function () { E.showMenu(mainmenu); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dark mode at": {
|
||||||
|
value: saved.darkModeAt,
|
||||||
|
format: v => saved.darkModeAt,
|
||||||
|
onchange: function () {
|
||||||
|
if (saved.darkModeBySun === 0) {
|
||||||
|
E.showMenu(darkModeAtMenu);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
E.showAlert("Deactivate dark mode first!", "Action Blocked").then(function () { E.showMenu(mainmenu); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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,21 +206,21 @@ 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
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,113 +1,114 @@
|
||||||
(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
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
||||||
if (Bangle.dmTimeout) clearTimeout(Bangle.dmTimeout); // so the app can eval() this file to apply changes right away
|
if (Bangle.dmTimeout) clearTimeout(Bangle.dmTimeout); // so the app can eval() this file to apply changes right away
|
||||||
delete Bangle.dmTimeout;
|
delete Bangle.dmTimeout;
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
print("Bangle.dmTimeout does not exist");
|
print("Bangle.dmTimeout does not exist");
|
||||||
}
|
}
|
||||||
const SETTINGS_FILE = "themeSwitch.json";
|
const SETTINGS_FILE = "themeSwitch.json";
|
||||||
const storage = require("Storage");
|
const storage = require("Storage");
|
||||||
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;
|
||||||
storage.writeJSON(SETTINGS_FILE, bSettings);
|
storage.writeJSON(SETTINGS_FILE, bSettings);
|
||||||
}
|
}
|
||||||
dm(); // schedule next update
|
dm(); // schedule next update
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue