Added dynamic screen

pull/2545/head
David Peer 2023-01-30 18:07:02 +01:00
parent 4fbca8aa0c
commit 7d986c2d46
3 changed files with 30 additions and 8 deletions

View File

@ -15,7 +15,7 @@ Here you can see an example of a locked bangle with a low battery:
![](screenshot_3.png)
## Settings
- Screen: Normal (widgets shown), Full (widgets are hidden).
- Screen: Normal (widgets shown), Dynamic (widgets shown if unlocked) or Full (widgets are hidden).
- Theme: Select your custom theme, independent of system settings.
## Creator

View File

@ -3,15 +3,18 @@
*/
const storage = require('Storage');
const widget_utils = require("widget_utils");
/************************************************
* Settings
*/
const storage = require('Storage');
const SETTINGS_FILE = "happyclk.setting.json";
let settings = {
color: "Dark",
screen: "Full"
screen: "Dynamic"
};
let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings;
@ -83,6 +86,16 @@ var drawTimeout;
* HELPER
*/
let isFullscreen = function() {
var s = settings.screen.toLowerCase();
if(s == "dynamic"){
return Bangle.isLocked();
} else {
return s == "full";
}
};
// Based on the great multi clock from https://github.com/jeffmer/BangleApps/
Graphics.prototype.drawPupils = function(cx, cy, r1, dx, dy, angle) {
angle = angle % 360;
@ -175,7 +188,7 @@ let drawSmile = function(isLocked){
}
let drawEyeBrow = function(){
if(settings.screen != "Full") return;
if(!isFullscreen()) return;
g.setColor(colors.fg);
var w = 6;
@ -187,8 +200,8 @@ let drawEyeBrow = function(){
let drawWidgets = function(){
if (settings.screen == "Full") {
require('widget_utils').hide();
if (isFullscreen()) {
widget_utils.hide();
} else {
Bangle.drawWidgets();
}
@ -229,6 +242,15 @@ Bangle.on('lcdPower',on=>{
});
Bangle.on('lock', function(isLocked) {
if (drawTimeout) clearTimeout(drawTimeout);
drawTimeout = undefined;
if(!isLocked && settings.screen.toLowerCase() == "dynamic"){
// If we have to show the widgets again, we load it from our
// cache and not through Bangle.loadWidgets as its much faster!
widget_utils.show();
}
draw(isLocked);
});

View File

@ -5,7 +5,7 @@
const storage = require('Storage')
let settings = {
color: "Dark",
screen: "Full"
screen: "Dynamic"
};
let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings;
for (const key in saved_settings) {
@ -17,7 +17,7 @@
}
var colorOptions = ["Dark", "Black", "White", "Blue", "Green", "Red", "Purple", "Yellow"];
var screenOptions = ["Normal", "Full"];
var screenOptions = ["Normal", "Dynamic", "Full"];
E.showMenu({
'': { 'title': 'Happy Clock' },
'< Back': back,