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) ![](screenshot_3.png)
## Settings ## 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. - Theme: Select your custom theme, independent of system settings.
## Creator ## Creator

View File

@ -3,15 +3,18 @@
*/ */
const storage = require('Storage');
const widget_utils = require("widget_utils");
/************************************************ /************************************************
* Settings * Settings
*/ */
const storage = require('Storage');
const SETTINGS_FILE = "happyclk.setting.json"; const SETTINGS_FILE = "happyclk.setting.json";
let settings = { let settings = {
color: "Dark", color: "Dark",
screen: "Full" screen: "Dynamic"
}; };
let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings; let saved_settings = storage.readJSON(SETTINGS_FILE, 1) || settings;
@ -83,6 +86,16 @@ var drawTimeout;
* HELPER * 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/ // Based on the great multi clock from https://github.com/jeffmer/BangleApps/
Graphics.prototype.drawPupils = function(cx, cy, r1, dx, dy, angle) { Graphics.prototype.drawPupils = function(cx, cy, r1, dx, dy, angle) {
angle = angle % 360; angle = angle % 360;
@ -175,7 +188,7 @@ let drawSmile = function(isLocked){
} }
let drawEyeBrow = function(){ let drawEyeBrow = function(){
if(settings.screen != "Full") return; if(!isFullscreen()) return;
g.setColor(colors.fg); g.setColor(colors.fg);
var w = 6; var w = 6;
@ -187,8 +200,8 @@ let drawEyeBrow = function(){
let drawWidgets = function(){ let drawWidgets = function(){
if (settings.screen == "Full") { if (isFullscreen()) {
require('widget_utils').hide(); widget_utils.hide();
} else { } else {
Bangle.drawWidgets(); Bangle.drawWidgets();
} }
@ -229,6 +242,15 @@ Bangle.on('lcdPower',on=>{
}); });
Bangle.on('lock', function(isLocked) { 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); draw(isLocked);
}); });

View File

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