2021-11-29 20:12:25 +00:00
|
|
|
|
|
|
|
Graphics.prototype.setFontQahiri = function(scale) {
|
|
|
|
// Actual height 60 (60 - 1)
|
|
|
|
g.setFontCustom(atob("AAAAAAAAfAAAAAAAAAAAAP4AAAAAAAAAAAD/AAAAAAAAAAAB/wAAAAAAAAAAAf8AAAAAAAAAAAH/AAAAAAAAAAAA/wAAAAAAAAAAAH4AAAAAAAAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAAAAAAAAB8AAAAAAAAAAAD/gAAAAAAAAAAH/4AAAAAAAAAAP/8AAAAAAAAAAP/4AAAAAAAAAAf/4AAAAAAAAAA//wAAAAAAAAAB//gAAAAAAAAAD//AAAAAAAAAAD//AAAAAAAAAAH/+AAAAAAAAAAP/8AAAAAAAAAAf/4AAAAAAAAAAf/4AAAAAAAAAA//wAAAAAAAAAB//gAAAAAAAAAD//AAAAAAAAAAH/+AAAAAAAAAAH/+AAAAAAAAAAP/8AAAAAAAAAAH/4AAAAAAAAAAB/wAAAAAAAAAAAPwAAAAAAAAAAADgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD/AAAD/AAAAAAA/wAAA/wAAAAAAP8AAAP8AAAAAAD/AAAD/AAAAAAA/wAAA/wAAAAAAP8AAAP8AAAAAAD/AAAD/AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAH///gH8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///AAAAAAAAAAP//wAAAAAAAAAD//8AAAAAAAAAA///AAAAAAAAAAP//wAAAAAAAAAD//8AAAAAAAAAA///AAAAAAAAAAP//wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAH8A///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAP8B///8AAAAAAD/Af///AAAAAAA/wH///wAAAAAAH8A///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA/wAAAAAAAAAAAP8AAAAAAAAAAAD/AAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD///4D/AAAAAAA///+A/wAAAAAAP///gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA/wH+A/wAAAAAAP8B/gP8AAAAAAD/Af4D/AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAP/////8AAAAAAD//////AAAAAAA//////wAAAAAAH/////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+AAfAAAAAAAAAfwAP4AAAAAAAAP8AD/AAAAAAAAD/gB/wAAAAAAAA/4Af8AAAAAAAAP+AH/AAAAAAAAD/AA/wAAAAAAAAfgAH4AAAAAAAA
|
|
|
|
}
|
|
|
|
|
|
|
|
const SETTINGS_FILE = "pebble.json";
|
|
|
|
let settings;
|
|
|
|
|
|
|
|
function loadSettings() {
|
|
|
|
settings = require("Storage").readJSON(SETTINGS_FILE,1)|| {'bg': '#0f0', 'color': 'Green'};
|
|
|
|
}
|
|
|
|
|
|
|
|
var img = require("heatshrink").decompress(atob("oFAwkGswA/AH4A/AH4A/AH4A/AFEAD74gdsAfBELlggMhD70iILsAiUAIKQRBgxAHgUiIKQQJUAMSD4JBQsBVBIAq/DEAJBCJ45VHkAxEDwKfDIIUREBq2BmcQCAQeCkczmRBEiAgND4MxSoYGBAAQgCAAohKDARhBG4IeDEAQ8BAA5fJABgpBgFDgEiQgJEHT4IeMmMBkMFAYJJDEQaYDiYfMkECiEEoEDBAX//8ykJsBD4MAWwIALiBeCqAyDn//BoYgBgAeMYAMhgE0CRIOBD58BkEEmCRKkEGD5szkUQqdASJUxD4MAgKBKmUigFEGJZgBAATODFw0CkEBmoOJAAQdB7owBOBDdCgbdED5fd6pRIgDdCeBkxD4fdeAgNEkMFmheLdgIfE6BgGmDdCoDdKDwYfD6gzGiBeBrpLHXYUQXIMgD4NND4SAFZgMRgAKBPwroBBYIeBIAL/CADESL4VmsAcWgMRkQeDAAMAkQAWMAQeCD4MSDqqdBDwgfBAC8GDwiAXDowA/AH4A/AH4A/AH4A/AEA"));
|
|
|
|
|
|
|
|
const h = g.getHeight();
|
|
|
|
const w = g.getWidth();
|
|
|
|
const ha = 2*h/5 - 8;
|
|
|
|
const h2 = 3*h/5 - 10;
|
|
|
|
const h3 = 7*h/8;
|
|
|
|
|
2021-11-29 20:27:25 +00:00
|
|
|
let batterWarning = false;
|
|
|
|
|
2021-11-29 20:12:25 +00:00
|
|
|
function draw() {
|
2021-11-29 20:27:25 +00:00
|
|
|
let date = new Date();
|
|
|
|
let da = date.toString().split(" ");
|
|
|
|
//let timeStr = require("locale").time(date,1); // causes screen corruption ???
|
|
|
|
let timeStr = da[4].substr(0,5);
|
2021-11-29 20:12:25 +00:00
|
|
|
const t = 6;
|
|
|
|
|
2021-11-29 20:27:25 +00:00
|
|
|
// turn the warning on once we have dipped below 30%
|
|
|
|
if (E.getBattery() < 30)
|
|
|
|
batterWarning = true;
|
|
|
|
|
|
|
|
// turn the warning off once we have dipped above 40%
|
|
|
|
if (E.getBattery() > 40)
|
|
|
|
batterWarning = false;
|
|
|
|
|
|
|
|
// for testing only
|
|
|
|
batterWarning = true;
|
|
|
|
|
2021-11-29 20:12:25 +00:00
|
|
|
g.reset();
|
|
|
|
g.setColor(settings.bg);
|
|
|
|
g.fillRect(0, 0, w, h2 - t);
|
|
|
|
|
|
|
|
// contrast bar
|
|
|
|
g.setColor(g.theme.fg);
|
|
|
|
g.fillRect(0, h2 - t, w, h2);
|
|
|
|
|
|
|
|
// day and steps
|
2021-11-29 20:27:25 +00:00
|
|
|
if (settings.color == 'Blue' || settings.color == 'Red')
|
|
|
|
g.setColor('#fff'); // white on blue or red best contrast
|
|
|
|
else
|
|
|
|
g.setColor('#000'); // otherwise black regardless of theme
|
|
|
|
|
2021-11-29 20:12:25 +00:00
|
|
|
g.setFont('Vector', 22);
|
|
|
|
g.setFontAlign(0, -1);
|
|
|
|
g.drawString(da[0], w/4, ha); // day of week
|
|
|
|
g.drawString(getSteps(), 3*w/4, ha);
|
|
|
|
|
|
|
|
// time
|
2021-11-29 20:27:25 +00:00
|
|
|
g.setColor(!batteryWarning ? g.theme.bg ? '#f00');
|
2021-11-29 20:12:25 +00:00
|
|
|
g.fillRect(0, h2, w, h3);
|
|
|
|
g.setFontQahiri();
|
|
|
|
g.setFontAlign(0, -1);
|
|
|
|
g.setColor(g.theme.fg);
|
|
|
|
g.drawString(timeStr, w/2, h2 - 8);
|
|
|
|
|
|
|
|
// contrast bar
|
|
|
|
g.setColor(g.theme.fg);
|
|
|
|
g.fillRect(0, h3, w, h3 + t);
|
|
|
|
|
|
|
|
// the bottom
|
|
|
|
g.setColor(settings.bg);
|
|
|
|
g.fillRect(0, h3 + t, w, h);
|
|
|
|
|
|
|
|
g.setColor(settings.bg);
|
|
|
|
g.drawImage(img, w/2 + ((w/2) - 64)/2, 10, { scale: 1 });
|
|
|
|
drawCalendar(((w/2) - 48)/2, 10, 48, 4, da[2]);
|
|
|
|
}
|
|
|
|
|
|
|
|
// at x,y width:wi thicknes:th
|
|
|
|
function drawCalendar(x,y,wi,th,str) {
|
|
|
|
g.setColor(g.theme.fg);
|
|
|
|
g.fillRect(x, y, x + wi, y + wi);
|
|
|
|
g.setColor(g.theme.bg);
|
|
|
|
g.fillRect(x + th, y + th, x + wi - th, y + wi - th);
|
|
|
|
g.setColor(g.theme.fg);
|
|
|
|
|
2021-11-29 20:27:25 +00:00
|
|
|
let hook_t = 6;
|
2021-11-29 20:12:25 +00:00
|
|
|
// first calendar hook, one third in
|
|
|
|
g.fillRect(x + (wi/3) - (th/2), y - hook_t, x + wi/3 + th - (th/2), y + hook_t);
|
|
|
|
// second calendar hook, two thirds in
|
|
|
|
g.fillRect(x + (2*wi/3) -(th/2), y - hook_t, x + 2*wi/3 + th - (th/2), y + hook_t);
|
|
|
|
|
|
|
|
g.setFont('Vector', 22);
|
|
|
|
g.setFontAlign(0, 0);
|
|
|
|
g.drawString(str, x + wi/2 + th/2, y + wi/2 + th/2);
|
|
|
|
}
|
|
|
|
|
|
|
|
function getSteps() {
|
|
|
|
if (WIDGETS.wpedom !== undefined) {
|
|
|
|
return WIDGETS.wpedom.getSteps();
|
|
|
|
}
|
|
|
|
return '????';
|
|
|
|
}
|
|
|
|
|
|
|
|
g.clear();
|
|
|
|
Bangle.loadWidgets();
|
|
|
|
/*
|
|
|
|
* we are not drawing the widgets as we are taking over the whole screen
|
|
|
|
* so we will blank out the draw() functions of each widget
|
|
|
|
*/
|
2021-11-29 20:27:25 +00:00
|
|
|
for (let wd of WIDGETS) {wd.draw=()=>{};}
|
2021-11-29 20:12:25 +00:00
|
|
|
loadSettings();
|
|
|
|
setInterval(draw, 15000); // refresh every 15s
|
|
|
|
draw();
|
|
|
|
Bangle.setUI("clock");
|